From 2950be380e7ea5a3960d1c60fc7fcd544238b289 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 00:56:51 +0000 Subject: [PATCH 001/898] fix(deps): update dependency org.unifiedpush.android:connector to v3.1.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0610715fdc..360266f641 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -191,7 +191,7 @@ sqldelight-driver-jvm = { module = "app.cash.sqldelight:sqlite-driver", version. sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqlcipher = "net.zetetic:sqlcipher-android:4.10.0" sqlite = "androidx.sqlite:sqlite-ktx:2.6.1" -unifiedpush = "org.unifiedpush.android:connector:3.0.10" +unifiedpush = "org.unifiedpush.android:connector:3.1.0" vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" telephoto_zoomableimage = { module = "me.saket.telephoto:zoomable-image-coil", version.ref = "telephoto" } telephoto_flick = { module = "me.saket.telephoto:flick-android", version.ref = "telephoto" } From 261688da121e8ee5de1a46ba5abb243c924c7084 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 6 Oct 2025 22:39:33 +0200 Subject: [PATCH 002/898] Fix API break in tests. --- .../unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt index 5bb0a6731f..0215ff66ee 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt @@ -223,7 +223,9 @@ private fun aPushMessage( private fun aPushEndpoint( url: String = "anEndpoint", pubKeySet: PublicKeySet? = null, + temporary: Boolean = false, ) = PushEndpoint( url = url, pubKeySet = pubKeySet, + temporary = temporary, ) From f9ba0819f2f1ff6ee3745819f8db99f05b4bb063 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 15:36:06 +0200 Subject: [PATCH 003/898] Add Konsist test on Immutable annotation --- .../preview/AttachmentsPreviewEvents.kt | 3 --- .../impl/messagecomposer/MessageComposerEvents.kt | 3 +-- .../android/tests/konsist/KonsistImmutableTest.kt | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewEvents.kt index e679a43da7..9cdd52c97f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewEvents.kt @@ -7,9 +7,6 @@ package io.element.android.features.messages.impl.attachments.preview -import androidx.compose.runtime.Immutable - -@Immutable sealed interface AttachmentsPreviewEvents { data object SendAttachment : AttachmentsPreviewEvents data object CancelAndDismiss : AttachmentsPreviewEvents diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerEvents.kt index bcbd575c73..0832303075 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerEvents.kt @@ -8,12 +8,10 @@ package io.element.android.features.messages.impl.messagecomposer import android.net.Uri -import androidx.compose.runtime.Immutable import io.element.android.libraries.textcomposer.mentions.ResolvedSuggestion import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.textcomposer.model.Suggestion -@Immutable sealed interface MessageComposerEvents { data object ToggleFullScreenState : MessageComposerEvents data object SendMessage : MessageComposerEvents @@ -30,6 +28,7 @@ sealed interface MessageComposerEvents { data object Location : PickAttachmentSource data object Poll : PickAttachmentSource } + data class ToggleTextFormatting(val enabled: Boolean) : MessageComposerEvents data class Error(val error: Throwable) : MessageComposerEvents data class TypingNotice(val isTyping: Boolean) : MessageComposerEvents diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistImmutableTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistImmutableTest.kt index 0aa68503e5..c43a2ae741 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistImmutableTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistImmutableTest.kt @@ -7,8 +7,12 @@ package io.element.android.tests.konsist +import androidx.compose.runtime.Immutable import com.lemonappdev.konsist.api.Konsist +import com.lemonappdev.konsist.api.ext.list.withAnnotationOf +import com.lemonappdev.konsist.api.ext.list.withNameEndingWith import com.lemonappdev.konsist.api.ext.list.withoutName +import com.lemonappdev.konsist.api.verify.assertEmpty import com.lemonappdev.konsist.api.verify.assertFalse import org.junit.Test @@ -60,4 +64,14 @@ class KonsistImmutableTest { it.text.contains(".toPersistentMap()") } } + + @Test + fun `Immutable annotation is not used on sealed interface for Presenter Events`() { + Konsist + .scopeFromProduction() + .interfaces() + .withNameEndingWith("Events") + .withAnnotationOf(Immutable::class) + .assertEmpty() + } } From bc2b77d269a9c8d18d3eb5e4a45fec2aa240de75 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 16:33:42 +0200 Subject: [PATCH 004/898] Add a script to check stability of State classes tom script --- tools/compose/check_stability.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100755 tools/compose/check_stability.sh diff --git a/tools/compose/check_stability.sh b/tools/compose/check_stability.sh new file mode 100755 index 0000000000..c965c787cd --- /dev/null +++ b/tools/compose/check_stability.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# 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. + +set -e + +# Build the project with compose report +echo "Building the project with compose report..." +./gradlew assembleGplayDebug -PcomposeCompilerReports=true -PcomposeCompilerMetrics=true --stacktrace + +echo "Checking stability of State classes..." +# Using the find command, list all the files ending with -classes.txt +find . -type f -name "*-classes.txt" | while read -r file; do + # echo "Processing $file" + # Check that there is no line containing "unstable class .*State {" + if grep -E 'unstable class .*State \{' "$file"; then + echo "Found unstable State class in $file" + exit 1 + fi +done From 2109ad74b5332f4cae80e5531a8aad538f35e12b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 16:42:01 +0200 Subject: [PATCH 005/898] Add missing @Immutable annotation --- libraries/session-storage/api/build.gradle.kts | 2 +- .../android/libraries/sessionstorage/api/LoggedInState.kt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/session-storage/api/build.gradle.kts b/libraries/session-storage/api/build.gradle.kts index 5a03e913b4..c98e2b88df 100644 --- a/libraries/session-storage/api/build.gradle.kts +++ b/libraries/session-storage/api/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoggedInState.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoggedInState.kt index 71fdbe65e6..f4befd984f 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoggedInState.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/LoggedInState.kt @@ -7,6 +7,9 @@ package io.element.android.libraries.sessionstorage.api +import androidx.compose.runtime.Immutable + +@Immutable sealed interface LoggedInState { data object NotLoggedIn : LoggedInState data class LoggedIn( From e5781b280864d4702da90753a6b29de838dcfa0b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 16:45:36 +0200 Subject: [PATCH 006/898] Fix stability issue. --- .../android/features/home/impl/spaces/HomeSpacesPresenter.kt | 3 ++- .../android/features/home/impl/spaces/HomeSpacesState.kt | 3 ++- .../features/home/impl/spaces/HomeSpacesStateProvider.kt | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt index 8c3e2962ac..9486e6be62 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.ui.safety.rememberHideInvitesAvatar import kotlinx.collections.immutable.persistentSetOf +import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.flow.map @@ -39,7 +40,7 @@ class HomeSpacesPresenter( return HomeSpacesState( space = CurrentSpace.Root, - spaceRooms = spaceRooms, + spaceRooms = spaceRooms.toImmutableList(), seenSpaceInvites = seenSpaceInvites, hideInvitesAvatar = hideInvitesAvatar, eventSink = ::handleEvents, diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt index 96733991f9..a50f09e1db 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt @@ -9,11 +9,12 @@ package io.element.android.features.home.impl.spaces import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.spaces.SpaceRoom +import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableSet data class HomeSpacesState( val space: CurrentSpace, - val spaceRooms: List, + val spaceRooms: ImmutableList, val seenSpaceInvites: ImmutableSet, val hideInvitesAvatar: Boolean, val eventSink: (HomeSpacesEvents) -> Unit, diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt index 921c340886..301c46cb30 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.spaces.SpaceRoom import io.element.android.libraries.previewutils.room.aSpaceRoom +import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableSet open class HomeSpacesStateProvider : PreviewParameterProvider { @@ -39,7 +40,7 @@ internal fun aHomeSpacesState( eventSink: (HomeSpacesEvents) -> Unit = {}, ) = HomeSpacesState( space = space, - spaceRooms = spaceRooms, + spaceRooms = spaceRooms.toImmutableList(), seenSpaceInvites = seenSpaceInvites.toImmutableSet(), hideInvitesAvatar = hideInvitesAvatar, eventSink = eventSink, From 0f1ae41b411d63911a493ee15297ddf8cf426900 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 16:57:04 +0200 Subject: [PATCH 007/898] Fix instability of Uri --- .../features/createroom/impl/configureroom/CreateRoomConfig.kt | 3 +++ .../preferences/impl/user/editprofile/EditUserProfileState.kt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt index 9ec71f5b76..f157dda2d5 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt @@ -8,10 +8,13 @@ package io.element.android.features.createroom.impl.configureroom import android.net.Uri +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf +// Annotate with @Immutable since `Uri` is unstable +@Immutable data class CreateRoomConfig( val roomName: String? = null, val topic: String? = null, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt index 5d3bd1baee..a2d5d7a653 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt @@ -8,12 +8,15 @@ package io.element.android.features.preferences.impl.user.editprofile import android.net.Uri +import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.permissions.api.PermissionsState import kotlinx.collections.immutable.ImmutableList +// Annotate with @Immutable since `Uri` is unstable +@Immutable data class EditUserProfileState( val userId: UserId, val displayName: String, From f6eed2105583d15682eebaba1b1355ccd6ddbb4f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:00:54 +0200 Subject: [PATCH 008/898] Make AboutState stable --- .../android/features/preferences/impl/about/AboutState.kt | 4 +++- .../features/preferences/impl/about/AboutStateProvider.kt | 3 ++- .../android/features/preferences/impl/about/ElementLegal.kt | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutState.kt index 2c46bf2419..563699b965 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutState.kt @@ -7,6 +7,8 @@ package io.element.android.features.preferences.impl.about +import kotlinx.collections.immutable.ImmutableList + data class AboutState( - val elementLegals: List, + val elementLegals: ImmutableList, ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutStateProvider.kt index 6d6a4813df..34cbd0b54e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutStateProvider.kt @@ -8,6 +8,7 @@ package io.element.android.features.preferences.impl.about import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import kotlinx.collections.immutable.toImmutableList open class AboutStateProvider : PreviewParameterProvider { override val values: Sequence @@ -19,5 +20,5 @@ open class AboutStateProvider : PreviewParameterProvider { fun anAboutState( elementLegals: List = getAllLegals(), ) = AboutState( - elementLegals = elementLegals, + elementLegals = elementLegals.toImmutableList(), ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/ElementLegal.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/ElementLegal.kt index a5de31f05d..d9aa7aea65 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/ElementLegal.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/ElementLegal.kt @@ -10,6 +10,8 @@ package io.element.android.features.preferences.impl.about import androidx.annotation.StringRes import io.element.android.features.preferences.impl.BuildConfig import io.element.android.libraries.ui.strings.CommonStrings +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf private const val COPYRIGHT_URL = BuildConfig.URL_COPYRIGHT private const val USE_POLICY_URL = BuildConfig.URL_ACCEPTABLE_USE @@ -24,8 +26,8 @@ sealed class ElementLegal( data object PrivacyPolicy : ElementLegal(CommonStrings.common_privacy_policy, PRIVACY_URL) } -fun getAllLegals(): List { - return listOf( +fun getAllLegals(): ImmutableList { + return persistentListOf( ElementLegal.Copyright, ElementLegal.AcceptableUsePolicy, ElementLegal.PrivacyPolicy, From 1e6f87347795f3844885d3189ffe78496373698b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:12:47 +0200 Subject: [PATCH 009/898] Make EmojiPickerState stable --- .../components/customreaction/picker/EmojiPickerState.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerState.kt index 595349a503..04801a7ee6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerState.kt @@ -8,11 +8,14 @@ package io.element.android.features.messages.impl.timeline.components.customreaction.picker import androidx.annotation.StringRes +import androidx.compose.runtime.Immutable import io.element.android.emojibasebindings.Emoji import io.element.android.libraries.designsystem.theme.components.IconSource import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import kotlinx.collections.immutable.ImmutableList +// Emoji is unstable (because from an external library?), so we annotate with @Immutable +@Immutable data class EmojiPickerState( val categories: ImmutableList, val allEmojis: ImmutableList, From 1e847eaa9f72e63a87dfe302e4c7e3b227019cdf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:14:23 +0200 Subject: [PATCH 010/898] Make LeaveRoomState stable --- .../element/android/features/leaveroom/api/LeaveRoomState.kt | 3 +++ 1 file changed, 3 insertions(+) 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 28cee237a1..7b798018e3 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,6 +7,9 @@ package io.element.android.features.leaveroom.api +import androidx.compose.runtime.Immutable + +@Immutable interface LeaveRoomState { val eventSink: (LeaveRoomEvent) -> Unit } From babe4d7ed050fe9ff1fcec51bfb723895dde9c9f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:15:32 +0200 Subject: [PATCH 011/898] Fix instability of Uri --- .../features/roomdetails/impl/edit/RoomDetailsEditState.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt index f01011376c..d9a51e8e06 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt @@ -8,12 +8,15 @@ package io.element.android.features.roomdetails.impl.edit import android.net.Uri +import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.permissions.api.PermissionsState import kotlinx.collections.immutable.ImmutableList +// Annotate with @Immutable since `Uri` is unstable +@Immutable data class RoomDetailsEditState( val roomId: RoomId, /** The raw room name (i.e. the room name from the state event `m.room.name`), not the display name. */ From 49fd981157b9722862ee36b59492c10051227524 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:16:25 +0200 Subject: [PATCH 012/898] Make RoomMemberModerationState stable --- .../roommembermoderation/api/RoomMemberModerationState.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationState.kt b/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationState.kt index 368aa283ad..a5589f933a 100644 --- a/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationState.kt +++ b/features/roommembermoderation/api/src/main/kotlin/io/element/android/features/roommembermoderation/api/RoomMemberModerationState.kt @@ -7,6 +7,9 @@ package io.element.android.features.roommembermoderation.api +import androidx.compose.runtime.Immutable + +@Immutable interface RoomMemberModerationState { val canKick: Boolean val canBan: Boolean From 89879497043fdd0bf63646795ed19c8962db2dfc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:20:16 +0200 Subject: [PATCH 013/898] Make ChangeAccountProviderState stable --- .../changeaccountprovider/ChangeAccountProviderPresenter.kt | 2 ++ .../changeaccountprovider/ChangeAccountProviderState.kt | 3 ++- .../ChangeAccountProviderStateProvider.kt | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt index 3c725106c8..8e6a3ef0ba 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt @@ -17,6 +17,7 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.uri.ensureProtocol +import kotlinx.collections.immutable.toImmutableList @Inject class ChangeAccountProviderPresenter( @@ -39,6 +40,7 @@ class ChangeAccountProviderPresenter( isValid = true, ) } + .toImmutableList() } val canSearchForAccountProviders = remember { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt index e8e1f21cd8..f6f62eca01 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt @@ -9,10 +9,11 @@ package io.element.android.features.login.impl.screens.changeaccountprovider import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.changeserver.ChangeServerState +import kotlinx.collections.immutable.ImmutableList // Do not use default value, so no member get forgotten in the presenters. data class ChangeAccountProviderState( - val accountProviders: List, + val accountProviders: ImmutableList, val canSearchForAccountProviders: Boolean, val changeServerState: ChangeServerState, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt index 435eee7f89..cfc7be0973 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderStateProvider.kt @@ -12,6 +12,7 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.anAccountProvider import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.features.login.impl.changeserver.aChangeServerState +import kotlinx.collections.immutable.toImmutableList open class ChangeAccountProviderStateProvider : PreviewParameterProvider { override val values: Sequence @@ -29,7 +30,7 @@ fun aChangeAccountProviderState( canSearchForAccountProviders: Boolean = true, changeServerState: ChangeServerState = aChangeServerState(), ) = ChangeAccountProviderState( - accountProviders = accountProviders, + accountProviders = accountProviders.toImmutableList(), canSearchForAccountProviders = canSearchForAccountProviders, changeServerState = changeServerState, ) From 417918feed59d44741fd15574f8d4bdde6d27109 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:21:42 +0200 Subject: [PATCH 014/898] Make NotificationTroubleshootTestState.Status stable --- .../troubleshoot/api/test/NotificationTroubleshootTestState.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootTestState.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootTestState.kt index 4069d78cb3..4a09a3cfd6 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootTestState.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootTestState.kt @@ -7,11 +7,14 @@ package io.element.android.libraries.troubleshoot.api.test +import androidx.compose.runtime.Immutable + data class NotificationTroubleshootTestState( val name: String, val description: String, val status: Status, ) { + @Immutable sealed interface Status { data class Idle(val visible: Boolean) : Status data object InProgress : Status From c5848426111ed08a2722f812fe67c60ab6aeac33 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:25:25 +0200 Subject: [PATCH 015/898] Make LeaveSpaceState stable --- .../features/space/impl/leave/LeaveSpaceState.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt index 0f2a0f93f6..0f0cf143b1 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt @@ -10,6 +10,7 @@ package io.element.android.features.space.impl.leave import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList data class LeaveSpaceState( val spaceName: String?, @@ -18,10 +19,15 @@ data class LeaveSpaceState( val leaveSpaceAction: AsyncAction, val eventSink: (LeaveSpaceEvents) -> Unit, ) { - private val rooms = selectableSpaceRooms.dataOrNull().orEmpty() - private val partition = rooms.partition { it.isLastAdmin } - private val lastAdminRooms = partition.first - private val selectableRooms = partition.second + private val rooms = selectableSpaceRooms.dataOrNull().orEmpty().toImmutableList() + private val lastAdminRooms: ImmutableList + private val selectableRooms: ImmutableList + + init { + val partition = rooms.partition { it.isLastAdmin } + lastAdminRooms = partition.first.toImmutableList() + selectableRooms = partition.second.toImmutableList() + } /** * True if we should show the quick action to select/deselect all rooms. From 8f703c2aa7d21e26aa066f818c8af3b9f455f9ac Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:31:11 +0200 Subject: [PATCH 016/898] Rename RoomDirectoryList.State to RoomDirectoryList.SearchResult to avoid this class to be checked for stability. --- .../roomdirectory/impl/root/RoomDirectoryPresenterTest.kt | 8 ++++---- .../matrix/api/roomdirectory/RoomDirectoryList.kt | 4 ++-- .../matrix/impl/roomdirectory/RustRoomDirectoryList.kt | 4 ++-- .../impl/roomdirectory/RustBaseRoomDirectoryListTest.kt | 6 +++--- .../matrix/test/roomdirectory/FakeRoomDirectoryList.kt | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt index 4af983b307..1e450297ae 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt @@ -42,14 +42,14 @@ class RoomDirectoryPresenterTest { @Test fun `present - room directory list emits empty state`() = runTest { - val directoryListStateFlow = MutableSharedFlow(replay = 1) + val directoryListStateFlow = MutableSharedFlow(replay = 1) val roomDirectoryList = FakeRoomDirectoryList(directoryListStateFlow) val roomDirectoryService = FakeRoomDirectoryService { roomDirectoryList } val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService) presenter.test { skipItems(1) directoryListStateFlow.emit( - RoomDirectoryList.State(false, emptyList()) + RoomDirectoryList.SearchResult(false, emptyList()) ) awaitItem().also { state -> assertThat(state.displayEmptyState).isTrue() @@ -60,14 +60,14 @@ class RoomDirectoryPresenterTest { @Test fun `present - room directory list emits non-empty state`() = runTest { - val directoryListStateFlow = MutableSharedFlow(replay = 1) + val directoryListStateFlow = MutableSharedFlow(replay = 1) val roomDirectoryList = FakeRoomDirectoryList(directoryListStateFlow) val roomDirectoryService = FakeRoomDirectoryService { roomDirectoryList } val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService) presenter.test { skipItems(1) directoryListStateFlow.emit( - RoomDirectoryList.State( + RoomDirectoryList.SearchResult( hasMoreToLoad = true, items = listOf(aRoomDescription()) ) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomdirectory/RoomDirectoryList.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomdirectory/RoomDirectoryList.kt index 402a60f639..b9d82128fb 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomdirectory/RoomDirectoryList.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomdirectory/RoomDirectoryList.kt @@ -26,9 +26,9 @@ interface RoomDirectoryList { /** * The current search results as a state flow. */ - val state: Flow + val state: Flow - data class State( + data class SearchResult( val hasMoreToLoad: Boolean, val items: List, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustRoomDirectoryList.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustRoomDirectoryList.kt index e91fef7810..4de2943673 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustRoomDirectoryList.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustRoomDirectoryList.kt @@ -73,9 +73,9 @@ class RustRoomDirectoryList( return !inner.isAtLastPage() } - override val state: Flow = + override val state: Flow = combine(hasMoreToLoad, processor.roomDescriptionsFlow) { hasMoreToLoad, items -> - RoomDirectoryList.State( + RoomDirectoryList.SearchResult( hasMoreToLoad = hasMoreToLoad, items = items ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt index 460ef37e99..89b16e6ff5 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt @@ -42,7 +42,7 @@ class RustBaseRoomDirectoryListTest { ) val initialItem = awaitItem() assertThat(initialItem).isEqualTo( - RoomDirectoryList.State( + RoomDirectoryList.SearchResult( hasMoreToLoad = true, items = listOf(mapper.map(aRustRoomDescription())) ) @@ -57,7 +57,7 @@ class RustBaseRoomDirectoryListTest { ) val nextItem = awaitItem() assertThat(nextItem).isEqualTo( - RoomDirectoryList.State( + RoomDirectoryList.SearchResult( hasMoreToLoad = false, items = listOf( mapper.map(aRustRoomDescription()), @@ -66,7 +66,7 @@ class RustBaseRoomDirectoryListTest { ) val finalItem = awaitItem() assertThat(finalItem).isEqualTo( - RoomDirectoryList.State( + RoomDirectoryList.SearchResult( hasMoreToLoad = false, items = listOf( mapper.map(aRustRoomDescription()), diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomdirectory/FakeRoomDirectoryList.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomdirectory/FakeRoomDirectoryList.kt index 33c8bc83b5..54ad389e4c 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomdirectory/FakeRoomDirectoryList.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/roomdirectory/FakeRoomDirectoryList.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.emptyFlow class FakeRoomDirectoryList( - override val state: Flow = emptyFlow(), + override val state: Flow = emptyFlow(), val filterLambda: (String?, Int, String?) -> Result = { _, _, _ -> Result.success(Unit) }, val loadMoreLambda: () -> Result = { Result.success(Unit) } ) : RoomDirectoryList { From 2c7f9230f0fecb838cdc9fc9d82e28f7d35e8c04 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:36:06 +0200 Subject: [PATCH 017/898] Need to be a compose library for PushHistoryItem to be considered stable. --- libraries/push/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/push/api/build.gradle.kts b/libraries/push/api/build.gradle.kts index 48df34053a..0db811e299 100644 --- a/libraries/push/api/build.gradle.kts +++ b/libraries/push/api/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { From 27557fc2b24ed3e42d126aee3e0f3796de870e3c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:37:09 +0200 Subject: [PATCH 018/898] Need to be a compose library for UserProfileState to be considered stable. --- features/userprofile/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/userprofile/api/build.gradle.kts b/features/userprofile/api/build.gradle.kts index 8bdaa8d77e..dd18ebd09e 100644 --- a/features/userprofile/api/build.gradle.kts +++ b/features/userprofile/api/build.gradle.kts @@ -6,7 +6,7 @@ */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") id("kotlin-parcelize") } From 589954203b2720cddfca933a36f651065baa4653 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:39:01 +0200 Subject: [PATCH 019/898] Make Role stable --- .../io/element/android/libraries/matrix/api/room/RoomMember.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt index f1b1104a27..4f57703f60 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.matrix.api.room +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser @@ -24,6 +25,7 @@ data class RoomMember( /** * Role of the RoomMember, based on its [powerLevel]. */ + @Immutable sealed interface Role { data class Owner(val isCreator: Boolean) : Role data object Admin : Role From c33815ccd3f5998f0d229ba1492a01df43d5dcf1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:41:37 +0200 Subject: [PATCH 020/898] Need to be a compose library for NotificationTroubleshootTestState to be considered stable. --- libraries/troubleshoot/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/troubleshoot/api/build.gradle.kts b/libraries/troubleshoot/api/build.gradle.kts index 6ce2d3e9f8..9748511d3c 100644 --- a/libraries/troubleshoot/api/build.gradle.kts +++ b/libraries/troubleshoot/api/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { From 403a58d7a7c5b71b110f1f282826f81c40ee62e8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:46:02 +0200 Subject: [PATCH 021/898] Make ChooseAccountProviderState stable --- .../chooseaccountprovider/ChooseAccountProviderPresenter.kt | 2 ++ .../chooseaccountprovider/ChooseAccountProviderState.kt | 3 ++- .../ChooseAccountProviderStateProvider.kt | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt index d259454f18..73f03ba7c8 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt @@ -21,6 +21,7 @@ import io.element.android.features.login.impl.login.LoginHelper import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.uri.ensureProtocol +import kotlinx.collections.immutable.toImmutableList @Inject class ChooseAccountProviderPresenter( @@ -69,6 +70,7 @@ class ChooseAccountProviderPresenter( isValid = true, ) } + .toImmutableList() } return ChooseAccountProviderState( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt index 3591334047..ad4677ea24 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt @@ -10,10 +10,11 @@ package io.element.android.features.login.impl.screens.chooseaccountprovider import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.login.LoginMode import io.element.android.libraries.architecture.AsyncData +import kotlinx.collections.immutable.ImmutableList // Do not use default value, so no member get forgotten in the presenters. data class ChooseAccountProviderState( - val accountProviders: List, + val accountProviders: ImmutableList, val selectedAccountProvider: AccountProvider?, val loginMode: AsyncData, val eventSink: (ChooseAccountProviderEvents) -> Unit, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt index b921fee330..8dc059285e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderStateProvider.kt @@ -12,6 +12,7 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.anAccountProvider import io.element.android.features.login.impl.login.LoginMode import io.element.android.libraries.architecture.AsyncData +import kotlinx.collections.immutable.toImmutableList open class ChooseAccountProviderStateProvider : PreviewParameterProvider { private val server1 = anAccountProvider( @@ -70,7 +71,7 @@ fun aChooseAccountProviderState( loginMode: AsyncData = AsyncData.Uninitialized, eventSink: (ChooseAccountProviderEvents) -> Unit = {}, ) = ChooseAccountProviderState( - accountProviders = accountProviders, + accountProviders = accountProviders.toImmutableList(), selectedAccountProvider = selectedAccountProvider, loginMode = loginMode, eventSink = eventSink, From 5e7437e82759e7bdc1a042b18511955057c222b8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 17:49:49 +0200 Subject: [PATCH 022/898] Rename SavedState to SavedValue to avoid this class to be checked for stability. --- .../textcomposer/model/MarkdownTextEditorState.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt index 14f56f3bbb..918550f5a6 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/MarkdownTextEditorState.kt @@ -128,15 +128,15 @@ class MarkdownTextEditorState( } @Parcelize - data class SavedState( + data class SavedValue( val text: CharSequence, val selectionStart: Int, val selectionEnd: Int, ) : Parcelable } -object MarkdownTextEditorStateSaver : Saver { - override fun restore(value: MarkdownTextEditorState.SavedState): MarkdownTextEditorState { +object MarkdownTextEditorStateSaver : Saver { + override fun restore(value: MarkdownTextEditorState.SavedValue): MarkdownTextEditorState { return MarkdownTextEditorState( initialText = "", initialFocus = false, @@ -146,8 +146,8 @@ object MarkdownTextEditorStateSaver : Saver Date: Thu, 9 Oct 2025 18:03:32 +0200 Subject: [PATCH 023/898] Remove useless Immutable annotation --- .../main/kotlin/io/element/android/appnav/root/RootState.kt | 2 -- .../kotlin/io/element/android/features/home/impl/HomeState.kt | 2 -- .../android/features/home/impl/roomlist/RoomListState.kt | 1 - .../io/element/android/features/joinroom/impl/JoinRoomState.kt | 1 - .../features/knockrequests/impl/list/KnockRequestsListState.kt | 2 -- .../io/element/android/features/messages/impl/MessagesState.kt | 2 -- .../features/messages/impl/actionlist/ActionListState.kt | 1 - .../messages/impl/actionlist/model/TimelineItemAction.kt | 2 -- .../android/features/messages/impl/timeline/TimelineState.kt | 2 -- .../receipt/bottomsheet/ReadReceiptBottomSheetState.kt | 2 -- .../messages/impl/timeline/model/AggregatedReactionSender.kt | 2 -- .../features/messages/impl/timeline/model/TimelineItem.kt | 3 --- .../impl/notifications/NotificationSettingsState.kt | 2 -- .../features/rageshake/api/crash/CrashDetectionState.kt | 3 --- .../rageshake/api/detection/RageshakeDetectionState.kt | 2 -- .../features/roomaliasresolver/impl/RoomAliasResolverState.kt | 2 -- .../android/features/roomdirectory/api/RoomDescription.kt | 2 -- .../verifysession/impl/incoming/IncomingVerificationState.kt | 2 -- .../verifysession/impl/outgoing/OutgoingVerificationState.kt | 2 -- .../android/compound/tokens/generated/SemanticColors.kt | 1 - .../libraries/designsystem/components/avatar/AvatarData.kt | 2 -- .../io/element/android/libraries/matrix/api/room/RoomInfo.kt | 2 -- .../libraries/matrix/api/timeline/item/event/EventReaction.kt | 2 -- .../android/libraries/matrix/impl/room/NotJoinedRustRoom.kt | 2 -- .../android/libraries/matrix/test/room/FakeNotJoinedRoom.kt | 2 -- .../element/android/libraries/matrix/ui/model/InviteSender.kt | 2 -- 26 files changed, 50 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/root/RootState.kt b/appnav/src/main/kotlin/io/element/android/appnav/root/RootState.kt index 3ea7362efa..154f7f0dc9 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/root/RootState.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/root/RootState.kt @@ -7,12 +7,10 @@ package io.element.android.appnav.root -import androidx.compose.runtime.Immutable import io.element.android.features.rageshake.api.crash.CrashDetectionState import io.element.android.features.rageshake.api.detection.RageshakeDetectionState import io.element.android.services.apperror.api.AppErrorState -@Immutable data class RootState( val rageshakeDetectionState: RageshakeDetectionState, val crashDetectionState: CrashDetectionState, diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt index d35412734f..fdaf01e9aa 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt @@ -7,7 +7,6 @@ package io.element.android.features.home.impl -import androidx.compose.runtime.Immutable import io.element.android.features.home.impl.roomlist.RoomListState import io.element.android.features.home.impl.spaces.HomeSpacesState import io.element.android.features.logout.api.direct.DirectLogoutState @@ -15,7 +14,6 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList -@Immutable data class HomeState( /** * The current user of this session, in case of multiple accounts, will contains 3 items, with the diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt index 80cd6394e8..8f574443c4 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt @@ -19,7 +19,6 @@ import io.element.android.libraries.push.api.battery.BatteryOptimizationState import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableSet -@Immutable data class RoomListState( val contextMenu: ContextMenu, val declineInviteMenu: DeclineInviteMenu, diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt index f27a290f5d..f6dc5c36af 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt @@ -24,7 +24,6 @@ import kotlinx.collections.immutable.ImmutableList internal const val MAX_KNOCK_MESSAGE_LENGTH = 500 -@Immutable data class JoinRoomState( val roomIdOrAlias: RoomIdOrAlias, val contentState: ContentState, diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt index 1042a3646f..5788dbed2a 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt @@ -7,7 +7,6 @@ package io.element.android.features.knockrequests.impl.list -import androidx.compose.runtime.Immutable import io.element.android.features.knockrequests.impl.data.KnockRequestPermissions import io.element.android.features.knockrequests.impl.data.KnockRequestPresentable import io.element.android.libraries.architecture.AsyncAction @@ -24,7 +23,6 @@ data class KnockRequestsListState( val canAcceptAll = permissions.canAccept && knockRequests is AsyncData.Success && knockRequests.data.size > 1 } -@Immutable sealed interface KnockRequestsAction { data object None : KnockRequestsAction data class Accept(val knockRequest: KnockRequestPresentable) : KnockRequestsAction diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt index 3d05da5a3c..b92a0fc9d1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt @@ -7,7 +7,6 @@ package io.element.android.features.messages.impl -import androidx.compose.runtime.Immutable import io.element.android.features.messages.api.timeline.voicemessages.composer.VoiceMessageComposerState import io.element.android.features.messages.impl.actionlist.ActionListState import io.element.android.features.messages.impl.crypto.identity.IdentityChangeState @@ -29,7 +28,6 @@ import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import io.element.android.libraries.matrix.api.room.tombstone.SuccessorRoom import kotlinx.collections.immutable.ImmutableList -@Immutable data class MessagesState( val roomId: RoomId, val roomName: String?, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListState.kt index 7524a737ff..490ece9c4b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListState.kt @@ -13,7 +13,6 @@ import io.element.android.features.messages.impl.crypto.sendfailure.VerifiedUser import io.element.android.features.messages.impl.timeline.model.TimelineItem import kotlinx.collections.immutable.ImmutableList -@Immutable data class ActionListState( val target: Target, val eventSink: (ActionListEvents) -> Unit, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt index ab02e6caea..04696ae787 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt @@ -9,11 +9,9 @@ package io.element.android.features.messages.impl.actionlist.model import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import androidx.compose.runtime.Immutable import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.ui.strings.CommonStrings -@Immutable enum class TimelineItemAction( @StringRes val titleRes: Int, @DrawableRes val icon: Int, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt index bd1c58c9d7..d0fed3aef4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt @@ -21,7 +21,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield import kotlinx.collections.immutable.ImmutableList import kotlin.time.Duration -@Immutable data class TimelineState( val timelineItems: ImmutableList, val timelineRoomInfo: TimelineRoomInfo, @@ -72,7 +71,6 @@ sealed interface FocusRequestState { } } -@Immutable data class TimelineRoomInfo( val isDm: Boolean, val name: String?, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetState.kt index c143887584..1de3d23f50 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetState.kt @@ -7,10 +7,8 @@ package io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet -import androidx.compose.runtime.Immutable import io.element.android.features.messages.impl.timeline.model.TimelineItem -@Immutable data class ReadReceiptBottomSheetState( val selectedEvent: TimelineItem.Event?, val eventSink: (ReadReceiptBottomSheetEvents) -> Unit, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt index 9da9781bc8..6dc77b545f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt @@ -7,12 +7,10 @@ package io.element.android.features.messages.impl.timeline.model -import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser import java.util.Date -@Immutable data class AggregatedReactionSender( val senderId: UserId, val timestamp: Date, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt index 5591616517..6749d9cf99 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/TimelineItem.kt @@ -57,13 +57,11 @@ sealed interface TimelineItem { is GroupedEvents -> "groupedEvent" } - @Immutable data class Virtual( val id: UniqueId, val model: TimelineItemVirtualModel ) : TimelineItem - @Immutable data class Event( val id: UniqueId, // Note: eventId can be null when the event is a local echo @@ -124,7 +122,6 @@ sealed interface TimelineItem { val sendhandle: SendHandle? get() = sendHandleProvider() } - @Immutable data class GroupedEvents( val id: UniqueId, val events: ImmutableList, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt index a7a1bf9192..6e60b24115 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsState.kt @@ -7,7 +7,6 @@ package io.element.android.features.preferences.impl.notifications -import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState @@ -15,7 +14,6 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.pushproviders.api.Distributor import kotlinx.collections.immutable.ImmutableList -@Immutable data class NotificationSettingsState( val matrixSettings: MatrixSettings, val appSettings: AppSettings, diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionState.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionState.kt index 66c206adcd..4ad69316ab 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionState.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/crash/CrashDetectionState.kt @@ -7,9 +7,6 @@ package io.element.android.features.rageshake.api.crash -import androidx.compose.runtime.Immutable - -@Immutable data class CrashDetectionState( val appName: String, val crashDetected: Boolean, diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionState.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionState.kt index 8ace909da3..af52a70dde 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionState.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/detection/RageshakeDetectionState.kt @@ -7,10 +7,8 @@ package io.element.android.features.rageshake.api.detection -import androidx.compose.runtime.Immutable import io.element.android.features.rageshake.api.preferences.RageshakePreferencesState -@Immutable data class RageshakeDetectionState( val takeScreenshot: Boolean, val showDialog: Boolean, diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverState.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverState.kt index dc858621f7..e52c093e52 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverState.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverState.kt @@ -7,12 +7,10 @@ package io.element.android.features.roomaliasresolver.impl -import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias -@Immutable data class RoomAliasResolverState( val roomAlias: RoomAlias, val resolveState: AsyncData, diff --git a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDescription.kt b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDescription.kt index 7d479cbad9..a48a38ccb2 100644 --- a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDescription.kt +++ b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDescription.kt @@ -8,7 +8,6 @@ package io.element.android.features.roomdirectory.api import android.os.Parcelable -import androidx.compose.runtime.Immutable import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.core.RoomAlias @@ -17,7 +16,6 @@ import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize @Parcelize -@Immutable data class RoomDescription( val roomId: RoomId, val name: String?, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationState.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationState.kt index 00bffa4ce3..3c6822d19d 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationState.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationState.kt @@ -7,13 +7,11 @@ package io.element.android.features.verifysession.impl.incoming -import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationRequest -@Immutable data class IncomingVerificationState( val step: Step, val request: VerificationRequest.Incoming, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationState.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationState.kt index 9b2d5f2e40..9946c2f2bd 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationState.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationState.kt @@ -7,13 +7,11 @@ package io.element.android.features.verifysession.impl.outgoing -import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationRequest -@Immutable data class OutgoingVerificationState( val step: Step, val request: VerificationRequest.Outgoing, diff --git a/libraries/compound/src/main/kotlin/io/element/android/compound/tokens/generated/SemanticColors.kt b/libraries/compound/src/main/kotlin/io/element/android/compound/tokens/generated/SemanticColors.kt index 8da51213f8..01adfd4eaa 100644 --- a/libraries/compound/src/main/kotlin/io/element/android/compound/tokens/generated/SemanticColors.kt +++ b/libraries/compound/src/main/kotlin/io/element/android/compound/tokens/generated/SemanticColors.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.graphics.Color /** * This class holds all the semantic tokens of the Compound theme. */ -@Immutable data class SemanticColors( /** Background colour for accent or brand actions. State: Hover */ val bgAccentHovered: Color, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt index 2e711ee6eb..b6dcdec206 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarData.kt @@ -7,11 +7,9 @@ package io.element.android.libraries.designsystem.components.avatar -import androidx.compose.runtime.Immutable import io.element.android.libraries.core.data.tryOrNull import java.text.BreakIterator -@Immutable data class AvatarData( val id: String, val name: String?, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt index 48e549ab3f..21165ae6d7 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomInfo.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.api.room -import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId @@ -19,7 +18,6 @@ import io.element.android.libraries.matrix.api.room.tombstone.SuccessorRoom import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList -@Immutable data class RoomInfo( val id: RoomId, /** The room's name from the room state event if received from sync, or one that's been computed otherwise. */ diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventReaction.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventReaction.kt index ee304957b2..bc92aeaa9f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventReaction.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventReaction.kt @@ -7,10 +7,8 @@ package io.element.android.libraries.matrix.api.timeline.item.event -import androidx.compose.runtime.Immutable import kotlinx.collections.immutable.ImmutableList -@Immutable data class EventReaction( val key: String, val senders: ImmutableList diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/NotJoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/NotJoinedRustRoom.kt index fb88cf625b..a9218ac001 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/NotJoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/NotJoinedRustRoom.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.impl.room -import androidx.compose.runtime.Immutable import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.room.NotJoinedRoom @@ -15,7 +14,6 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipDetails import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper -@Immutable class NotJoinedRustRoom( private val sessionId: SessionId, override val localRoom: RustBaseRoom?, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeNotJoinedRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeNotJoinedRoom.kt index 7691aa58c6..69d29c3a2d 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeNotJoinedRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeNotJoinedRoom.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.test.room -import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.NotJoinedRoom import io.element.android.libraries.matrix.api.room.RoomMembershipDetails @@ -15,7 +14,6 @@ import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.simulateLongTask -@Immutable class FakeNotJoinedRoom( override val localRoom: BaseRoom? = null, override val previewInfo: RoomPreviewInfo = aRoomPreviewInfo(), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt index 778d535fc6..b89fb0143b 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/model/InviteSender.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.ui.model import androidx.compose.runtime.Composable -import androidx.compose.runtime.Immutable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString @@ -21,7 +20,6 @@ import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.ui.R -@Immutable data class InviteSender( val userId: UserId, val displayName: String, From 733a33f4ea01a65dc5fbefa0b386156c01895439 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:03:59 +0200 Subject: [PATCH 024/898] Need to be a compose library for FullScreenIntentPermissionsState to be considered stable. --- libraries/fullscreenintent/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fullscreenintent/api/build.gradle.kts b/libraries/fullscreenintent/api/build.gradle.kts index 4bd0a50cb7..d1a1323198 100644 --- a/libraries/fullscreenintent/api/build.gradle.kts +++ b/libraries/fullscreenintent/api/build.gradle.kts @@ -6,7 +6,7 @@ */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { From f0cfe6a777130a27c8d2fcd7f40f1634d8328352 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:04:31 +0200 Subject: [PATCH 025/898] Need to be a compose library for RoomDescription to be considered stable. --- features/roomdirectory/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/roomdirectory/api/build.gradle.kts b/features/roomdirectory/api/build.gradle.kts index ee27b5b21a..b7d3c9df51 100644 --- a/features/roomdirectory/api/build.gradle.kts +++ b/features/roomdirectory/api/build.gradle.kts @@ -6,7 +6,7 @@ */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") id("kotlin-parcelize") } From 2d9b0349405343290134b402255d7d55d8e1dd22 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:05:43 +0200 Subject: [PATCH 026/898] Make Outgoing stable --- .../libraries/matrix/api/verification/VerificationRequest.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt index f26afe50f6..7c1a0cbd2e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt @@ -8,10 +8,12 @@ package io.element.android.libraries.matrix.api.verification import android.os.Parcelable +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import kotlinx.parcelize.Parcelize sealed interface VerificationRequest : Parcelable { + @Immutable sealed interface Outgoing : VerificationRequest { @Parcelize data object CurrentSession : Outgoing From 47e664e5d17b7b0e21cf1451819006e8b8286bbe Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:07:35 +0200 Subject: [PATCH 027/898] Make TimelineRoomInfo stable --- .../messages/impl/pinned/list/PinnedMessagesListPresenter.kt | 2 +- .../android/features/messages/impl/timeline/TimelineState.kt | 2 +- .../features/messages/impl/timeline/TimelineStateProvider.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt index 0c7fb8948a..50652bb6e5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt @@ -105,7 +105,7 @@ class PinnedMessagesListPresenter( // We do not care about the call state here. roomCallState = aStandByCallState(), // don't compute this value or the pin icon will be shown - pinnedEventIds = emptyList(), + pinnedEventIds = persistentListOf(), typingNotificationState = TypingNotificationState( renderTypingNotifications = false, typingMembers = persistentListOf(), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt index d0fed3aef4..76899de1c3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt @@ -77,7 +77,7 @@ data class TimelineRoomInfo( val userHasPermissionToSendMessage: Boolean, val userHasPermissionToSendReaction: Boolean, val roomCallState: RoomCallState, - val pinnedEventIds: List, + val pinnedEventIds: ImmutableList, val typingNotificationState: TypingNotificationState, val predecessorRoom: PredecessorRoom?, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index 0cc61b4e4c..bcd32cf9f6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -259,7 +259,7 @@ internal fun aTimelineRoomInfo( userHasPermissionToSendMessage = userHasPermissionToSendMessage, userHasPermissionToSendReaction = true, roomCallState = aStandByCallState(), - pinnedEventIds = pinnedEventIds, + pinnedEventIds = pinnedEventIds.toImmutableList(), typingNotificationState = typingNotificationState, predecessorRoom = predecessorRoom, ) From 146c5d4adc74db60950c1c61cfae97530068f11d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:10:03 +0200 Subject: [PATCH 028/898] Need to be a compose library for Distributor to be considered stable. --- libraries/pushproviders/api/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/pushproviders/api/build.gradle.kts b/libraries/pushproviders/api/build.gradle.kts index 587b38f617..1758588f8a 100644 --- a/libraries/pushproviders/api/build.gradle.kts +++ b/libraries/pushproviders/api/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { From 264cf9e1b35b53ef7d7582f82637100f9319cbbf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:14:20 +0200 Subject: [PATCH 029/898] Make VerificationRequest stable --- .../libraries/matrix/api/verification/VerificationRequest.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt index 7c1a0cbd2e..1690df7a6b 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationRequest.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import kotlinx.parcelize.Parcelize +@Immutable sealed interface VerificationRequest : Parcelable { @Immutable sealed interface Outgoing : VerificationRequest { From d932e068d421a86ae7368736c63a25b0b8192a13 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:16:17 +0200 Subject: [PATCH 030/898] Make AggregatedReactionSender stable --- .../messages/impl/timeline/model/AggregatedReactionSender.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt index 6dc77b545f..cce557d0ec 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt @@ -7,10 +7,13 @@ package io.element.android.features.messages.impl.timeline.model +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser import java.util.Date +// Need to be marked as @Immutable for Date +@Immutable data class AggregatedReactionSender( val senderId: UserId, val timestamp: Date, From 245509cd88fc1d49a26eee07373b263ee291976d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:18:05 +0200 Subject: [PATCH 031/898] Make Timeline.Mode stable --- .../element/android/libraries/matrix/api/timeline/Timeline.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt index f8f5793368..ad526fa787 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.matrix.api.timeline import android.os.Parcelable +import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId @@ -42,6 +43,7 @@ interface Timeline : AutoCloseable { } @Parcelize + @Immutable sealed interface Mode : Parcelable { data object Live : Mode data class FocusedOnEvent(val eventId: EventId) : Mode From 45a3018b112a3ef55348f06163ea886a6c7a140a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 18:21:23 +0200 Subject: [PATCH 032/898] Add new tool to the list of CI checks --- .github/workflows/quality.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 773bc02d93..b9b9e25071 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -103,6 +103,39 @@ jobs: path: | **/build/reports/**/*.* + compose: + name: Compose tests + runs-on: ubuntu-latest + # Allow all jobs on main and develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/main' && format('check-compose-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('check-compose-develop-{0}', github.sha) || format('check-compose-{0}', github.ref) }} + cancel-in-progress: true + steps: + - uses: actions/checkout@v5 + with: + # Ensure we are building the branch and not the branch after being merged on develop + # https://github.com/actions/checkout/issues/881 + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} + - name: Add SSH private keys for submodule repositories + uses: webfactory/ssh-agent@a6f90b1f127823b31d4d4a8d96047790581349bd # v0.9.1 + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + with: + ssh-private-key: ${{ secrets.ELEMENT_ENTERPRISE_DEPLOY_KEY }} + - name: Clone submodules + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'element-hq/element-x-android' }} + run: git submodule update --init --recursive + - name: Use JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' # See 'Supported distributions' for available options + java-version: '21' + - name: Configure gradle + uses: gradle/actions/setup-gradle@v5 + with: + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + - name: Run compose tests + run: ./tools/compose/check_stability.sh + lint: name: Android lint check runs-on: ubuntu-latest From 3b390741443380a49a64e7ac3d2b7a4c56941d06 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 9 Oct 2025 21:06:25 +0200 Subject: [PATCH 033/898] KnockRequestsAction needs to be immutable --- .../features/knockrequests/impl/list/KnockRequestsListState.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt index 5788dbed2a..1042a3646f 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListState.kt @@ -7,6 +7,7 @@ package io.element.android.features.knockrequests.impl.list +import androidx.compose.runtime.Immutable import io.element.android.features.knockrequests.impl.data.KnockRequestPermissions import io.element.android.features.knockrequests.impl.data.KnockRequestPresentable import io.element.android.libraries.architecture.AsyncAction @@ -23,6 +24,7 @@ data class KnockRequestsListState( val canAcceptAll = permissions.canAccept && knockRequests is AsyncData.Success && knockRequests.data.size > 1 } +@Immutable sealed interface KnockRequestsAction { data object None : KnockRequestsAction data class Accept(val knockRequest: KnockRequestPresentable) : KnockRequestsAction From b282e310c3d93991b7859e03aa70a83d5bcbc325 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 09:45:10 +0200 Subject: [PATCH 034/898] Make error message more visible --- tools/compose/check_stability.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/compose/check_stability.sh b/tools/compose/check_stability.sh index c965c787cd..06d76ca0ae 100755 --- a/tools/compose/check_stability.sh +++ b/tools/compose/check_stability.sh @@ -17,7 +17,7 @@ find . -type f -name "*-classes.txt" | while read -r file; do # echo "Processing $file" # Check that there is no line containing "unstable class .*State {" if grep -E 'unstable class .*State \{' "$file"; then - echo "Found unstable State class in $file" + echo "❌ ERROR: Found unstable State class in $file" exit 1 fi done From 2b21e12f97ed629311253ac23a8d3a81a2855cc0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 10:02:47 +0200 Subject: [PATCH 035/898] Only timestamp is usefull, no need to build a Date. --- .../timeline/factories/event/TimelineItemEventFactory.kt | 3 +-- .../impl/timeline/model/AggregatedReactionProvider.kt | 5 +++-- .../impl/timeline/model/AggregatedReactionSender.kt | 6 +----- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt index 6043cb57ff..93a5e686d9 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt @@ -146,10 +146,9 @@ class TimelineItemEventFactory( senders = reaction.senders .sortedByDescending { it.timestamp } .map { - val date = Date(it.timestamp) AggregatedReactionSender( senderId = it.senderId, - timestamp = date, + timestamp = it.timestamp, sentTime = dateFormatter.format( it.timestamp, DateFormatterMode.TimeOrDate, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt index b7400c7616..71d5035910 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt @@ -33,13 +33,14 @@ fun anAggregatedReaction( val timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, java.util.Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") } - val date = Date(1_689_061_264L) + val timestamp = 1_689_061_264L + val date = Date(timestamp) val senders = buildList { repeat(count) { index -> add( AggregatedReactionSender( senderId = if (isHighlighted && index == 0) userId else UserId("@user$index:server.org"), - timestamp = date, + timestamp = timestamp, sentTime = timeFormatter.format(date), ) ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt index cce557d0ec..ab8e9fe1a2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionSender.kt @@ -7,16 +7,12 @@ package io.element.android.features.messages.impl.timeline.model -import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser -import java.util.Date -// Need to be marked as @Immutable for Date -@Immutable data class AggregatedReactionSender( val senderId: UserId, - val timestamp: Date, + val timestamp: Long, val sentTime: String, val user: MatrixUser? = null ) From 10bca3383ae24623d797342200facfb94049031a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 10:07:35 +0200 Subject: [PATCH 036/898] fix(deps): update metro to v0.6.9 (#5480) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0d4cb342dc..854fb8b9a7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ haze = "1.6.10" dependencyAnalysis = "3.0.4" # DI -metro = "0.6.8" +metro = "0.6.9" # Auto service autoservice = "1.1.1" From 84c2752480eeeee180661532d49639684891365b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 10:10:13 +0200 Subject: [PATCH 037/898] Do not create a new immutable list from a List every time we want to produce a new state --- .../features/home/impl/spaces/HomeSpacesPresenter.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt index 9486e6be62..b4a2fc9339 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt @@ -16,6 +16,7 @@ import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.ui.safety.rememberHideInvitesAvatar +import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentSetOf import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableSet @@ -29,7 +30,10 @@ class HomeSpacesPresenter( @Composable override fun present(): HomeSpacesState { val hideInvitesAvatar by client.rememberHideInvitesAvatar() - val spaceRooms by client.spaceService.spaceRoomsFlow.collectAsState(emptyList()) + val spaceRooms by remember { + client.spaceService.spaceRoomsFlow.map { it.toImmutableList() } + }.collectAsState(persistentListOf()) + val seenSpaceInvites by remember { seenInvitesStore.seenRoomIds().map { it.toImmutableSet() } }.collectAsState(persistentSetOf()) @@ -40,7 +44,7 @@ class HomeSpacesPresenter( return HomeSpacesState( space = CurrentSpace.Root, - spaceRooms = spaceRooms.toImmutableList(), + spaceRooms = spaceRooms, seenSpaceInvites = seenSpaceInvites, hideInvitesAvatar = hideInvitesAvatar, eventSink = ::handleEvents, From 062bebf0306e1b8048c518fd6c8fc427f50b7941 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 10:26:39 +0200 Subject: [PATCH 038/898] Rename SaveableCameraPositionState to SaveableCameraPositionData to avoid this class to be checked for stability. --- .../libraries/maplibre/compose/CameraPositionState.kt | 6 +++--- plugins/src/main/kotlin/extension/KoverExtension.kt | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/CameraPositionState.kt b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/CameraPositionState.kt index b5b46ca847..922311ee70 100644 --- a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/CameraPositionState.kt +++ b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/CameraPositionState.kt @@ -156,8 +156,8 @@ public class CameraPositionState( /** * The default saver implementation for [CameraPositionState]. */ - public val Saver: Saver = Saver( - save = { SaveableCameraPositionState(it.position, it.cameraMode.toInternal()) }, + public val Saver: Saver = Saver( + save = { SaveableCameraPositionData(it.position, it.cameraMode.toInternal()) }, restore = { CameraPositionState(it.position, CameraMode.fromInternal(it.cameraMode)) } ) } @@ -172,7 +172,7 @@ public val currentCameraPositionState: CameraPositionState get() = LocalCameraPositionState.current @Parcelize -public data class SaveableCameraPositionState( +public data class SaveableCameraPositionData( val position: CameraPosition, val cameraMode: Int ) : Parcelable diff --git a/plugins/src/main/kotlin/extension/KoverExtension.kt b/plugins/src/main/kotlin/extension/KoverExtension.kt index 04a647321e..9cd83f46b4 100644 --- a/plugins/src/main/kotlin/extension/KoverExtension.kt +++ b/plugins/src/main/kotlin/extension/KoverExtension.kt @@ -158,7 +158,6 @@ fun Project.setupKover() { "io.element.android.libraries.designsystem.swipe.SwipeableActionsState", "io.element.android.libraries.designsystem.theme.components.bottomsheet.CustomSheetState", "io.element.android.libraries.maplibre.compose.CameraPositionState", - "io.element.android.libraries.maplibre.compose.SaveableCameraPositionState", "io.element.android.libraries.maplibre.compose.SymbolState", "io.element.android.libraries.matrix.api.room.RoomMembershipState", "io.element.android.libraries.matrix.api.room.RoomMembersState", From d1698034be7198ca3446167b229713f47cc0f4e2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 10:28:01 +0200 Subject: [PATCH 039/898] Let the CI reveal all the error that I do not see locally for compilation cache reasons. --- tools/compose/check_stability.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/compose/check_stability.sh b/tools/compose/check_stability.sh index 06d76ca0ae..7552703281 100755 --- a/tools/compose/check_stability.sh +++ b/tools/compose/check_stability.sh @@ -18,6 +18,7 @@ find . -type f -name "*-classes.txt" | while read -r file; do # Check that there is no line containing "unstable class .*State {" if grep -E 'unstable class .*State \{' "$file"; then echo "❌ ERROR: Found unstable State class in $file" - exit 1 + # TEMPORARY CHANGE + # exit 1 fi done From e57bf354c33e1449337cb51a012f7a3f9d99a9c0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 10:48:29 +0200 Subject: [PATCH 040/898] Remove unused import --- .../impl/timeline/factories/event/TimelineItemEventFactory.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt index 93a5e686d9..dd21271b9f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt @@ -21,7 +21,6 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItemReac import io.element.android.features.messages.impl.timeline.model.TimelineItemReadReceipts import io.element.android.features.messages.impl.timeline.model.TimelineItemThreadInfo import io.element.android.features.messages.impl.utils.messagesummary.MessageSummaryFormatter -import io.element.android.libraries.architecture.map import io.element.android.libraries.core.bool.orTrue import io.element.android.libraries.dateformatter.api.DateFormatter import io.element.android.libraries.dateformatter.api.DateFormatterMode @@ -37,7 +36,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.getDisambigua import io.element.android.libraries.matrix.ui.messages.reply.map import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList -import java.util.Date @AssistedInject class TimelineItemEventFactory( From 339f40e22aaef765bb349209e4ca0deaab667b99 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 11:49:15 +0200 Subject: [PATCH 041/898] Revert "Let the CI reveal all the error that I do not see locally for compilation cache reasons." This reverts commit d1698034be7198ca3446167b229713f47cc0f4e2. --- tools/compose/check_stability.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/compose/check_stability.sh b/tools/compose/check_stability.sh index 7552703281..06d76ca0ae 100755 --- a/tools/compose/check_stability.sh +++ b/tools/compose/check_stability.sh @@ -18,7 +18,6 @@ find . -type f -name "*-classes.txt" | while read -r file; do # Check that there is no line containing "unstable class .*State {" if grep -E 'unstable class .*State \{' "$file"; then echo "❌ ERROR: Found unstable State class in $file" - # TEMPORARY CHANGE - # exit 1 + exit 1 fi done From 706d5f0d3a22deca41e85e37a02fa192b17e63d6 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 10 Oct 2025 15:14:22 +0200 Subject: [PATCH 042/898] Import Compound tokens - fixed icons (#5506) * Import fixed Compound icons * Revert changes to thread icons * Update screenshots --------- Co-authored-by: ElementBot --- .../screenshots/Compound Icons - Dark.png | 4 ++-- .../screenshots/Compound Icons - Light.png | 4 ++-- .../screenshots/Compound Icons - Rtl.png | 4 ++-- .../Compound Vector Icons - Dark.png | 4 ++-- .../Compound Vector Icons - Light.png | 4 ++-- .../main/res/drawable/ic_compound_admin.xml | 8 +++---- .../res/drawable/ic_compound_arrow_down.xml | 6 ++--- .../res/drawable/ic_compound_arrow_left.xml | 6 ++--- .../res/drawable/ic_compound_arrow_right.xml | 6 ++--- .../res/drawable/ic_compound_arrow_up.xml | 6 ++--- .../drawable/ic_compound_arrow_up_right.xml | 6 ++--- .../res/drawable/ic_compound_ask_to_join.xml | 6 ++--- .../ic_compound_ask_to_join_solid.xml | 6 ++--- .../res/drawable/ic_compound_attachment.xml | 6 ++--- .../main/res/drawable/ic_compound_audio.xml | 6 ++--- .../main/res/drawable/ic_compound_block.xml | 6 ++--- .../main/res/drawable/ic_compound_bold.xml | 6 ++--- .../res/drawable/ic_compound_calendar.xml | 6 ++--- .../main/res/drawable/ic_compound_chart.xml | 6 ++--- .../main/res/drawable/ic_compound_chat.xml | 6 ++--- .../res/drawable/ic_compound_chat_new.xml | 12 +++++----- .../res/drawable/ic_compound_chat_problem.xml | 12 +++++----- .../res/drawable/ic_compound_chat_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_check.xml | 6 ++--- .../res/drawable/ic_compound_check_circle.xml | 6 ++--- .../ic_compound_check_circle_solid.xml | 6 ++--- .../res/drawable/ic_compound_chevron_down.xml | 6 ++--- .../res/drawable/ic_compound_chevron_left.xml | 6 ++--- .../drawable/ic_compound_chevron_right.xml | 6 ++--- .../res/drawable/ic_compound_chevron_up.xml | 6 ++--- .../drawable/ic_compound_chevron_up_down.xml | 6 ++--- .../main/res/drawable/ic_compound_circle.xml | 6 ++--- .../main/res/drawable/ic_compound_close.xml | 6 ++--- .../main/res/drawable/ic_compound_cloud.xml | 6 ++--- .../res/drawable/ic_compound_cloud_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_code.xml | 6 ++--- .../res/drawable/ic_compound_collapse.xml | 6 ++--- .../main/res/drawable/ic_compound_company.xml | 6 ++--- .../main/res/drawable/ic_compound_compose.xml | 14 +++++------ .../res/drawable/ic_compound_computer.xml | 6 ++--- .../main/res/drawable/ic_compound_copy.xml | 12 +++++----- .../res/drawable/ic_compound_dark_mode.xml | 8 +++---- .../main/res/drawable/ic_compound_delete.xml | 6 ++--- .../main/res/drawable/ic_compound_devices.xml | 6 ++--- .../res/drawable/ic_compound_dial_pad.xml | 6 ++--- .../res/drawable/ic_compound_document.xml | 6 ++--- .../res/drawable/ic_compound_download.xml | 6 ++--- .../res/drawable/ic_compound_download_ios.xml | 12 +++++----- .../res/drawable/ic_compound_drag_grid.xml | 6 ++--- .../res/drawable/ic_compound_drag_list.xml | 6 ++--- .../res/drawable/ic_compound_earpiece.xml | 12 +++++----- .../main/res/drawable/ic_compound_edit.xml | 8 +++---- .../res/drawable/ic_compound_edit_solid.xml | 8 +++---- .../main/res/drawable/ic_compound_email.xml | 6 ++--- .../res/drawable/ic_compound_email_solid.xml | 6 ++--- .../res/drawable/ic_compound_end_call.xml | 6 ++--- .../main/res/drawable/ic_compound_error.xml | 6 ++--- .../res/drawable/ic_compound_error_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_expand.xml | 6 ++--- .../main/res/drawable/ic_compound_explore.xml | 6 ++--- .../drawable/ic_compound_export_archive.xml | 6 ++--- .../res/drawable/ic_compound_extensions.xml | 6 ++--- .../drawable/ic_compound_extensions_solid.xml | 6 ++--- .../res/drawable/ic_compound_favourite.xml | 6 ++--- .../drawable/ic_compound_favourite_solid.xml | 6 ++--- .../res/drawable/ic_compound_file_error.xml | 12 +++++----- .../main/res/drawable/ic_compound_files.xml | 6 ++--- .../main/res/drawable/ic_compound_filter.xml | 6 ++--- .../main/res/drawable/ic_compound_forward.xml | 6 ++--- .../main/res/drawable/ic_compound_grid.xml | 6 ++--- .../main/res/drawable/ic_compound_group.xml | 6 ++--- .../main/res/drawable/ic_compound_guest.xml | 12 +++++----- .../ic_compound_headphones_off_solid.xml | 6 ++--- .../drawable/ic_compound_headphones_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_help.xml | 12 +++++----- .../res/drawable/ic_compound_help_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_history.xml | 12 +++++----- .../main/res/drawable/ic_compound_home.xml | 8 +++---- .../res/drawable/ic_compound_home_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_host.xml | 14 +++++------ .../main/res/drawable/ic_compound_image.xml | 12 +++++----- .../res/drawable/ic_compound_image_error.xml | 12 +++++----- .../drawable/ic_compound_indent_decrease.xml | 6 ++--- .../drawable/ic_compound_indent_increase.xml | 6 ++--- .../main/res/drawable/ic_compound_info.xml | 14 +++++------ .../res/drawable/ic_compound_info_solid.xml | 6 ++--- .../res/drawable/ic_compound_inline_code.xml | 6 ++--- .../main/res/drawable/ic_compound_italic.xml | 6 ++--- .../src/main/res/drawable/ic_compound_key.xml | 6 ++--- .../main/res/drawable/ic_compound_key_off.xml | 12 +++++----- .../drawable/ic_compound_key_off_solid.xml | 6 ++--- .../res/drawable/ic_compound_key_solid.xml | 6 ++--- .../res/drawable/ic_compound_keyboard.xml | 14 +++++------ .../main/res/drawable/ic_compound_labs.xml | 20 ++++++++-------- .../main/res/drawable/ic_compound_leave.xml | 12 +++++----- .../main/res/drawable/ic_compound_link.xml | 6 ++--- .../main/res/drawable/ic_compound_linux.xml | 24 ++++++++++--------- .../drawable/ic_compound_list_bulleted.xml | 6 ++--- .../drawable/ic_compound_list_numbered.xml | 6 ++--- .../res/drawable/ic_compound_list_view.xml | 20 ++++++++-------- .../ic_compound_location_navigator.xml | 6 ++--- ...ic_compound_location_navigator_centred.xml | 6 ++--- .../res/drawable/ic_compound_location_pin.xml | 6 ++--- .../ic_compound_location_pin_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_lock.xml | 6 ++--- .../res/drawable/ic_compound_lock_off.xml | 6 ++--- .../res/drawable/ic_compound_lock_solid.xml | 6 ++--- .../src/main/res/drawable/ic_compound_mac.xml | 8 +++---- .../res/drawable/ic_compound_mark_as_read.xml | 6 ++--- .../drawable/ic_compound_mark_as_unread.xml | 14 +++++------ .../ic_compound_mark_threads_as_read.xml | 6 ++--- .../ic_compound_marker_read_receipts.xml | 12 +++++----- .../main/res/drawable/ic_compound_mention.xml | 6 ++--- .../main/res/drawable/ic_compound_menu.xml | 6 ++--- .../main/res/drawable/ic_compound_mic_off.xml | 14 +++++------ .../drawable/ic_compound_mic_off_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_mic_on.xml | 14 +++++------ .../res/drawable/ic_compound_mic_on_solid.xml | 12 +++++----- .../main/res/drawable/ic_compound_minus.xml | 6 ++--- .../main/res/drawable/ic_compound_mobile.xml | 6 ++--- .../drawable/ic_compound_notifications.xml | 6 ++--- .../ic_compound_notifications_off.xml | 12 +++++----- .../ic_compound_notifications_off_solid.xml | 12 +++++----- .../ic_compound_notifications_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_offline.xml | 6 ++--- .../ic_compound_overflow_horizontal.xml | 6 ++--- .../ic_compound_overflow_vertical.xml | 6 ++--- .../main/res/drawable/ic_compound_pause.xml | 6 ++--- .../res/drawable/ic_compound_pause_solid.xml | 6 ++--- .../src/main/res/drawable/ic_compound_pin.xml | 8 +++---- .../res/drawable/ic_compound_pin_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_play.xml | 6 ++--- .../res/drawable/ic_compound_play_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_plus.xml | 6 ++--- .../main/res/drawable/ic_compound_polls.xml | 6 ++--- .../res/drawable/ic_compound_polls_end.xml | 12 +++++----- .../main/res/drawable/ic_compound_pop_out.xml | 12 +++++----- .../res/drawable/ic_compound_preferences.xml | 8 +++---- .../ic_compound_presence_outline_8_x_8.xml | 14 ++++++----- .../ic_compound_presence_solid_8_x_8.xml | 12 ++++++---- ..._compound_presence_strikethrough_8_x_8.xml | 14 ++++++----- .../main/res/drawable/ic_compound_public.xml | 6 ++--- .../main/res/drawable/ic_compound_qr_code.xml | 20 ++++++++-------- .../main/res/drawable/ic_compound_quote.xml | 6 ++--- .../ic_compound_raised_hand_solid.xml | 6 ++--- .../res/drawable/ic_compound_reaction.xml | 12 +++++----- .../res/drawable/ic_compound_reaction_add.xml | 12 +++++----- .../drawable/ic_compound_reaction_solid.xml | 8 +++---- .../main/res/drawable/ic_compound_reply.xml | 6 ++--- .../main/res/drawable/ic_compound_restart.xml | 6 ++--- .../main/res/drawable/ic_compound_room.xml | 6 ++--- .../main/res/drawable/ic_compound_search.xml | 6 ++--- .../main/res/drawable/ic_compound_send.xml | 8 +++---- .../res/drawable/ic_compound_send_solid.xml | 6 ++--- .../res/drawable/ic_compound_settings.xml | 12 +++++----- .../drawable/ic_compound_settings_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_share.xml | 6 ++--- .../drawable/ic_compound_share_android.xml | 6 ++--- .../res/drawable/ic_compound_share_ios.xml | 12 +++++----- .../res/drawable/ic_compound_share_screen.xml | 12 +++++----- .../ic_compound_share_screen_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_shield.xml | 8 +++---- .../main/res/drawable/ic_compound_sidebar.xml | 8 +++---- .../res/drawable/ic_compound_sign_out.xml | 6 ++--- .../main/res/drawable/ic_compound_spinner.xml | 8 +++---- .../res/drawable/ic_compound_spotlight.xml | 6 ++--- .../drawable/ic_compound_spotlight_view.xml | 8 +++---- .../drawable/ic_compound_strikethrough.xml | 6 ++--- .../ic_compound_switch_camera_solid.xml | 12 +++++----- .../res/drawable/ic_compound_take_photo.xml | 6 ++--- .../drawable/ic_compound_take_photo_solid.xml | 8 +++---- .../drawable/ic_compound_text_formatting.xml | 6 ++--- .../main/res/drawable/ic_compound_time.xml | 14 +++++------ .../res/drawable/ic_compound_underline.xml | 6 ++--- .../main/res/drawable/ic_compound_unknown.xml | 12 +++++----- .../drawable/ic_compound_unknown_solid.xml | 6 ++--- .../main/res/drawable/ic_compound_unpin.xml | 14 +++++------ .../main/res/drawable/ic_compound_user.xml | 6 ++--- .../res/drawable/ic_compound_user_add.xml | 6 ++--- .../drawable/ic_compound_user_add_solid.xml | 6 ++--- .../res/drawable/ic_compound_user_profile.xml | 18 +++++++------- .../ic_compound_user_profile_solid.xml | 12 +++++----- .../res/drawable/ic_compound_user_solid.xml | 6 ++--- .../res/drawable/ic_compound_verified.xml | 6 ++--- .../res/drawable/ic_compound_video_call.xml | 6 ++--- .../ic_compound_video_call_declined_solid.xml | 6 ++--- .../ic_compound_video_call_missed_solid.xml | 6 ++--- .../drawable/ic_compound_video_call_off.xml | 6 ++--- .../ic_compound_video_call_off_solid.xml | 6 ++--- .../drawable/ic_compound_video_call_solid.xml | 6 ++--- .../drawable/ic_compound_visibility_off.xml | 6 ++--- .../drawable/ic_compound_visibility_on.xml | 6 ++--- .../res/drawable/ic_compound_voice_call.xml | 14 ++++++----- .../drawable/ic_compound_voice_call_solid.xml | 6 ++--- .../res/drawable/ic_compound_volume_off.xml | 6 ++--- .../drawable/ic_compound_volume_off_solid.xml | 6 ++--- .../res/drawable/ic_compound_volume_on.xml | 12 +++++----- .../drawable/ic_compound_volume_on_solid.xml | 12 +++++----- .../main/res/drawable/ic_compound_warning.xml | 14 +++++------ .../res/drawable/ic_compound_web_browser.xml | 6 ++--- .../main/res/drawable/ic_compound_windows.xml | 6 ++--- .../res/drawable/ic_compound_workspace.xml | 4 ++-- .../drawable/ic_compound_workspace_solid.xml | 4 ++-- ...om.joined_LoadingRoomNodeView_Day_0_en.png | 4 ++-- ...om.joined_LoadingRoomNodeView_Day_1_en.png | 4 ++-- ....joined_LoadingRoomNodeView_Night_0_en.png | 4 ++-- ....joined_LoadingRoomNodeView_Night_1_en.png | 4 ++-- ...ytics.impl_AnalyticsOptInView_Day_0_en.png | 4 ++-- ...ytics.impl_AnalyticsOptInView_Day_1_en.png | 4 ++-- ...ics.impl_AnalyticsOptInView_Night_0_en.png | 4 ++-- ...ics.impl_AnalyticsOptInView_Night_1_en.png | 4 ++-- ....spaces_SpaceAnnouncementView_Day_0_en.png | 4 ++-- ...paces_SpaceAnnouncementView_Night_0_en.png | 4 ++-- ...ll.impl.ui_IncomingCallScreen_Day_0_en.png | 4 ++-- ....impl.ui_IncomingCallScreen_Night_0_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_0_en.png | 4 ++-- ...erroles.impl_ChangeRolesView_Day_10_en.png | 4 ++-- ...erroles.impl_ChangeRolesView_Day_11_en.png | 4 ++-- ...erroles.impl_ChangeRolesView_Day_12_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_1_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_2_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_3_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_4_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_5_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_6_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_7_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_8_en.png | 4 ++-- ...berroles.impl_ChangeRolesView_Day_9_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_0_en.png | 4 ++-- ...roles.impl_ChangeRolesView_Night_10_en.png | 4 ++-- ...roles.impl_ChangeRolesView_Night_11_en.png | 4 ++-- ...roles.impl_ChangeRolesView_Night_12_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_1_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_2_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_3_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_4_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_5_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_6_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_7_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_8_en.png | 4 ++-- ...rroles.impl_ChangeRolesView_Night_9_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_0_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_1_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_2_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_3_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_4_en.png | 4 ++-- ...nfigureroom_ConfigureRoomViewDark_5_en.png | 4 ++-- ...figureroom_ConfigureRoomViewLight_0_en.png | 2 +- ...figureroom_ConfigureRoomViewLight_1_en.png | 4 ++-- ...figureroom_ConfigureRoomViewLight_2_en.png | 4 ++-- ...figureroom_ConfigureRoomViewLight_3_en.png | 4 ++-- ...figureroom_ConfigureRoomViewLight_4_en.png | 4 ++-- ...figureroom_ConfigureRoomViewLight_5_en.png | 4 ++-- ...ations_NotificationsOptInView_Day_0_en.png | 4 ++-- ...ions_NotificationsOptInView_Night_0_en.png | 4 ++-- ...hooseSelfVerificationModeView_Day_0_en.png | 4 ++-- ...hooseSelfVerificationModeView_Day_1_en.png | 4 ++-- ...hooseSelfVerificationModeView_Day_2_en.png | 4 ++-- ...hooseSelfVerificationModeView_Day_3_en.png | 4 ++-- ...oseSelfVerificationModeView_Night_0_en.png | 4 ++-- ...oseSelfVerificationModeView_Night_1_en.png | 4 ++-- ...oseSelfVerificationModeView_Night_2_en.png | 4 ++-- ...oseSelfVerificationModeView_Night_3_en.png | 4 ++-- ...nts_BatteryOptimizationBanner_Day_0_en.png | 4 ++-- ...s_BatteryOptimizationBanner_Night_0_en.png | 4 ++-- ...ents_ConfirmRecoveryKeyBanner_Day_0_en.png | 4 ++-- ...ts_ConfirmRecoveryKeyBanner_Night_0_en.png | 4 ++-- ...ultRoomListTopBarMultiAccount_Day_0_en.png | 4 ++-- ...tRoomListTopBarMultiAccount_Night_0_en.png | 4 ++-- ...ltRoomListTopBarWithIndicator_Day_0_en.png | 4 ++-- ...RoomListTopBarWithIndicator_Night_0_en.png | 4 ++-- ...ponents_DefaultRoomListTopBar_Day_0_en.png | 4 ++-- ...nents_DefaultRoomListTopBar_Night_0_en.png | 4 ++-- ...lScreenIntentPermissionBanner_Day_0_en.png | 4 ++-- ...creenIntentPermissionBanner_Night_0_en.png | 4 ++-- ...ts_NewNotificationSoundBanner_Day_0_en.png | 4 ++-- ..._NewNotificationSoundBanner_Night_0_en.png | 4 ++-- ...omponents_RoomListContentView_Day_3_en.png | 4 ++-- ...omponents_RoomListContentView_Day_4_en.png | 4 ++-- ...omponents_RoomListContentView_Day_5_en.png | 4 ++-- ...ponents_RoomListContentView_Night_3_en.png | 4 ++-- ...ponents_RoomListContentView_Night_4_en.png | 4 ++-- ...ponents_RoomListContentView_Night_5_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_11_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_12_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_13_en.png | 2 +- ...pl.components_RoomSummaryRow_Day_14_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_15_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_16_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_17_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_18_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_19_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_20_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_21_en.png | 2 +- ...pl.components_RoomSummaryRow_Day_22_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_23_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_24_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_25_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_26_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_27_en.png | 4 ++-- ...pl.components_RoomSummaryRow_Day_28_en.png | 4 ++-- ...mpl.components_RoomSummaryRow_Day_7_en.png | 4 ++-- ...mpl.components_RoomSummaryRow_Day_8_en.png | 4 ++-- ....components_RoomSummaryRow_Night_11_en.png | 2 +- ....components_RoomSummaryRow_Night_12_en.png | 4 ++-- ....components_RoomSummaryRow_Night_13_en.png | 4 ++-- ....components_RoomSummaryRow_Night_14_en.png | 4 ++-- ....components_RoomSummaryRow_Night_15_en.png | 4 ++-- ....components_RoomSummaryRow_Night_16_en.png | 4 ++-- ....components_RoomSummaryRow_Night_17_en.png | 4 ++-- ....components_RoomSummaryRow_Night_18_en.png | 4 ++-- ....components_RoomSummaryRow_Night_19_en.png | 4 ++-- ....components_RoomSummaryRow_Night_20_en.png | 4 ++-- ....components_RoomSummaryRow_Night_21_en.png | 4 ++-- ....components_RoomSummaryRow_Night_22_en.png | 4 ++-- ....components_RoomSummaryRow_Night_23_en.png | 4 ++-- ....components_RoomSummaryRow_Night_24_en.png | 4 ++-- ....components_RoomSummaryRow_Night_25_en.png | 4 ++-- ....components_RoomSummaryRow_Night_26_en.png | 4 ++-- ....components_RoomSummaryRow_Night_27_en.png | 4 ++-- ....components_RoomSummaryRow_Night_28_en.png | 4 ++-- ...l.components_RoomSummaryRow_Night_7_en.png | 4 ++-- ...l.components_RoomSummaryRow_Night_8_en.png | 4 ++-- ...onents_SetUpRecoveryKeyBanner_Day_0_en.png | 4 ++-- ...ents_SetUpRecoveryKeyBanner_Night_0_en.png | 4 ++-- ...l.filters_RoomListFiltersView_Day_1_en.png | 4 ++-- ...filters_RoomListFiltersView_Night_1_en.png | 4 ++-- ...omListModalBottomSheetContent_Day_0_en.png | 4 ++-- ...omListModalBottomSheetContent_Day_1_en.png | 4 ++-- ...omListModalBottomSheetContent_Day_2_en.png | 4 ++-- ...ListModalBottomSheetContent_Night_0_en.png | 4 ++-- ...ListModalBottomSheetContent_Night_1_en.png | 4 ++-- ...ListModalBottomSheetContent_Night_2_en.png | 4 ++-- ....search_RoomListSearchContent_Day_0_en.png | 4 ++-- ....search_RoomListSearchContent_Day_1_en.png | 4 ++-- ...earch_RoomListSearchContent_Night_0_en.png | 4 ++-- ...earch_RoomListSearchContent_Night_1_en.png | 4 ++-- ...me.impl.spaces_HomeSpacesView_Day_0_en.png | 4 ++-- ...me.impl.spaces_HomeSpacesView_Day_1_en.png | 4 ++-- ....impl.spaces_HomeSpacesView_Night_0_en.png | 4 ++-- ....impl.spaces_HomeSpacesView_Night_1_en.png | 4 ++-- .../features.home.impl_HomeViewA11y_en.png | 4 ++-- .../features.home.impl_HomeView_Day_0_en.png | 4 ++-- .../features.home.impl_HomeView_Day_10_en.png | 4 ++-- .../features.home.impl_HomeView_Day_11_en.png | 4 ++-- .../features.home.impl_HomeView_Day_12_en.png | 4 ++-- .../features.home.impl_HomeView_Day_13_en.png | 4 ++-- .../features.home.impl_HomeView_Day_14_en.png | 4 ++-- .../features.home.impl_HomeView_Day_15_en.png | 4 ++-- .../features.home.impl_HomeView_Day_1_en.png | 4 ++-- .../features.home.impl_HomeView_Day_2_en.png | 4 ++-- .../features.home.impl_HomeView_Day_3_en.png | 4 ++-- .../features.home.impl_HomeView_Day_4_en.png | 4 ++-- .../features.home.impl_HomeView_Day_5_en.png | 4 ++-- .../features.home.impl_HomeView_Day_6_en.png | 4 ++-- .../features.home.impl_HomeView_Day_7_en.png | 4 ++-- .../features.home.impl_HomeView_Day_8_en.png | 4 ++-- .../features.home.impl_HomeView_Day_9_en.png | 4 ++-- ...features.home.impl_HomeView_Night_0_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_10_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_11_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_12_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_13_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_14_en.png | 4 ++-- ...eatures.home.impl_HomeView_Night_15_en.png | 4 ++-- ...features.home.impl_HomeView_Night_1_en.png | 4 ++-- ...features.home.impl_HomeView_Night_2_en.png | 4 ++-- ...features.home.impl_HomeView_Night_3_en.png | 4 ++-- ...features.home.impl_HomeView_Night_4_en.png | 4 ++-- ...features.home.impl_HomeView_Night_5_en.png | 4 ++-- ...features.home.impl_HomeView_Night_6_en.png | 4 ++-- ...features.home.impl_HomeView_Night_7_en.png | 4 ++-- ...features.home.impl_HomeView_Night_8_en.png | 4 ++-- ...features.home.impl_HomeView_Night_9_en.png | 4 ++-- ...eandblock_DeclineAndBlockView_Day_0_en.png | 4 ++-- ...eandblock_DeclineAndBlockView_Day_1_en.png | 4 ++-- ...eandblock_DeclineAndBlockView_Day_2_en.png | 4 ++-- ...eandblock_DeclineAndBlockView_Day_3_en.png | 4 ++-- ...eandblock_DeclineAndBlockView_Day_4_en.png | 4 ++-- ...ndblock_DeclineAndBlockView_Night_0_en.png | 4 ++-- ...ndblock_DeclineAndBlockView_Night_1_en.png | 4 ++-- ...ndblock_DeclineAndBlockView_Night_2_en.png | 4 ++-- ...ndblock_DeclineAndBlockView_Night_3_en.png | 4 ++-- ...ndblock_DeclineAndBlockView_Night_4_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_0_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_1_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_2_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_3_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_4_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_5_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_6_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_7_en.png | 4 ++-- ...epeople.impl_InvitePeopleView_Day_9_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_0_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_1_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_2_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_3_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_4_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_5_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_6_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_7_en.png | 4 ++-- ...eople.impl_InvitePeopleView_Night_9_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_0_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_10_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_11_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_12_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_13_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_14_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_15_en.png | 4 ++-- ...s.joinroom.impl_JoinRoomView_Day_16_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_1_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_2_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_3_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_4_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_5_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_6_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_7_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_8_en.png | 4 ++-- ...es.joinroom.impl_JoinRoomView_Day_9_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_0_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_10_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_11_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_12_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_13_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_14_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_15_en.png | 4 ++-- ...joinroom.impl_JoinRoomView_Night_16_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_1_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_2_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_3_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_4_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_5_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_6_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_7_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_8_en.png | 4 ++-- ....joinroom.impl_JoinRoomView_Night_9_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_0_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_1_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_2_en.png | 2 +- ...anner_KnockRequestsBannerView_Day_3_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_4_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_5_en.png | 4 ++-- ...anner_KnockRequestsBannerView_Day_6_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_0_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_1_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_2_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_3_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_4_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_5_en.png | 4 ++-- ...ner_KnockRequestsBannerView_Night_6_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_0_en.png | 4 ++-- ...l.list_KnockRequestsListView_Day_10_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_1_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_2_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_3_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_4_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_5_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_6_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_7_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_8_en.png | 4 ++-- ...pl.list_KnockRequestsListView_Day_9_en.png | 4 ++-- ....list_KnockRequestsListView_Night_0_en.png | 4 ++-- ...list_KnockRequestsListView_Night_10_en.png | 4 ++-- ....list_KnockRequestsListView_Night_1_en.png | 4 ++-- ....list_KnockRequestsListView_Night_2_en.png | 4 ++-- ....list_KnockRequestsListView_Night_3_en.png | 4 ++-- ....list_KnockRequestsListView_Night_4_en.png | 4 ++-- ....list_KnockRequestsListView_Night_5_en.png | 4 ++-- ....list_KnockRequestsListView_Night_6_en.png | 4 ++-- ....list_KnockRequestsListView_Night_7_en.png | 4 ++-- ....list_KnockRequestsListView_Night_8_en.png | 4 ++-- ....list_KnockRequestsListView_Night_9_en.png | 4 ++-- ...tails_DependenciesDetailsView_Day_0_en.png | 4 ++-- ...ils_DependenciesDetailsView_Night_0_en.png | 4 ++-- ...st_DependencyLicensesListView_Day_0_en.png | 4 ++-- ...st_DependencyLicensesListView_Day_1_en.png | 4 ++-- ...st_DependencyLicensesListView_Day_2_en.png | 4 ++-- ...st_DependencyLicensesListView_Day_3_en.png | 4 ++-- ..._DependencyLicensesListView_Night_0_en.png | 4 ++-- ..._DependencyLicensesListView_Night_1_en.png | 4 ++-- ..._DependencyLicensesListView_Night_2_en.png | 4 ++-- ..._DependencyLicensesListView_Night_3_en.png | 4 ++-- ...internal_StaticMapPlaceholder_Day_0_en.png | 4 ++-- ...ternal_StaticMapPlaceholder_Night_0_en.png | 4 ++-- ...on.impl.send_SendLocationView_Day_0_en.png | 4 ++-- ...on.impl.send_SendLocationView_Day_1_en.png | 4 ++-- ...on.impl.send_SendLocationView_Day_2_en.png | 4 ++-- ...on.impl.send_SendLocationView_Day_3_en.png | 4 ++-- ...on.impl.send_SendLocationView_Day_4_en.png | 4 ++-- ....impl.send_SendLocationView_Night_0_en.png | 4 ++-- ....impl.send_SendLocationView_Night_1_en.png | 4 ++-- ....impl.send_SendLocationView_Night_2_en.png | 4 ++-- ....impl.send_SendLocationView_Night_3_en.png | 4 ++-- ....impl.send_SendLocationView_Night_4_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_0_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_1_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_2_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_3_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_4_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_5_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_6_en.png | 4 ++-- ...on.impl.show_ShowLocationView_Day_7_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_0_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_1_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_2_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_3_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_4_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_5_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_6_en.png | 4 ++-- ....impl.show_ShowLocationView_Night_7_en.png | 4 ++-- ...ttings_LockScreenSettingsView_Day_0_en.png | 4 ++-- ...ttings_LockScreenSettingsView_Day_1_en.png | 4 ++-- ...ttings_LockScreenSettingsView_Day_2_en.png | 4 ++-- ...ings_LockScreenSettingsView_Night_0_en.png | 4 ++-- ...ings_LockScreenSettingsView_Night_1_en.png | 4 ++-- ...ings_LockScreenSettingsView_Night_2_en.png | 4 ++-- ...n.impl.setup.pin_SetupPinView_Day_0_en.png | 4 ++-- ...n.impl.setup.pin_SetupPinView_Day_1_en.png | 4 ++-- ...n.impl.setup.pin_SetupPinView_Day_2_en.png | 4 ++-- ...n.impl.setup.pin_SetupPinView_Day_3_en.png | 4 ++-- ...n.impl.setup.pin_SetupPinView_Day_4_en.png | 4 ++-- ...impl.setup.pin_SetupPinView_Night_0_en.png | 4 ++-- ...impl.setup.pin_SetupPinView_Night_1_en.png | 4 ++-- ...impl.setup.pin_SetupPinView_Night_2_en.png | 4 ++-- ...impl.setup.pin_SetupPinView_Night_3_en.png | 4 ++-- ...impl.setup.pin_SetupPinView_Night_4_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_0_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_1_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_2_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_3_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_4_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_5_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_6_en.png | 4 ++-- ...mpl.unlock_PinUnlockViewInApp_Day_7_en.png | 2 +- ...l.unlock_PinUnlockViewInApp_Night_0_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_1_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_2_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_3_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_4_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_5_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_6_en.png | 4 ++-- ...l.unlock_PinUnlockViewInApp_Night_7_en.png | 2 +- ...een.impl.unlock_PinUnlockView_Day_0_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_1_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_2_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_3_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_4_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_5_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_6_en.png | 4 ++-- ...een.impl.unlock_PinUnlockView_Day_7_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_0_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_1_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_2_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_3_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_4_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_5_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_6_en.png | 4 ++-- ...n.impl.unlock_PinUnlockView_Night_7_en.png | 4 ++-- ...ider_AccountProviderOtherView_Day_0_en.png | 4 ++-- ...er_AccountProviderOtherView_Night_0_en.png | 4 ++-- ...tprovider_AccountProviderView_Day_0_en.png | 4 ++-- ...tprovider_AccountProviderView_Day_1_en.png | 4 ++-- ...tprovider_AccountProviderView_Day_2_en.png | 4 ++-- ...tprovider_AccountProviderView_Day_3_en.png | 4 ++-- ...rovider_AccountProviderView_Night_0_en.png | 4 ++-- ...rovider_AccountProviderView_Night_1_en.png | 4 ++-- ...rovider_AccountProviderView_Night_2_en.png | 4 ++-- ...rovider_AccountProviderView_Night_3_en.png | 4 ++-- ...der_ChangeAccountProviderView_Day_0_en.png | 4 ++-- ...der_ChangeAccountProviderView_Day_1_en.png | 4 ++-- ...r_ChangeAccountProviderView_Night_0_en.png | 4 ++-- ...r_ChangeAccountProviderView_Night_1_en.png | 4 ++-- ...der_ChooseAccountProviderView_Day_0_en.png | 4 ++-- ...der_ChooseAccountProviderView_Day_1_en.png | 4 ++-- ...der_ChooseAccountProviderView_Day_2_en.png | 4 ++-- ...r_ChooseAccountProviderView_Night_0_en.png | 4 ++-- ...r_ChooseAccountProviderView_Night_1_en.png | 4 ++-- ...r_ChooseAccountProviderView_Night_2_en.png | 4 ++-- ...er_ConfirmAccountProviderView_Day_0_en.png | 4 ++-- ...er_ConfirmAccountProviderView_Day_1_en.png | 4 ++-- ...er_ConfirmAccountProviderView_Day_2_en.png | 4 ++-- ..._ConfirmAccountProviderView_Night_0_en.png | 4 ++-- ..._ConfirmAccountProviderView_Night_1_en.png | 4 ++-- ..._ConfirmAccountProviderView_Night_2_en.png | 4 ++-- ...eateaccount_CreateAccountView_Day_0_en.png | 4 ++-- ...eateaccount_CreateAccountView_Day_1_en.png | 4 ++-- ...eateaccount_CreateAccountView_Day_2_en.png | 4 ++-- ...eateaccount_CreateAccountView_Day_3_en.png | 4 ++-- ...teaccount_CreateAccountView_Night_0_en.png | 4 ++-- ...teaccount_CreateAccountView_Night_1_en.png | 4 ++-- ...teaccount_CreateAccountView_Night_2_en.png | 4 ++-- ...teaccount_CreateAccountView_Night_3_en.png | 4 ++-- ...ginpassword_LoginPasswordView_Day_0_en.png | 4 ++-- ...ginpassword_LoginPasswordView_Day_1_en.png | 4 ++-- ...ginpassword_LoginPasswordView_Day_2_en.png | 4 ++-- ...npassword_LoginPasswordView_Night_0_en.png | 4 ++-- ...npassword_LoginPasswordView_Night_1_en.png | 4 ++-- ...npassword_LoginPasswordView_Night_2_en.png | 4 ++-- ...ens.onboarding_OnBoardingView_Day_7_en.png | 4 ++-- ...s.onboarding_OnBoardingView_Night_7_en.png | 4 ++-- ...mation_QrCodeConfirmationView_Day_0_en.png | 4 ++-- ...mation_QrCodeConfirmationView_Day_1_en.png | 4 ++-- ...mation_QrCodeConfirmationView_Day_2_en.png | 4 ++-- ...tion_QrCodeConfirmationView_Night_0_en.png | 4 ++-- ...tion_QrCodeConfirmationView_Night_1_en.png | 4 ++-- ...tion_QrCodeConfirmationView_Night_2_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_0_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_1_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_2_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_3_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_4_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_5_en.png | 4 ++-- ....qrcode.error_QrCodeErrorView_Day_6_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_0_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_1_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_2_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_3_en.png | 2 +- ...rcode.error_QrCodeErrorView_Night_4_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_5_en.png | 4 ++-- ...rcode.error_QrCodeErrorView_Night_6_en.png | 4 ++-- ....qrcode.intro_QrCodeIntroView_Day_0_en.png | 4 ++-- ....qrcode.intro_QrCodeIntroView_Day_1_en.png | 4 ++-- ...rcode.intro_QrCodeIntroView_Night_0_en.png | 4 ++-- ...rcode.intro_QrCodeIntroView_Night_1_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_0_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_1_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_2_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_3_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_4_en.png | 4 ++-- ...ns.qrcode.scan_QrCodeScanView_Day_5_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_0_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_1_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_2_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_3_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_4_en.png | 4 ++-- ....qrcode.scan_QrCodeScanView_Night_5_en.png | 4 ++-- ...der_SearchAccountProviderView_Day_0_en.png | 4 ++-- ...der_SearchAccountProviderView_Day_1_en.png | 4 ++-- ...r_SearchAccountProviderView_Night_0_en.png | 4 ++-- ...r_SearchAccountProviderView_Night_1_en.png | 4 ++-- ....impl_AccountDeactivationView_Day_0_en.png | 4 ++-- ....impl_AccountDeactivationView_Day_1_en.png | 4 ++-- ....impl_AccountDeactivationView_Day_2_en.png | 4 ++-- ....impl_AccountDeactivationView_Day_3_en.png | 4 ++-- ....impl_AccountDeactivationView_Day_4_en.png | 4 ++-- ...mpl_AccountDeactivationView_Night_0_en.png | 4 ++-- ...mpl_AccountDeactivationView_Night_1_en.png | 4 ++-- ...mpl_AccountDeactivationView_Night_2_en.png | 4 ++-- ...mpl_AccountDeactivationView_Night_3_en.png | 4 ++-- ...mpl_AccountDeactivationView_Night_4_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_0_en.png | 4 ++-- ...tures.logout.impl_LogoutView_Day_10_en.png | 4 ++-- ...tures.logout.impl_LogoutView_Day_11_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_1_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_2_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_3_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_4_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_5_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_6_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_7_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_8_en.png | 4 ++-- ...atures.logout.impl_LogoutView_Day_9_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_0_en.png | 4 ++-- ...res.logout.impl_LogoutView_Night_10_en.png | 4 ++-- ...res.logout.impl_LogoutView_Night_11_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_1_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_2_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_3_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_4_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_5_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_6_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_7_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_8_en.png | 4 ++-- ...ures.logout.impl_LogoutView_Night_9_en.png | 4 ++-- ...onlist_ActionListViewContent_Day_10_en.png | 4 ++-- ...onlist_ActionListViewContent_Day_11_en.png | 4 ++-- ...onlist_ActionListViewContent_Day_12_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_2_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_3_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_4_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_5_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_6_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_7_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_8_en.png | 4 ++-- ...ionlist_ActionListViewContent_Day_9_en.png | 4 ++-- ...list_ActionListViewContent_Night_10_en.png | 2 +- ...list_ActionListViewContent_Night_11_en.png | 4 ++-- ...list_ActionListViewContent_Night_12_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_2_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_3_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_4_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_5_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_6_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_7_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_8_en.png | 4 ++-- ...nlist_ActionListViewContent_Night_9_en.png | 4 ++-- ...tachments.preview_AttachmentsView_0_en.png | 4 ++-- ...tachments.preview_AttachmentsView_1_en.png | 4 ++-- ...tachments.preview_AttachmentsView_2_en.png | 4 ++-- ...tachments.preview_AttachmentsView_3_en.png | 4 ++-- ...tachments.preview_AttachmentsView_4_en.png | 4 ++-- ...tachments.preview_AttachmentsView_5_en.png | 4 ++-- ...tachments.preview_AttachmentsView_6_en.png | 4 ++-- ...tachments.preview_AttachmentsView_7_en.png | 4 ++-- ...tachments.preview_AttachmentsView_8_en.png | 4 ++-- ...essagesViewWithIdentityChange_Day_0_en.png | 4 ++-- ...essagesViewWithIdentityChange_Day_1_en.png | 4 ++-- ...essagesViewWithIdentityChange_Day_2_en.png | 4 ++-- ...sagesViewWithIdentityChange_Night_0_en.png | 4 ++-- ...sagesViewWithIdentityChange_Night_1_en.png | 4 ++-- ...sagesViewWithIdentityChange_Night_2_en.png | 4 ++-- ...veVerifiedUserSendFailureView_Day_1_en.png | 4 ++-- ...veVerifiedUserSendFailureView_Day_2_en.png | 4 ++-- ...VerifiedUserSendFailureView_Night_1_en.png | 4 ++-- ...VerifiedUserSendFailureView_Night_2_en.png | 4 ++-- ...er_AttachmentSourcePickerMenu_Day_0_en.png | 4 ++-- ..._AttachmentSourcePickerMenu_Night_0_en.png | 4 ++-- ...composer_DisabledComposerView_Day_0_en.png | 4 ++-- ...mposer_DisabledComposerView_Night_0_en.png | 4 ++-- ...oser_MessageComposerViewVoice_Day_0_en.png | 4 ++-- ...er_MessageComposerViewVoice_Night_0_en.png | 4 ++-- ...ecomposer_MessageComposerView_Day_0_en.png | 4 ++-- ...omposer_MessageComposerView_Night_0_en.png | 4 ++-- ...d.list_PinnedMessagesListView_Day_0_en.png | 4 ++-- ...d.list_PinnedMessagesListView_Day_1_en.png | 4 ++-- ...d.list_PinnedMessagesListView_Day_2_en.png | 4 ++-- ...d.list_PinnedMessagesListView_Day_3_en.png | 4 ++-- ...list_PinnedMessagesListView_Night_0_en.png | 4 ++-- ...list_PinnedMessagesListView_Night_1_en.png | 4 ++-- ...list_PinnedMessagesListView_Night_2_en.png | 4 ++-- ...list_PinnedMessagesListView_Night_3_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_0_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_1_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_2_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_3_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_4_en.png | 4 ++-- ...impl.report_ReportMessageView_Day_5_en.png | 4 ++-- ...pl.report_ReportMessageView_Night_0_en.png | 2 +- ...pl.report_ReportMessageView_Night_1_en.png | 4 ++-- ...pl.report_ReportMessageView_Night_2_en.png | 4 ++-- ...pl.report_ReportMessageView_Night_3_en.png | 2 +- ...pl.report_ReportMessageView_Night_4_en.png | 4 ++-- ...pl.report_ReportMessageView_Night_5_en.png | 4 ++-- ...omreaction.picker_EmojiPicker_Day_0_en.png | 4 ++-- ...omreaction.picker_EmojiPicker_Day_1_en.png | 4 ++-- ...omreaction.picker_EmojiPicker_Day_2_en.png | 4 ++-- ...omreaction.picker_EmojiPicker_Day_3_en.png | 4 ++-- ...reaction.picker_EmojiPicker_Night_0_en.png | 4 ++-- ...reaction.picker_EmojiPicker_Night_1_en.png | 4 ++-- ...reaction.picker_EmojiPicker_Night_2_en.png | 4 ++-- ...reaction.picker_EmojiPicker_Night_3_en.png | 4 ++-- ...t_TimelineImageWithCaptionRow_Day_0_en.png | 4 ++-- ...TimelineImageWithCaptionRow_Night_0_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_0_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_1_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_2_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_3_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_4_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_5_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_6_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_7_en.png | 4 ++-- ...ent_TimelineItemEncryptedView_Day_8_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_0_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_1_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_2_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_3_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_4_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_5_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_6_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_7_en.png | 4 ++-- ...t_TimelineItemEncryptedView_Night_8_en.png | 4 ++-- ...ts.event_TimelineItemFileView_Day_0_en.png | 4 ++-- ...ts.event_TimelineItemFileView_Day_1_en.png | 4 ++-- ...ts.event_TimelineItemFileView_Day_2_en.png | 4 ++-- ...ts.event_TimelineItemFileView_Day_3_en.png | 4 ++-- ...ts.event_TimelineItemFileView_Day_4_en.png | 4 ++-- ....event_TimelineItemFileView_Night_0_en.png | 4 ++-- ....event_TimelineItemFileView_Night_1_en.png | 4 ++-- ....event_TimelineItemFileView_Night_2_en.png | 4 ++-- ....event_TimelineItemFileView_Night_3_en.png | 4 ++-- ....event_TimelineItemFileView_Night_4_en.png | 4 ++-- ...t_TimelineItemInformativeView_Day_0_en.png | 4 ++-- ...TimelineItemInformativeView_Night_0_en.png | 4 ++-- ...elineItemLegacyCallInviteView_Day_0_en.png | 4 ++-- ...ineItemLegacyCallInviteView_Night_0_en.png | 4 ++-- ...ts.event_TimelineItemPollView_Day_0_en.png | 4 ++-- ...ts.event_TimelineItemPollView_Day_1_en.png | 4 ++-- ...ts.event_TimelineItemPollView_Day_2_en.png | 4 ++-- ...ts.event_TimelineItemPollView_Day_3_en.png | 4 ++-- ....event_TimelineItemPollView_Night_0_en.png | 4 ++-- ....event_TimelineItemPollView_Night_1_en.png | 4 ++-- ....event_TimelineItemPollView_Night_2_en.png | 4 ++-- ....event_TimelineItemPollView_Night_3_en.png | 4 ++-- ...vent_TimelineItemRedactedView_Day_0_en.png | 4 ++-- ...nt_TimelineItemRedactedView_Night_0_en.png | 4 ++-- ...event_TimelineItemUnknownView_Day_0_en.png | 4 ++-- ...ent_TimelineItemUnknownView_Night_0_en.png | 4 ++-- ...s.event_TimelineItemVideoView_Day_0_en.png | 4 ++-- ...s.event_TimelineItemVideoView_Day_1_en.png | 2 +- ...s.event_TimelineItemVideoView_Day_2_en.png | 4 ++-- ...s.event_TimelineItemVideoView_Day_3_en.png | 4 ++-- ...event_TimelineItemVideoView_Night_0_en.png | 4 ++-- ...event_TimelineItemVideoView_Night_1_en.png | 2 +- ...event_TimelineItemVideoView_Night_2_en.png | 4 ++-- ...event_TimelineItemVideoView_Night_3_en.png | 4 ++-- ..._TimelineItemVoiceViewUnified_Day_0_en.png | 4 ++-- ...imelineItemVoiceViewUnified_Night_0_en.png | 4 ++-- ....event_TimelineItemVoiceView_Day_11_en.png | 4 ++-- ....event_TimelineItemVoiceView_Day_12_en.png | 4 ++-- ....event_TimelineItemVoiceView_Day_14_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_1_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_2_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_4_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_6_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_7_en.png | 4 ++-- ...s.event_TimelineItemVoiceView_Day_9_en.png | 4 ++-- ...vent_TimelineItemVoiceView_Night_11_en.png | 4 ++-- ...vent_TimelineItemVoiceView_Night_12_en.png | 4 ++-- ...vent_TimelineItemVoiceView_Night_14_en.png | 4 ++-- ...event_TimelineItemVoiceView_Night_1_en.png | 4 ++-- ...event_TimelineItemVoiceView_Night_2_en.png | 4 ++-- ...event_TimelineItemVoiceView_Night_4_en.png | 2 +- ...event_TimelineItemVoiceView_Night_6_en.png | 4 ++-- ...event_TimelineItemVoiceView_Night_7_en.png | 4 ++-- ...event_TimelineItemVoiceView_Night_9_en.png | 4 ++-- ...t_TimelineVideoWithCaptionRow_Day_0_en.png | 4 ++-- ...TimelineVideoWithCaptionRow_Night_0_en.png | 4 ++-- ...ponents.group_GroupHeaderView_Day_0_en.png | 4 ++-- ...nents.group_GroupHeaderView_Night_0_en.png | 4 ++-- ...t_TimelineItemReadReceiptView_Day_0_en.png | 4 ++-- ...t_TimelineItemReadReceiptView_Day_1_en.png | 4 ++-- ...t_TimelineItemReadReceiptView_Day_2_en.png | 4 ++-- ...TimelineItemReadReceiptView_Night_0_en.png | 4 ++-- ...TimelineItemReadReceiptView_Night_1_en.png | 4 ++-- ...TimelineItemReadReceiptView_Night_2_en.png | 4 ++-- ...eline.components_CallMenuItem_Day_0_en.png | 4 ++-- ...eline.components_CallMenuItem_Day_1_en.png | 4 ++-- ...eline.components_CallMenuItem_Day_2_en.png | 4 ++-- ...eline.components_CallMenuItem_Day_3_en.png | 4 ++-- ...ine.components_CallMenuItem_Night_0_en.png | 4 ++-- ...ine.components_CallMenuItem_Night_1_en.png | 4 ++-- ...ine.components_CallMenuItem_Night_2_en.png | 4 ++-- ....components_MessageShieldView_Day_0_en.png | 4 ++-- ...omponents_MessageShieldView_Night_0_en.png | 4 ++-- ...nts_MessagesReactionButtonAdd_Day_0_en.png | 4 ++-- ...s_MessagesReactionButtonAdd_Night_0_en.png | 4 ++-- ...omponents_ReplySwipeIndicator_Day_0_en.png | 4 ++-- ...ponents_ReplySwipeIndicator_Night_0_en.png | 4 ++-- ...ts_TimelineEventTimestampView_Day_2_en.png | 4 ++-- ...ts_TimelineEventTimestampView_Day_4_en.png | 4 ++-- ...ts_TimelineEventTimestampView_Day_5_en.png | 4 ++-- ...ts_TimelineEventTimestampView_Day_6_en.png | 4 ++-- ..._TimelineEventTimestampView_Night_2_en.png | 4 ++-- ..._TimelineEventTimestampView_Night_4_en.png | 4 ++-- ..._TimelineEventTimestampView_Night_5_en.png | 4 ++-- ..._TimelineEventTimestampView_Night_6_en.png | 4 ++-- ...ts_TimelineItemCallNotifyView_Day_0_en.png | 4 ++-- ..._TimelineItemCallNotifyView_Night_0_en.png | 4 ++-- ...lineItemEventRowForDirectRoom_Day_0_en.png | 4 ++-- ...neItemEventRowForDirectRoom_Night_0_en.png | 4 ++-- ..._TimelineItemEventRowLongSenderName_en.png | 4 ++-- ...ts_TimelineItemEventRowShield_Day_0_en.png | 4 ++-- ..._TimelineItemEventRowShield_Night_0_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_1_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_2_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_4_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_5_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_6_en.png | 4 ++-- ...TimelineItemEventRowTimestamp_Day_7_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_1_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_2_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_4_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_5_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_6_en.png | 4 ++-- ...melineItemEventRowTimestamp_Night_7_en.png | 4 ++-- ...nents_TimelineItemEventRowUtd_Day_0_en.png | 4 ++-- ...nts_TimelineItemEventRowUtd_Night_0_en.png | 4 ++-- ...ItemEventRowWithManyReactions_Day_0_en.png | 4 ++-- ...emEventRowWithManyReactions_Night_0_en.png | 4 ++-- ...ts_TimelineItemEventRowWithRR_Day_0_en.png | 4 ++-- ...ts_TimelineItemEventRowWithRR_Day_1_en.png | 4 ++-- ..._TimelineItemEventRowWithRR_Night_0_en.png | 4 ++-- ..._TimelineItemEventRowWithRR_Night_1_en.png | 4 ++-- ...mEventRowWithReplyInformative_Day_0_en.png | 4 ++-- ...mEventRowWithReplyInformative_Day_1_en.png | 4 ++-- ...ventRowWithReplyInformative_Night_0_en.png | 4 ++-- ...ventRowWithReplyInformative_Night_1_en.png | 4 ++-- ...imelineItemEventRowWithReply_Day_11_en.png | 4 ++-- ...TimelineItemEventRowWithReply_Day_2_en.png | 4 ++-- ...TimelineItemEventRowWithReply_Day_4_en.png | 4 ++-- ...TimelineItemEventRowWithReply_Day_7_en.png | 4 ++-- ...elineItemEventRowWithReply_Night_11_en.png | 4 ++-- ...melineItemEventRowWithReply_Night_2_en.png | 4 ++-- ...melineItemEventRowWithReply_Night_4_en.png | 4 ++-- ...melineItemEventRowWithReply_Night_7_en.png | 4 ++-- ...ItemEventRowWithThreadSummary_Day_0_en.png | 4 ++-- ...emEventRowWithThreadSummary_Night_0_en.png | 4 ++-- ...mponents_TimelineItemEventRow_Day_0_en.png | 4 ++-- ...onents_TimelineItemEventRow_Night_0_en.png | 4 ++-- ...nts_TimelineItemEventTimestampBelow_en.png | 4 ++-- ...oupedEventsRowContentCollapse_Day_0_en.png | 4 ++-- ...pedEventsRowContentCollapse_Night_0_en.png | 4 ++-- ...oupedEventsRowContentExpanded_Day_0_en.png | 4 ++-- ...pedEventsRowContentExpanded_Night_0_en.png | 4 ++-- ...s_TimelineItemReactionsLayout_Day_0_en.png | 4 ++-- ...TimelineItemReactionsLayout_Night_0_en.png | 4 ++-- ..._TimelineItemReactionsViewFew_Day_0_en.png | 2 +- ...imelineItemReactionsViewFew_Night_0_en.png | 4 ++-- ...lineItemReactionsViewIncoming_Day_0_en.png | 4 ++-- ...neItemReactionsViewIncoming_Night_0_en.png | 4 ++-- ...lineItemReactionsViewOutgoing_Day_0_en.png | 4 ++-- ...neItemReactionsViewOutgoing_Night_0_en.png | 4 ++-- ...nts_TimelineItemReactionsView_Day_0_en.png | 4 ++-- ...s_TimelineItemReactionsView_Night_0_en.png | 4 ++-- ...line.debug_EventDebugInfoView_Day_0_en.png | 4 ++-- ...ne.debug_EventDebugInfoView_Night_0_en.png | 4 ++-- ...ine_TimelineViewMessageShield_Day_0_en.png | 4 ++-- ...e_TimelineViewMessageShield_Night_0_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_0_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_10_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_11_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_12_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_13_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_14_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_15_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_16_en.png | 4 ++-- ...s.impl.timeline_TimelineView_Day_17_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_1_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_2_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_3_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_4_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_5_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_6_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_7_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_8_en.png | 4 ++-- ...es.impl.timeline_TimelineView_Day_9_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_0_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_10_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_11_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_12_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_13_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_14_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_15_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_16_en.png | 4 ++-- ...impl.timeline_TimelineView_Night_17_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_1_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_2_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_3_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_4_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_5_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_6_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_7_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_8_en.png | 4 ++-- ....impl.timeline_TimelineView_Night_9_en.png | 4 ++-- ...pl.topbars_MessagesViewTopBar_Day_0_en.png | 4 ++-- ....topbars_MessagesViewTopBar_Night_0_en.png | 4 ++-- ...ges.impl.topbars_ThreadTopBar_Day_0_en.png | 4 ++-- ...s.impl.topbars_ThreadTopBar_Night_0_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_0_en.png | 4 ++-- ...s.messages.impl_MessagesView_Day_10_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_1_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_2_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_3_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_4_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_5_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_6_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_7_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_8_en.png | 4 ++-- ...es.messages.impl_MessagesView_Day_9_en.png | 4 ++-- ....messages.impl_MessagesView_Night_0_en.png | 4 ++-- ...messages.impl_MessagesView_Night_10_en.png | 4 ++-- ....messages.impl_MessagesView_Night_1_en.png | 4 ++-- ....messages.impl_MessagesView_Night_2_en.png | 4 ++-- ....messages.impl_MessagesView_Night_3_en.png | 4 ++-- ....messages.impl_MessagesView_Night_4_en.png | 4 ++-- ....messages.impl_MessagesView_Night_5_en.png | 4 ++-- ....messages.impl_MessagesView_Night_6_en.png | 4 ++-- ....messages.impl_MessagesView_Night_7_en.png | 4 ++-- ....messages.impl_MessagesView_Night_8_en.png | 4 ++-- ....messages.impl_MessagesView_Night_9_en.png | 4 ++-- ....ui_ConnectivityIndicatorView_Day_0_en.png | 4 ++-- ...i_ConnectivityIndicatorView_Night_0_en.png | 4 ++-- ...tworkmonitor.api.ui_Indicator_Day_0_en.png | 4 ++-- ...orkmonitor.api.ui_Indicator_Night_0_en.png | 4 ++-- ...nswerViewDisclosedNotSelected_Day_0_en.png | 4 ++-- ...werViewDisclosedNotSelected_Night_0_en.png | 4 ++-- ...llAnswerViewDisclosedSelected_Day_0_en.png | 2 +- ...AnswerViewDisclosedSelected_Night_0_en.png | 4 ++-- ...t_PollAnswerViewEndedSelected_Day_0_en.png | 4 ++-- ...PollAnswerViewEndedSelected_Night_0_en.png | 4 ++-- ...werViewEndedWinnerNotSelected_Day_0_en.png | 4 ++-- ...rViewEndedWinnerNotSelected_Night_0_en.png | 4 ++-- ...AnswerViewEndedWinnerSelected_Day_0_en.png | 4 ++-- ...swerViewEndedWinnerSelected_Night_0_en.png | 4 ++-- ...werViewUndisclosedNotSelected_Day_0_en.png | 4 ++-- ...rViewUndisclosedNotSelected_Night_0_en.png | 4 ++-- ...AnswerViewUndisclosedSelected_Day_0_en.png | 2 +- ...swerViewUndisclosedSelected_Night_0_en.png | 4 ++-- ...ollContentViewCreatorEditable_Day_0_en.png | 4 ++-- ...lContentViewCreatorEditable_Night_0_en.png | 4 ++-- ...t_PollContentViewCreatorEnded_Day_0_en.png | 4 ++-- ...PollContentViewCreatorEnded_Night_0_en.png | 4 ++-- ...ontent_PollContentViewCreator_Day_0_en.png | 4 ++-- ...tent_PollContentViewCreator_Night_0_en.png | 4 ++-- ...tent_PollContentViewDisclosed_Day_0_en.png | 4 ++-- ...nt_PollContentViewDisclosed_Night_0_en.png | 4 ++-- ...lcontent_PollContentViewEnded_Day_0_en.png | 4 ++-- ...ontent_PollContentViewEnded_Night_0_en.png | 4 ++-- ...nt_PollContentViewUndisclosed_Day_0_en.png | 4 ++-- ..._PollContentViewUndisclosed_Night_0_en.png | 4 ++-- ...api.pollcontent_PollTitleView_Day_0_en.png | 4 ++-- ...i.pollcontent_PollTitleView_Night_0_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_0_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_1_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_2_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_3_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_4_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_5_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_6_en.png | 4 ++-- ...ll.impl.create_CreatePollView_Day_7_en.png | 4 ++-- ....impl.create_CreatePollView_Night_0_en.png | 4 ++-- ....impl.create_CreatePollView_Night_1_en.png | 4 ++-- ....impl.create_CreatePollView_Night_2_en.png | 4 ++-- ....impl.create_CreatePollView_Night_3_en.png | 4 ++-- ....impl.create_CreatePollView_Night_4_en.png | 4 ++-- ....impl.create_CreatePollView_Night_5_en.png | 4 ++-- ....impl.create_CreatePollView_Night_6_en.png | 4 ++-- ....impl.create_CreatePollView_Night_7_en.png | 4 ++-- ....impl.history_PollHistoryView_Day_0_en.png | 4 ++-- ....impl.history_PollHistoryView_Day_1_en.png | 4 ++-- ....impl.history_PollHistoryView_Day_2_en.png | 4 ++-- ....impl.history_PollHistoryView_Day_3_en.png | 4 ++-- ....impl.history_PollHistoryView_Day_4_en.png | 4 ++-- ...mpl.history_PollHistoryView_Night_0_en.png | 4 ++-- ...mpl.history_PollHistoryView_Night_1_en.png | 4 ++-- ...mpl.history_PollHistoryView_Night_2_en.png | 4 ++-- ...mpl.history_PollHistoryView_Night_3_en.png | 4 ++-- ...mpl.history_PollHistoryView_Night_4_en.png | 4 ++-- ...ferences.impl.about_AboutView_Day_0_en.png | 4 ++-- ...rences.impl.about_AboutView_Night_0_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_0_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_1_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_2_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_3_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_4_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_5_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_6_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_7_en.png | 4 ++-- ...advanced_AdvancedSettingsViewDark_8_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_0_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_1_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_2_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_3_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_4_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_5_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_6_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_7_en.png | 4 ++-- ...dvanced_AdvancedSettingsViewLight_8_en.png | 4 ++-- ...alytics_AnalyticsSettingsView_Day_0_en.png | 4 ++-- ...ytics_AnalyticsSettingsView_Night_0_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_0_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_1_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_2_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_3_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_4_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_5_en.png | 4 ++-- ...blockedusers_BlockedUsersView_Day_6_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_0_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_1_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_2_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_3_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_4_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_5_en.png | 4 ++-- ...ockedusers_BlockedUsersView_Night_6_en.png | 4 ++-- ...veloper_DeveloperSettingsView_Day_0_en.png | 4 ++-- ...veloper_DeveloperSettingsView_Day_1_en.png | 4 ++-- ...veloper_DeveloperSettingsView_Day_2_en.png | 4 ++-- ...loper_DeveloperSettingsView_Night_0_en.png | 4 ++-- ...loper_DeveloperSettingsView_Night_1_en.png | 4 ++-- ...loper_DeveloperSettingsView_Night_2_en.png | 4 ++-- ...references.impl.labs_LabsView_Day_0_en.png | 4 ++-- ...references.impl.labs_LabsView_Day_1_en.png | 4 ++-- ...ferences.impl.labs_LabsView_Night_0_en.png | 4 ++-- ...ferences.impl.labs_LabsView_Night_1_en.png | 2 +- ...efaultNotificationSettingView_Day_0_en.png | 4 ++-- ...efaultNotificationSettingView_Day_1_en.png | 4 ++-- ...efaultNotificationSettingView_Day_2_en.png | 4 ++-- ...efaultNotificationSettingView_Day_3_en.png | 4 ++-- ...efaultNotificationSettingView_Day_4_en.png | 4 ++-- ...aultNotificationSettingView_Night_0_en.png | 4 ++-- ...aultNotificationSettingView_Night_1_en.png | 4 ++-- ...aultNotificationSettingView_Night_2_en.png | 4 ++-- ...aultNotificationSettingView_Night_3_en.png | 4 ++-- ...aultNotificationSettingView_Night_4_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_0_en.png | 4 ++-- ...ons_NotificationSettingsView_Day_10_en.png | 4 ++-- ...ons_NotificationSettingsView_Day_11_en.png | 4 ++-- ...ons_NotificationSettingsView_Day_12_en.png | 4 ++-- ...ons_NotificationSettingsView_Day_13_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_1_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_2_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_3_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_4_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_5_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_6_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_7_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_8_en.png | 4 ++-- ...ions_NotificationSettingsView_Day_9_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_0_en.png | 4 ++-- ...s_NotificationSettingsView_Night_10_en.png | 4 ++-- ...s_NotificationSettingsView_Night_11_en.png | 4 ++-- ...s_NotificationSettingsView_Night_12_en.png | 4 ++-- ...s_NotificationSettingsView_Night_13_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_1_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_2_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_3_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_4_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_5_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_6_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_7_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_8_en.png | 4 ++-- ...ns_NotificationSettingsView_Night_9_en.png | 4 ++-- ...impl.root_MultiAccountSection_Day_0_en.png | 4 ++-- ...pl.root_MultiAccountSection_Night_0_en.png | 4 ++-- ...impl.root_PreferencesRootViewDark_0_en.png | 4 ++-- ...impl.root_PreferencesRootViewDark_1_en.png | 4 ++-- ...mpl.root_PreferencesRootViewLight_0_en.png | 4 ++-- ...mpl.root_PreferencesRootViewLight_1_en.png | 4 ++-- ...itprofile_EditUserProfileView_Day_0_en.png | 4 ++-- ...itprofile_EditUserProfileView_Day_1_en.png | 4 ++-- ...profile_EditUserProfileView_Night_0_en.png | 4 ++-- ...profile_EditUserProfileView_Night_1_en.png | 4 ++-- ....impl.bugreport_BugReportView_Day_0_en.png | 4 ++-- ....impl.bugreport_BugReportView_Day_1_en.png | 4 ++-- ....impl.bugreport_BugReportView_Day_2_en.png | 4 ++-- ....impl.bugreport_BugReportView_Day_3_en.png | 4 ++-- ....impl.bugreport_BugReportView_Day_4_en.png | 4 ++-- ...mpl.bugreport_BugReportView_Night_0_en.png | 4 ++-- ...mpl.bugreport_BugReportView_Night_1_en.png | 4 ++-- ...mpl.bugreport_BugReportView_Night_2_en.png | 4 ++-- ...mpl.bugreport_BugReportView_Night_3_en.png | 4 ++-- ...mpl.bugreport_BugReportView_Night_4_en.png | 4 ++-- ...eportroom.impl_ReportRoomView_Day_0_en.png | 4 ++-- ...eportroom.impl_ReportRoomView_Day_1_en.png | 4 ++-- ...eportroom.impl_ReportRoomView_Day_2_en.png | 4 ++-- ...eportroom.impl_ReportRoomView_Day_3_en.png | 4 ++-- ...eportroom.impl_ReportRoomView_Day_4_en.png | 4 ++-- ...ortroom.impl_ReportRoomView_Night_0_en.png | 4 ++-- ...ortroom.impl_ReportRoomView_Night_1_en.png | 4 ++-- ...ortroom.impl_ReportRoomView_Night_2_en.png | 4 ++-- ...ortroom.impl_ReportRoomView_Night_3_en.png | 4 ++-- ...ortroom.impl_ReportRoomView_Night_4_en.png | 4 ++-- ...er.impl_RoomAliasResolverView_Day_0_en.png | 4 ++-- ...er.impl_RoomAliasResolverView_Day_1_en.png | 4 ++-- ...er.impl_RoomAliasResolverView_Day_2_en.png | 4 ++-- ....impl_RoomAliasResolverView_Night_0_en.png | 4 ++-- ....impl_RoomAliasResolverView_Night_1_en.png | 4 ++-- ....impl_RoomAliasResolverView_Night_2_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_0_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_1_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_2_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_3_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_4_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_5_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_6_en.png | 4 ++-- ...impl.edit_RoomDetailsEditView_Day_7_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_0_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_1_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_2_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_3_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_4_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_5_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_6_en.png | 4 ++-- ...pl.edit_RoomDetailsEditView_Night_7_en.png | 4 ++-- ....invite_RoomInviteMembersView_Day_0_en.png | 4 ++-- ....invite_RoomInviteMembersView_Day_1_en.png | 4 ++-- ....invite_RoomInviteMembersView_Day_2_en.png | 4 ++-- ....invite_RoomInviteMembersView_Day_3_en.png | 4 ++-- ...nvite_RoomInviteMembersView_Night_0_en.png | 4 ++-- ...nvite_RoomInviteMembersView_Night_1_en.png | 4 ++-- ...nvite_RoomInviteMembersView_Night_2_en.png | 4 ++-- ...nvite_RoomInviteMembersView_Night_3_en.png | 4 ++-- ...bers_RoomMemberListViewBanned_Day_0_en.png | 4 ++-- ...bers_RoomMemberListViewBanned_Day_1_en.png | 4 ++-- ...bers_RoomMemberListViewBanned_Day_2_en.png | 4 ++-- ...rs_RoomMemberListViewBanned_Night_0_en.png | 4 ++-- ...rs_RoomMemberListViewBanned_Night_1_en.png | 4 ++-- ...rs_RoomMemberListViewBanned_Night_2_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_0_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_1_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_2_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_3_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_4_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_5_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_6_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_7_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_8_en.png | 4 ++-- ...pl.members_RoomMemberListView_Day_9_en.png | 4 ++-- ....members_RoomMemberListView_Night_0_en.png | 4 ++-- ....members_RoomMemberListView_Night_1_en.png | 4 ++-- ....members_RoomMemberListView_Night_2_en.png | 4 ++-- ....members_RoomMemberListView_Night_3_en.png | 4 ++-- ....members_RoomMemberListView_Night_4_en.png | 4 ++-- ....members_RoomMemberListView_Night_5_en.png | 4 ++-- ....members_RoomMemberListView_Night_6_en.png | 4 ++-- ....members_RoomMemberListView_Night_7_en.png | 4 ++-- ....members_RoomMemberListView_Night_8_en.png | 4 ++-- ....members_RoomMemberListView_Night_9_en.png | 2 +- ..._RoomNotificationSettingsView_Day_0_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_1_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_2_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_3_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_4_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_5_en.png | 4 ++-- ..._RoomNotificationSettingsView_Day_6_en.png | 4 ++-- ...oomNotificationSettingsView_Night_0_en.png | 4 ++-- ...oomNotificationSettingsView_Night_1_en.png | 4 ++-- ...oomNotificationSettingsView_Night_2_en.png | 4 ++-- ...oomNotificationSettingsView_Night_3_en.png | 4 ++-- ...oomNotificationSettingsView_Night_4_en.png | 4 ++-- ...oomNotificationSettingsView_Night_5_en.png | 4 ++-- ...oomNotificationSettingsView_Night_6_en.png | 4 ++-- ...dRoomNotificationSettingsView_Day_0_en.png | 4 ++-- ...oomNotificationSettingsView_Night_0_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_0_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_1_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_2_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_3_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_4_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_5_en.png | 4 ++-- ...ons_ChangeRoomPermissionsView_Day_6_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_0_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_1_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_2_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_3_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_4_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_5_en.png | 4 ++-- ...s_ChangeRoomPermissionsView_Night_6_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_0_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_1_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_2_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_3_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_4_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_5_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_6_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_7_en.png | 4 ++-- ...sions_RolesAndPermissionsView_Day_8_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_0_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_1_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_2_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_3_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_4_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_5_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_6_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_7_en.png | 4 ++-- ...ons_RolesAndPermissionsView_Night_8_en.png | 4 ++-- ...omaddress_EditRoomAddressView_Day_0_en.png | 4 ++-- ...omaddress_EditRoomAddressView_Day_1_en.png | 4 ++-- ...omaddress_EditRoomAddressView_Day_2_en.png | 4 ++-- ...omaddress_EditRoomAddressView_Day_3_en.png | 4 ++-- ...omaddress_EditRoomAddressView_Day_4_en.png | 4 ++-- ...address_EditRoomAddressView_Night_0_en.png | 4 ++-- ...address_EditRoomAddressView_Night_1_en.png | 4 ++-- ...address_EditRoomAddressView_Night_2_en.png | 4 ++-- ...address_EditRoomAddressView_Night_3_en.png | 4 ++-- ...address_EditRoomAddressView_Night_4_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_0_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_1_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_2_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_3_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_4_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_5_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_6_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_7_en.png | 4 ++-- ...rivacy_SecurityAndPrivacyViewDark_8_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_0_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_1_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_2_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_3_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_4_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_5_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_6_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_7_en.png | 4 ++-- ...ivacy_SecurityAndPrivacyViewLight_8_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_0_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_10_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_11_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_12_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_13_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_14_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_15_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_16_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_17_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_18_en.png | 4 ++-- ...roomdetails.impl_RoomDetailsDark_19_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_1_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_2_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_3_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_4_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_5_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_6_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_7_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_8_en.png | 4 ++-- ....roomdetails.impl_RoomDetailsDark_9_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_0_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_10_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_11_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_12_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_13_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_14_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_15_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_16_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_17_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_18_en.png | 4 ++-- ...res.roomdetails.impl_RoomDetails_19_en.png | 2 +- ...ures.roomdetails.impl_RoomDetails_1_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_2_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_3_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_4_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_5_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_6_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_7_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_8_en.png | 4 ++-- ...ures.roomdetails.impl_RoomDetails_9_en.png | 4 ++-- ...y.impl.root_RoomDirectoryView_Day_0_en.png | 4 ++-- ...y.impl.root_RoomDirectoryView_Day_1_en.png | 4 ++-- ...y.impl.root_RoomDirectoryView_Day_2_en.png | 4 ++-- ...impl.root_RoomDirectoryView_Night_0_en.png | 4 ++-- ...impl.root_RoomDirectoryView_Night_1_en.png | 4 ++-- ...impl.root_RoomDirectoryView_Night_2_en.png | 4 ++-- ...impl_RoomMemberModerationView_Day_0_en.png | 4 ++-- ...impl_RoomMemberModerationView_Day_1_en.png | 4 ++-- ...impl_RoomMemberModerationView_Day_2_en.png | 4 ++-- ...impl_RoomMemberModerationView_Day_3_en.png | 4 ++-- ...pl_RoomMemberModerationView_Night_0_en.png | 4 ++-- ...pl_RoomMemberModerationView_Night_1_en.png | 4 ++-- ...pl_RoomMemberModerationView_Night_2_en.png | 4 ++-- ...pl_RoomMemberModerationView_Night_3_en.png | 4 ++-- ...sable_SecureBackupDisableView_Day_0_en.png | 4 ++-- ...sable_SecureBackupDisableView_Day_1_en.png | 4 ++-- ...sable_SecureBackupDisableView_Day_2_en.png | 4 ++-- ...sable_SecureBackupDisableView_Day_3_en.png | 4 ++-- ...ble_SecureBackupDisableView_Night_0_en.png | 4 ++-- ...ble_SecureBackupDisableView_Night_1_en.png | 4 ++-- ...ble_SecureBackupDisableView_Night_2_en.png | 4 ++-- ...ble_SecureBackupDisableView_Night_3_en.png | 4 ++-- ...ureBackupEnterRecoveryKeyView_Day_0_en.png | 4 ++-- ...ureBackupEnterRecoveryKeyView_Day_1_en.png | 4 ++-- ...ureBackupEnterRecoveryKeyView_Day_2_en.png | 4 ++-- ...ureBackupEnterRecoveryKeyView_Day_3_en.png | 4 ++-- ...ureBackupEnterRecoveryKeyView_Day_4_en.png | 4 ++-- ...eBackupEnterRecoveryKeyView_Night_0_en.png | 4 ++-- ...eBackupEnterRecoveryKeyView_Night_1_en.png | 4 ++-- ...eBackupEnterRecoveryKeyView_Night_2_en.png | 4 ++-- ...eBackupEnterRecoveryKeyView_Night_3_en.png | 4 ++-- ...eBackupEnterRecoveryKeyView_Night_4_en.png | 4 ++-- ...ord_ResetIdentityPasswordView_Day_0_en.png | 4 ++-- ...ord_ResetIdentityPasswordView_Day_1_en.png | 4 ++-- ...ord_ResetIdentityPasswordView_Day_2_en.png | 4 ++-- ...ord_ResetIdentityPasswordView_Day_3_en.png | 4 ++-- ...d_ResetIdentityPasswordView_Night_0_en.png | 4 ++-- ...d_ResetIdentityPasswordView_Night_1_en.png | 4 ++-- ...d_ResetIdentityPasswordView_Night_2_en.png | 4 ++-- ...d_ResetIdentityPasswordView_Night_3_en.png | 4 ++-- ...et.root_ResetIdentityRootView_Day_0_en.png | 4 ++-- ...et.root_ResetIdentityRootView_Day_1_en.png | 4 ++-- ....root_ResetIdentityRootView_Night_0_en.png | 4 ++-- ....root_ResetIdentityRootView_Night_1_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_0_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_10_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_11_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_12_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_13_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_14_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_15_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_16_en.png | 4 ++-- ...pl.root_SecureBackupRootView_Day_17_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_1_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_2_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_3_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_4_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_5_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_6_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_7_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_8_en.png | 4 ++-- ...mpl.root_SecureBackupRootView_Day_9_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_0_en.png | 4 ++-- ....root_SecureBackupRootView_Night_10_en.png | 4 ++-- ....root_SecureBackupRootView_Night_11_en.png | 4 ++-- ....root_SecureBackupRootView_Night_12_en.png | 4 ++-- ....root_SecureBackupRootView_Night_13_en.png | 4 ++-- ....root_SecureBackupRootView_Night_14_en.png | 4 ++-- ....root_SecureBackupRootView_Night_15_en.png | 4 ++-- ....root_SecureBackupRootView_Night_16_en.png | 4 ++-- ....root_SecureBackupRootView_Night_17_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_1_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_2_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_3_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_4_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_5_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_6_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_7_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_8_en.png | 4 ++-- ...l.root_SecureBackupRootView_Night_9_en.png | 4 ++-- ....setup.views_RecoveryKeyView_Day_10_en.png | 4 ++-- ....setup.views_RecoveryKeyView_Day_11_en.png | 4 ++-- ....setup.views_RecoveryKeyView_Day_12_en.png | 4 ++-- ....setup.views_RecoveryKeyView_Day_13_en.png | 4 ++-- ....setup.views_RecoveryKeyView_Day_14_en.png | 4 ++-- ...l.setup.views_RecoveryKeyView_Day_8_en.png | 4 ++-- ...l.setup.views_RecoveryKeyView_Day_9_en.png | 4 ++-- ...etup.views_RecoveryKeyView_Night_10_en.png | 4 ++-- ...etup.views_RecoveryKeyView_Night_11_en.png | 4 ++-- ...etup.views_RecoveryKeyView_Night_12_en.png | 4 ++-- ...etup.views_RecoveryKeyView_Night_13_en.png | 4 ++-- ...etup.views_RecoveryKeyView_Night_14_en.png | 4 ++-- ...setup.views_RecoveryKeyView_Night_8_en.png | 4 ++-- ...setup.views_RecoveryKeyView_Night_9_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_0_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_1_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_2_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_3_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_4_en.png | 4 ++-- ...p_SecureBackupSetupViewChange_Day_5_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_0_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_1_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_2_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_3_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_4_en.png | 4 ++-- ...SecureBackupSetupViewChange_Night_5_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_0_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_1_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_2_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_3_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_4_en.png | 4 ++-- ...l.setup_SecureBackupSetupView_Day_5_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_0_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_1_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_2_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_3_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_4_en.png | 4 ++-- ...setup_SecureBackupSetupView_Night_5_en.png | 4 ++-- ....signedout.impl_SignedOutView_Day_0_en.png | 4 ++-- ...ignedout.impl_SignedOutView_Night_0_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_0_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_1_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_2_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_3_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_4_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_5_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_6_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_7_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_8_en.png | 4 ++-- ...ace.impl.leave_LeaveSpaceView_Day_9_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_0_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_1_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_2_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_3_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_4_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_5_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_6_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_7_en.png | 4 ++-- ...e.impl.leave_LeaveSpaceView_Night_8_en.png | 2 +- ...e.impl.leave_LeaveSpaceView_Night_9_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_0_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_1_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_2_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_3_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_4_en.png | 4 ++-- ...res.space.impl.root_SpaceView_Day_5_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_0_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_1_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_2_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_3_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_4_en.png | 4 ++-- ...s.space.impl.root_SpaceView_Night_5_en.png | 4 ++-- ...nents_SearchMultipleUsersResultItem_en.png | 4 ++-- ...mponents_SearchSingleUserResultItem_en.png | 4 ++-- ....impl.components_UserListView_Day_0_en.png | 4 ++-- ....impl.components_UserListView_Day_1_en.png | 4 ++-- ....impl.components_UserListView_Day_2_en.png | 4 ++-- ....impl.components_UserListView_Day_3_en.png | 4 ++-- ....impl.components_UserListView_Day_4_en.png | 4 ++-- ....impl.components_UserListView_Day_5_en.png | 4 ++-- ....impl.components_UserListView_Day_6_en.png | 4 ++-- ....impl.components_UserListView_Day_7_en.png | 4 ++-- ....impl.components_UserListView_Day_8_en.png | 4 ++-- ....impl.components_UserListView_Day_9_en.png | 4 ++-- ...mpl.components_UserListView_Night_0_en.png | 4 ++-- ...mpl.components_UserListView_Night_1_en.png | 4 ++-- ...mpl.components_UserListView_Night_2_en.png | 4 ++-- ...mpl.components_UserListView_Night_3_en.png | 4 ++-- ...mpl.components_UserListView_Night_4_en.png | 4 ++-- ...mpl.components_UserListView_Night_5_en.png | 4 ++-- ...mpl.components_UserListView_Night_6_en.png | 4 ++-- ...mpl.components_UserListView_Night_7_en.png | 4 ++-- ...mpl.components_UserListView_Night_8_en.png | 4 ++-- ...mpl.components_UserListView_Night_9_en.png | 4 ++-- ...address_JoinRoomByAddressView_Day_2_en.png | 4 ++-- ...address_JoinRoomByAddressView_Day_4_en.png | 4 ++-- ...address_JoinRoomByAddressView_Day_5_en.png | 4 ++-- ...dress_JoinRoomByAddressView_Night_2_en.png | 4 ++-- ...dress_JoinRoomByAddressView_Night_4_en.png | 4 ++-- ...dress_JoinRoomByAddressView_Night_5_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_0_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_1_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_2_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_3_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_4_en.png | 4 ++-- ...tchat.impl.root_StartChatView_Day_5_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_0_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_1_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_2_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_3_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_4_en.png | 4 ++-- ...hat.impl.root_StartChatView_Night_5_en.png | 4 ++-- ...ared_UserProfileHeaderSection_Day_0_en.png | 4 ++-- ...ed_UserProfileHeaderSection_Night_0_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_0_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_1_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_2_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_3_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_4_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_5_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_6_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_7_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_8_en.png | 4 ++-- ...rofile.shared_UserProfileView_Day_9_en.png | 4 ++-- ...file.shared_UserProfileView_Night_0_en.png | 4 ++-- ...file.shared_UserProfileView_Night_1_en.png | 4 ++-- ...file.shared_UserProfileView_Night_2_en.png | 4 ++-- ...file.shared_UserProfileView_Night_3_en.png | 4 ++-- ...file.shared_UserProfileView_Night_4_en.png | 4 ++-- ...file.shared_UserProfileView_Night_5_en.png | 4 ++-- ...file.shared_UserProfileView_Night_6_en.png | 4 ++-- ...file.shared_UserProfileView_Night_7_en.png | 4 ++-- ...file.shared_UserProfileView_Night_8_en.png | 4 ++-- ...file.shared_UserProfileView_Night_9_en.png | 4 ++-- ...ncoming.ui_SessionDetailsView_Day_0_en.png | 4 ++-- ...oming.ui_SessionDetailsView_Night_0_en.png | 4 ++-- ...coming_IncomingVerificationViewA11y_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_0_en.png | 4 ++-- ...ing_IncomingVerificationView_Day_10_en.png | 4 ++-- ...ing_IncomingVerificationView_Day_11_en.png | 4 ++-- ...ing_IncomingVerificationView_Day_12_en.png | 4 ++-- ...ing_IncomingVerificationView_Day_13_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_1_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_2_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_3_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_4_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_5_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_6_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_7_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_8_en.png | 4 ++-- ...ming_IncomingVerificationView_Day_9_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_0_en.png | 4 ++-- ...g_IncomingVerificationView_Night_10_en.png | 4 ++-- ...g_IncomingVerificationView_Night_11_en.png | 4 ++-- ...g_IncomingVerificationView_Night_12_en.png | 4 ++-- ...g_IncomingVerificationView_Night_13_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_1_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_2_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_3_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_4_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_5_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_6_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_7_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_8_en.png | 4 ++-- ...ng_IncomingVerificationView_Night_9_en.png | 2 +- ...oing_OutgoingVerificationView_Day_0_en.png | 4 ++-- ...ing_OutgoingVerificationView_Day_10_en.png | 4 ++-- ...ing_OutgoingVerificationView_Day_11_en.png | 4 ++-- ...ing_OutgoingVerificationView_Day_13_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_1_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_2_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_3_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_4_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_5_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_6_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_7_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_8_en.png | 4 ++-- ...oing_OutgoingVerificationView_Day_9_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_0_en.png | 4 ++-- ...g_OutgoingVerificationView_Night_10_en.png | 4 ++-- ...g_OutgoingVerificationView_Night_11_en.png | 2 +- ...g_OutgoingVerificationView_Night_13_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_1_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_2_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_3_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_4_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_5_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_6_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_7_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_8_en.png | 4 ++-- ...ng_OutgoingVerificationView_Night_9_en.png | 2 +- ...folder.impl.file_ViewFileView_Day_0_en.png | 4 ++-- ...folder.impl.file_ViewFileView_Day_1_en.png | 4 ++-- ...folder.impl.file_ViewFileView_Day_2_en.png | 4 ++-- ...folder.impl.file_ViewFileView_Day_3_en.png | 4 ++-- ...folder.impl.file_ViewFileView_Day_4_en.png | 4 ++-- ...folder.impl.file_ViewFileView_Day_5_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_0_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_1_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_2_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_3_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_4_en.png | 4 ++-- ...lder.impl.file_ViewFileView_Night_5_en.png | 4 ++-- ...er.impl.folder_ViewFolderView_Day_0_en.png | 4 ++-- ...er.impl.folder_ViewFolderView_Day_1_en.png | 4 ++-- ....impl.folder_ViewFolderView_Night_0_en.png | 4 ++-- ....impl.folder_ViewFolderView_Night_1_en.png | 4 ++-- ...select.impl_AccountSelectView_Day_0_en.png | 4 ++-- ...select.impl_AccountSelectView_Day_1_en.png | 4 ++-- ...lect.impl_AccountSelectView_Night_0_en.png | 4 ++-- ...lect.impl_AccountSelectView_Night_1_en.png | 4 ++-- ...mic.atoms_MatrixBadgeAtomInfo_Day_0_en.png | 4 ++-- ...c.atoms_MatrixBadgeAtomInfo_Night_0_en.png | 4 ++-- ...atoms_MatrixBadgeAtomNegative_Day_0_en.png | 4 ++-- ...oms_MatrixBadgeAtomNegative_Night_0_en.png | 4 ++-- ....atoms_MatrixBadgeAtomNeutral_Day_0_en.png | 2 +- ...toms_MatrixBadgeAtomNeutral_Night_0_en.png | 4 ++-- ...atoms_MatrixBadgeAtomPositive_Day_0_en.png | 4 ++-- ...oms_MatrixBadgeAtomPositive_Night_0_en.png | 4 ++-- ....atomic.atoms_RoundedIconAtom_Day_0_en.png | 4 ++-- ...tomic.atoms_RoundedIconAtom_Night_0_en.png | 4 ++-- ...c.atoms_SelectedIndicatorAtom_Day_0_en.png | 4 ++-- ...atoms_SelectedIndicatorAtom_Night_0_en.png | 4 ++-- ...les_IconTitleSubtitleMolecule_Day_0_en.png | 4 ++-- ...s_IconTitleSubtitleMolecule_Night_0_en.png | 4 ++-- ...olecules_InfoListItemMolecule_Day_0_en.png | 4 ++-- ...ecules_InfoListItemMolecule_Night_0_en.png | 4 ++-- ...olecules_MembersCountMolecule_Day_0_en.png | 4 ++-- ...ecules_MembersCountMolecule_Night_0_en.png | 4 ++-- ...tem.atomic.pages_FlowStepPage_Day_0_en.png | 4 ++-- ...m.atomic.pages_FlowStepPage_Night_0_en.png | 4 ++-- ...s.async_AsyncIndicatorFailure_Day_0_en.png | 4 ++-- ...async_AsyncIndicatorFailure_Night_0_en.png | 4 ++-- ...omponents.button_BackButton_Buttons_en.png | 4 ++-- ...oatingActionButtonCircleShape_Day_0_en.png | 4 ++-- ...tingActionButtonCircleShape_Night_0_en.png | 4 ++-- ..._GradientFloatingActionButton_Day_0_en.png | 4 ++-- ...radientFloatingActionButton_Night_0_en.png | 4 ++-- ...nts.button_MainActionButton_Buttons_en.png | 4 ++-- ...logs_TextFieldDialogWithError_Day_0_en.png | 4 ++-- ...gs_TextFieldDialogWithError_Night_0_en.png | 4 ++-- ...ts.preferences_PreferencePage_Day_0_en.png | 2 +- ....preferences_PreferencePage_Night_0_en.png | 4 ++-- ...erences_PreferenceSlide_Preferences_en.png | 4 ++-- ...ystem.components_Announcement_Day_0_en.png | 4 ++-- ...tem.components_Announcement_Night_0_en.png | 4 ++-- ...designsystem.components_Badge_Day_0_en.png | 4 ++-- ...signsystem.components_Badge_Night_0_en.png | 4 ++-- ...signsystem.components_BigIcon_Day_0_en.png | 4 ++-- ...gnsystem.components_BigIcon_Night_0_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_0_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_1_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_2_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_3_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_4_en.png | 4 ++-- ...ignsystem.icons_IconsCompound_Day_5_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_0_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_1_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_2_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_3_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_4_en.png | 4 ++-- ...nsystem.icons_IconsCompound_Night_5_en.png | 4 ++-- ...tem.theme.components_AllIcons_Icons_en.png | 4 ++-- ...h_title,_icon_and_ok_button_Dialogs_en.png | 4 ++-- ..._a_very_long_title_and_icon_Dialogs_en.png | 4 ++-- ...e.components_DropdownMenuItem_Menus_en.png | 4 ++-- ...FilledButtonLargeLowPadding_Buttons_en.png | 4 ++-- ...omponents_FilledButtonLarge_Buttons_en.png | 4 ++-- ...illedButtonMediumLowPadding_Buttons_en.png | 4 ++-- ...mponents_FilledButtonMedium_Buttons_en.png | 4 ++-- ...omponents_FilledButtonSmall_Buttons_en.png | 4 ++-- ...ctionButton_Floating_Action_Buttons_en.png | 4 ++-- ...theme.components_IconButton_Buttons_en.png | 4 ++-- ...me.components_IconColorButton_Day_0_en.png | 4 ++-- ....components_IconColorButton_Night_0_en.png | 4 ++-- ...me.components_IconImageVector_Icons_en.png | 4 ++-- ...components_IconToggleButton_Toggles_en.png | 4 ++-- ..._-_Primary_action_&_Icon_List_items_en.png | 4 ++-- ...em_(1_line)_-_Both_Icons_List_items_en.png | 4 ++-- ..._(1_line)_-_Leading_Icon_List_items_en.png | 4 ++-- ...(1_line)_-_Trailing_Icon_List_items_en.png | 4 ++-- ...m_(3_lines)_-_Both_Icons_List_items_en.png | 4 ++-- ...(3_lines)_-_Leading_Icon_List_items_en.png | 4 ++-- ...3_lines)_-_Trailing_Icon_List_items_en.png | 4 ++-- ...es)_-_Both_Icons_-_Error_List_items_en.png | 4 ++-- ...m_(2_lines)_-_Both_Icons_List_items_en.png | 4 ++-- ...)_-_Leading_Icon_-_Error_List_items_en.png | 4 ++-- ...(2_lines)_-_Leading_Icon_List_items_en.png | 2 +- ..._-_Trailing_Icon_-_Error_List_items_en.png | 4 ++-- ...2_lines)_-_Trailing_Icon_List_items_en.png | 4 ++-- ..._text_-_small_padding_List_sections_en.png | 4 ++-- ...components_MediumTopAppBar_App_Bars_en.png | 4 ++-- ...e.components_NavigationBar_App_Bars_en.png | 4 ++-- ...tlinedButtonLargeLowPadding_Buttons_en.png | 4 ++-- ...ponents_OutlinedButtonLarge_Buttons_en.png | 2 +- ...linedButtonMediumLowPadding_Buttons_en.png | 4 ++-- ...onents_OutlinedButtonMedium_Buttons_en.png | 4 ++-- ...ponents_OutlinedButtonSmall_Buttons_en.png | 4 ++-- ...archBarActiveNoneQuery_Search_views_en.png | 4 ++-- ...chBarActiveWithContent_Search_views_en.png | 4 ++-- ...BarActiveWithNoResults_Search_views_en.png | 4 ++-- ...eWithQueryNoBackButton_Search_views_en.png | 4 ++-- ...archBarActiveWithQuery_Search_views_en.png | 4 ++-- ...ents_SearchBarInactive_Search_views_en.png | 4 ++-- ...h_action_and_close_button_Snackbars_en.png | 4 ++-- ..._close_button_on_new_line_Snackbars_en.png | 4 ++-- ...s_TextButtonLargeLowPadding_Buttons_en.png | 4 ++-- ....components_TextButtonLarge_Buttons_en.png | 4 ++-- ..._TextButtonMediumLowPadding_Buttons_en.png | 4 ++-- ...components_TextButtonMedium_Buttons_en.png | 4 ++-- ....components_TextButtonSmall_Buttons_en.png | 4 ++-- ...omponents_TextFieldsDark_TextFields_en.png | 4 ++-- ...mponents_TextFieldsLight_TextFields_en.png | 4 ++-- ...me.components_TopAppBarStr_App_Bars_en.png | 4 ++-- ...theme.components_TopAppBar_App_Bars_en.png | 4 ++-- ...omponents_AttachmentThumbnail_Day_0_en.png | 4 ++-- ...omponents_AttachmentThumbnail_Day_2_en.png | 4 ++-- ...omponents_AttachmentThumbnail_Day_5_en.png | 4 ++-- ...omponents_AttachmentThumbnail_Day_7_en.png | 4 ++-- ...omponents_AttachmentThumbnail_Day_8_en.png | 4 ++-- ...ponents_AttachmentThumbnail_Night_0_en.png | 4 ++-- ...ponents_AttachmentThumbnail_Night_2_en.png | 4 ++-- ...ponents_AttachmentThumbnail_Night_5_en.png | 4 ++-- ...ponents_AttachmentThumbnail_Night_7_en.png | 4 ++-- ...ponents_AttachmentThumbnail_Night_8_en.png | 4 ++-- ...nents_AvatarActionBottomSheet_Day_0_en.png | 4 ++-- ...nts_AvatarActionBottomSheet_Night_0_en.png | 4 ++-- ...components_CheckableResolvedUserRow_en.png | 4 ++-- ...mponents_CheckableUnresolvedUserRow_en.png | 4 ++-- ...eateDmConfirmationBottomSheet_Day_0_en.png | 4 ++-- ...eateDmConfirmationBottomSheet_Day_1_en.png | 4 ++-- ...teDmConfirmationBottomSheet_Night_0_en.png | 4 ++-- ...teDmConfirmationBottomSheet_Night_1_en.png | 4 ++-- ...components_EditableAvatarView_Day_0_en.png | 4 ++-- ...components_EditableAvatarView_Day_1_en.png | 4 ++-- ...components_EditableAvatarView_Day_2_en.png | 4 ++-- ...mponents_EditableAvatarView_Night_0_en.png | 4 ++-- ...mponents_EditableAvatarView_Night_1_en.png | 4 ++-- ...mponents_EditableAvatarView_Night_2_en.png | 4 ++-- ...mponents_EditableOrgAvatarRtl_Day_0_en.png | 4 ++-- ...onents_EditableOrgAvatarRtl_Night_0_en.png | 4 ++-- ....components_EditableOrgAvatar_Day_0_en.png | 4 ++-- ...omponents_EditableOrgAvatar_Night_0_en.png | 4 ++-- ...ui.components_SelectedRoomRtl_Day_0_en.png | 2 +- ...ui.components_SelectedRoomRtl_Day_1_en.png | 4 ++-- ...ui.components_SelectedRoomRtl_Day_2_en.png | 4 ++-- ....components_SelectedRoomRtl_Night_0_en.png | 4 ++-- ....components_SelectedRoomRtl_Night_1_en.png | 2 +- ....components_SelectedRoomRtl_Night_2_en.png | 4 ++-- ...ix.ui.components_SelectedRoom_Day_0_en.png | 4 ++-- ...ix.ui.components_SelectedRoom_Day_1_en.png | 4 ++-- ...ix.ui.components_SelectedRoom_Day_2_en.png | 4 ++-- ....ui.components_SelectedRoom_Night_0_en.png | 4 ++-- ....ui.components_SelectedRoom_Night_1_en.png | 4 ++-- ....ui.components_SelectedRoom_Night_2_en.png | 4 ++-- ...ui.components_SelectedUserRtl_Day_0_en.png | 4 ++-- ....components_SelectedUserRtl_Night_0_en.png | 2 +- ...ix.ui.components_SelectedUser_Day_0_en.png | 4 ++-- ...ix.ui.components_SelectedUser_Day_1_en.png | 4 ++-- ....ui.components_SelectedUser_Night_0_en.png | 4 ++-- ....ui.components_SelectedUser_Night_1_en.png | 4 ++-- ...mponents_SelectedUsersRowList_Day_0_en.png | 4 ++-- ...onents_SelectedUsersRowList_Night_0_en.png | 4 ++-- ...omponents_SpaceHeaderRootView_Day_0_en.png | 4 ++-- ...ponents_SpaceHeaderRootView_Night_0_en.png | 4 ++-- ...ui.components_SpaceHeaderView_Day_0_en.png | 4 ++-- ....components_SpaceHeaderView_Night_0_en.png | 4 ++-- ...ix.ui.components_SpaceInfoRow_Day_0_en.png | 4 ++-- ....ui.components_SpaceInfoRow_Night_0_en.png | 4 ++-- ...ents_SpaceMembersViewNoHeroes_Day_0_en.png | 2 +- ...ts_SpaceMembersViewNoHeroes_Night_0_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_0_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_1_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_2_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_3_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_4_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_5_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_6_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_7_en.png | 4 ++-- ....components_SpaceRoomItemView_Day_8_en.png | 2 +- ...omponents_SpaceRoomItemView_Night_0_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_1_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_2_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_3_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_4_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_5_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_6_en.png | 4 ++-- ...omponents_SpaceRoomItemView_Night_7_en.png | 2 +- ...omponents_SpaceRoomItemView_Night_8_en.png | 4 ++-- ...rix.ui.components_UnresolvedUserRow_en.png | 4 ++-- ...messages.reply_InReplyToView_Day_11_en.png | 2 +- ....messages.reply_InReplyToView_Day_2_en.png | 4 ++-- ....messages.reply_InReplyToView_Day_4_en.png | 4 ++-- ....messages.reply_InReplyToView_Day_7_en.png | 4 ++-- ...ssages.reply_InReplyToView_Night_11_en.png | 4 ++-- ...essages.reply_InReplyToView_Night_2_en.png | 4 ++-- ...essages.reply_InReplyToView_Night_4_en.png | 4 ++-- ...essages.reply_InReplyToView_Night_7_en.png | 4 ++-- ...DeleteConfirmationBottomSheet_Day_0_en.png | 4 ++-- ...leteConfirmationBottomSheet_Night_0_en.png | 4 ++-- ...tails_MediaDetailsBottomSheet_Day_0_en.png | 4 ++-- ...ils_MediaDetailsBottomSheet_Night_0_en.png | 4 ++-- ....impl.gallery.ui_FileItemView_Day_0_en.png | 4 ++-- ....impl.gallery.ui_FileItemView_Day_1_en.png | 4 ++-- ....impl.gallery.ui_FileItemView_Day_2_en.png | 4 ++-- ...mpl.gallery.ui_FileItemView_Night_0_en.png | 4 ++-- ...mpl.gallery.ui_FileItemView_Night_1_en.png | 4 ++-- ...mpl.gallery.ui_FileItemView_Night_2_en.png | 4 ++-- ...impl.gallery.ui_VideoItemView_Day_0_en.png | 4 ++-- ...impl.gallery.ui_VideoItemView_Day_1_en.png | 4 ++-- ...pl.gallery.ui_VideoItemView_Night_0_en.png | 4 ++-- ...pl.gallery.ui_VideoItemView_Night_1_en.png | 2 +- ....gallery.ui_VoiceItemViewPlay_Day_1_en.png | 4 ++-- ....gallery.ui_VoiceItemViewPlay_Day_2_en.png | 4 ++-- ....gallery.ui_VoiceItemViewPlay_Day_4_en.png | 4 ++-- ...allery.ui_VoiceItemViewPlay_Night_1_en.png | 2 +- ...allery.ui_VoiceItemViewPlay_Night_2_en.png | 2 +- ...allery.ui_VoiceItemViewPlay_Night_4_en.png | 4 ++-- ...impl.gallery.ui_VoiceItemView_Day_0_en.png | 4 ++-- ...impl.gallery.ui_VoiceItemView_Day_1_en.png | 4 ++-- ...impl.gallery.ui_VoiceItemView_Day_2_en.png | 4 ++-- ...impl.gallery.ui_VoiceItemView_Day_3_en.png | 4 ++-- ...pl.gallery.ui_VoiceItemView_Night_0_en.png | 4 ++-- ...pl.gallery.ui_VoiceItemView_Night_1_en.png | 2 +- ...pl.gallery.ui_VoiceItemView_Night_2_en.png | 4 ++-- ...pl.gallery.ui_VoiceItemView_Night_3_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_0_en.png | 4 ++-- ...mpl.gallery_MediaGalleryView_Day_10_en.png | 4 ++-- ...mpl.gallery_MediaGalleryView_Day_11_en.png | 4 ++-- ...mpl.gallery_MediaGalleryView_Day_12_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_1_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_2_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_3_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_4_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_5_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_6_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_7_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_8_en.png | 4 ++-- ...impl.gallery_MediaGalleryView_Day_9_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_0_en.png | 4 ++-- ...l.gallery_MediaGalleryView_Night_10_en.png | 2 +- ...l.gallery_MediaGalleryView_Night_11_en.png | 4 ++-- ...l.gallery_MediaGalleryView_Night_12_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_1_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_2_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_3_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_4_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_5_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_6_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_7_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_8_en.png | 4 ++-- ...pl.gallery_MediaGalleryView_Night_9_en.png | 4 ++-- ...pl.local.audio_MediaAudioView_Day_0_en.png | 4 ++-- ...pl.local.audio_MediaAudioView_Day_1_en.png | 4 ++-- ....local.audio_MediaAudioView_Night_0_en.png | 4 ++-- ....local.audio_MediaAudioView_Night_1_en.png | 4 ++-- ...impl.local.file_MediaFileView_Day_0_en.png | 4 ++-- ...pl.local.file_MediaFileView_Night_0_en.png | 4 ++-- ...yer_MediaPlayerControllerView_Day_0_en.png | 4 ++-- ...yer_MediaPlayerControllerView_Day_1_en.png | 4 ++-- ...yer_MediaPlayerControllerView_Day_2_en.png | 4 ++-- ...r_MediaPlayerControllerView_Night_0_en.png | 4 ++-- ...r_MediaPlayerControllerView_Night_1_en.png | 4 ++-- ...r_MediaPlayerControllerView_Night_2_en.png | 4 ++-- ...pl.local.video_MediaVideoView_Day_0_en.png | 4 ++-- ....local.video_MediaVideoView_Night_0_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_0_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_10_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_11_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_12_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_13_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_14_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_15_en.png | 4 ++-- ...ewer.impl.viewer_MediaViewerView_16_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_1_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_2_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_3_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_4_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_5_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_6_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_7_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_8_en.png | 4 ++-- ...iewer.impl.viewer_MediaViewerView_9_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_0_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_1_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_2_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_3_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_4_en.png | 4 ++-- ...oomselect.impl_RoomSelectView_Day_5_en.png | 4 ++-- ...mselect.impl_RoomSelectView_Night_0_en.png | 4 ++-- ...mselect.impl_RoomSelectView_Night_1_en.png | 4 ++-- ...mselect.impl_RoomSelectView_Night_2_en.png | 2 +- ...mselect.impl_RoomSelectView_Night_3_en.png | 4 ++-- ...mselect.impl_RoomSelectView_Night_4_en.png | 4 ++-- ...mselect.impl_RoomSelectView_Night_5_en.png | 4 ++-- ...r.components_FormattingOption_Day_0_en.png | 4 ++-- ...components_FormattingOption_Night_0_en.png | 4 ++-- ...omposer.components_SendButton_Day_0_en.png | 4 ++-- ...poser.components_SendButton_Night_0_en.png | 4 ++-- ...ser.components_TextFormatting_Day_0_en.png | 4 ++-- ...r.components_TextFormatting_Night_0_en.png | 4 ++-- ...ents_VoiceMessageDeleteButton_Day_0_en.png | 4 ++-- ...ts_VoiceMessageDeleteButton_Night_0_en.png | 4 ++-- ...ts_VoiceMessageRecorderButton_Day_0_en.png | 2 +- ..._VoiceMessageRecorderButton_Night_0_en.png | 4 ++-- ...poser.components_VoiceMessage_Day_0_en.png | 4 ++-- ...ser.components_VoiceMessage_Night_0_en.png | 4 ++-- ...ser_CaptionWarningBottomSheet_Day_0_en.png | 4 ++-- ...r_CaptionWarningBottomSheet_Night_0_en.png | 4 ++-- ...textcomposer_ComposerModeView_Day_0_en.png | 4 ++-- ...textcomposer_ComposerModeView_Day_1_en.png | 4 ++-- ...textcomposer_ComposerModeView_Day_2_en.png | 4 ++-- ...textcomposer_ComposerModeView_Day_3_en.png | 4 ++-- ...xtcomposer_ComposerModeView_Night_0_en.png | 4 ++-- ...xtcomposer_ComposerModeView_Night_1_en.png | 4 ++-- ...xtcomposer_ComposerModeView_Night_2_en.png | 4 ++-- ...xtcomposer_ComposerModeView_Night_3_en.png | 4 ++-- ...oser_MarkdownTextComposerEdit_Day_0_en.png | 4 ++-- ...er_MarkdownTextComposerEdit_Night_0_en.png | 4 ++-- ...mposer_TextComposerAddCaption_Day_0_en.png | 4 ++-- ...oser_TextComposerAddCaption_Night_0_en.png | 4 ++-- ...tcomposer_TextComposerCaption_Day_0_en.png | 4 ++-- ...omposer_TextComposerCaption_Night_0_en.png | 4 ++-- ...poser_TextComposerEditCaption_Day_0_en.png | 4 ++-- ...ser_TextComposerEditCaption_Night_0_en.png | 4 ++-- ..._TextComposerEditNotEncrypted_Day_0_en.png | 4 ++-- ...extComposerEditNotEncrypted_Night_0_en.png | 4 ++-- ...textcomposer_TextComposerEdit_Day_0_en.png | 4 ++-- ...xtcomposer_TextComposerEdit_Night_0_en.png | 4 ++-- ...omposerFormattingNotEncrypted_Day_0_en.png | 4 ++-- ...poserFormattingNotEncrypted_Night_0_en.png | 4 ++-- ...mposer_TextComposerFormatting_Day_0_en.png | 4 ++-- ...oser_TextComposerFormatting_Night_0_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_0_en.png | 4 ++-- ...extComposerReplyNotEncrypted_Day_10_en.png | 4 ++-- ...extComposerReplyNotEncrypted_Day_11_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_1_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_2_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_3_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_4_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_5_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_6_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_7_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_8_en.png | 4 ++-- ...TextComposerReplyNotEncrypted_Day_9_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_0_en.png | 4 ++-- ...tComposerReplyNotEncrypted_Night_10_en.png | 4 ++-- ...tComposerReplyNotEncrypted_Night_11_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_1_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_2_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_3_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_4_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_5_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_6_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_7_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_8_en.png | 4 ++-- ...xtComposerReplyNotEncrypted_Night_9_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_0_en.png | 4 ++-- ...xtcomposer_TextComposerReply_Day_10_en.png | 4 ++-- ...xtcomposer_TextComposerReply_Day_11_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_1_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_2_en.png | 2 +- ...extcomposer_TextComposerReply_Day_3_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_4_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_5_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_6_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_7_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_8_en.png | 4 ++-- ...extcomposer_TextComposerReply_Day_9_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_0_en.png | 4 ++-- ...composer_TextComposerReply_Night_10_en.png | 4 ++-- ...composer_TextComposerReply_Night_11_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_1_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_2_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_3_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_4_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_5_en.png | 2 +- ...tcomposer_TextComposerReply_Night_6_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_7_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_8_en.png | 4 ++-- ...tcomposer_TextComposerReply_Night_9_en.png | 4 ++-- ...extComposerSimpleNotEncrypted_Day_0_en.png | 4 ++-- ...tComposerSimpleNotEncrypted_Night_0_en.png | 4 ++-- ...xtcomposer_TextComposerSimple_Day_0_en.png | 4 ++-- ...composer_TextComposerSimple_Night_0_en.png | 4 ++-- ...TextComposerVoiceNotEncrypted_Day_0_en.png | 4 ++-- ...xtComposerVoiceNotEncrypted_Night_0_en.png | 4 ++-- ...extcomposer_TextComposerVoice_Day_0_en.png | 4 ++-- ...tcomposer_TextComposerVoice_Night_0_en.png | 4 ++-- ....impl.history_PushHistoryView_Day_0_en.png | 4 ++-- ....impl.history_PushHistoryView_Day_1_en.png | 4 ++-- ....impl.history_PushHistoryView_Day_2_en.png | 4 ++-- ....impl.history_PushHistoryView_Day_3_en.png | 4 ++-- ...mpl.history_PushHistoryView_Night_0_en.png | 4 ++-- ...mpl.history_PushHistoryView_Night_1_en.png | 4 ++-- ...mpl.history_PushHistoryView_Night_2_en.png | 4 ++-- ...mpl.history_PushHistoryView_Night_3_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_0_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_1_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_2_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_3_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_4_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_5_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_6_en.png | 4 ++-- ...TroubleshootNotificationsView_Day_7_en.png | 4 ++-- ...oubleshootNotificationsView_Night_0_en.png | 4 ++-- ...oubleshootNotificationsView_Night_1_en.png | 4 ++-- ...oubleshootNotificationsView_Night_2_en.png | 4 ++-- ...oubleshootNotificationsView_Night_3_en.png | 4 ++-- ...oubleshootNotificationsView_Night_4_en.png | 4 ++-- ...oubleshootNotificationsView_Night_5_en.png | 4 ++-- ...oubleshootNotificationsView_Night_6_en.png | 4 ++-- ...oubleshootNotificationsView_Night_7_en.png | 4 ++-- 2017 files changed, 4384 insertions(+), 4374 deletions(-) diff --git a/libraries/compound/screenshots/Compound Icons - Dark.png b/libraries/compound/screenshots/Compound Icons - Dark.png index acac494f89..52e6ba23ab 100644 --- a/libraries/compound/screenshots/Compound Icons - Dark.png +++ b/libraries/compound/screenshots/Compound Icons - Dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6bc48b9f792da838f9fc2c2a630cbbbb906de851a138cc1ac8b7bf67b801ad84 -size 211300 +oid sha256:4c0f668bcd8d511bc80daa1320bdcc1fe6a8f82cd53d91dbab9ffd0d09d72934 +size 210897 diff --git a/libraries/compound/screenshots/Compound Icons - Light.png b/libraries/compound/screenshots/Compound Icons - Light.png index c6b76c46bb..189864a54d 100644 --- a/libraries/compound/screenshots/Compound Icons - Light.png +++ b/libraries/compound/screenshots/Compound Icons - Light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e85fd2c67ff42829b8580ab5c0c2af1fee40973f5c0b34ef7de00e3663cee8e4 -size 223041 +oid sha256:85eb26db4406a921c45f143c8ccb59214b2b70cb19359fe9e7eeeecfb733ca74 +size 222592 diff --git a/libraries/compound/screenshots/Compound Icons - Rtl.png b/libraries/compound/screenshots/Compound Icons - Rtl.png index ce2ffe2e88..aa1bdac4f5 100644 --- a/libraries/compound/screenshots/Compound Icons - Rtl.png +++ b/libraries/compound/screenshots/Compound Icons - Rtl.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:406b62991171a146e891f95bcad0321ebc60cf1fe2cabc9caedbb17fb062af13 -size 224320 +oid sha256:9acd4fdec8deddbf723184ce5f373ed54e64a68d5b572419059e3feab3a508be +size 223915 diff --git a/libraries/compound/screenshots/Compound Vector Icons - Dark.png b/libraries/compound/screenshots/Compound Vector Icons - Dark.png index 2b535c348b..30eac13a58 100644 --- a/libraries/compound/screenshots/Compound Vector Icons - Dark.png +++ b/libraries/compound/screenshots/Compound Vector Icons - Dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ff6dfdfab51332cad3bdfa351a4d0e305de5f899853575a8514858cc871e904 -size 83609 +oid sha256:9f2584ffd8e3a4746937cdc3e0baf04a89839061f15d00342e6150c21bf13228 +size 83228 diff --git a/libraries/compound/screenshots/Compound Vector Icons - Light.png b/libraries/compound/screenshots/Compound Vector Icons - Light.png index bc29dcd24d..41fac03927 100644 --- a/libraries/compound/screenshots/Compound Vector Icons - Light.png +++ b/libraries/compound/screenshots/Compound Vector Icons - Light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca38f5f23c282a6dc4c01a54705f71bf8c927aeac9c1df0a1f3abe50c10b1b85 -size 89336 +oid sha256:fb1854bf504fcab7752c4d51f5fc6cae65511581fb64a1adcdcf6f912d4aa15a +size 89148 diff --git a/libraries/compound/src/main/res/drawable/ic_compound_admin.xml b/libraries/compound/src/main/res/drawable/ic_compound_admin.xml index 8762195e7f..6cedd3ac01 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_admin.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_admin.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_arrow_down.xml b/libraries/compound/src/main/res/drawable/ic_compound_arrow_down.xml index 6d311ac7a2..ceb5dbf670 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_arrow_down.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_arrow_down.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_arrow_left.xml b/libraries/compound/src/main/res/drawable/ic_compound_arrow_left.xml index 4e1949895f..0c87601fad 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_arrow_left.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_arrow_left.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_arrow_right.xml b/libraries/compound/src/main/res/drawable/ic_compound_arrow_right.xml index 4a42e3c16f..5703b5e079 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_arrow_right.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_arrow_right.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_arrow_up.xml b/libraries/compound/src/main/res/drawable/ic_compound_arrow_up.xml index 7ff26b539a..8591911af3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_arrow_up.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_arrow_up.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_arrow_up_right.xml b/libraries/compound/src/main/res/drawable/ic_compound_arrow_up_right.xml index ea686b6cff..9f04df4b91 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_arrow_up_right.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_arrow_up_right.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join.xml b/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join.xml index 2c2f779ab6..3d92b4c18a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join_solid.xml index 1346e2c889..5bd208e44c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_ask_to_join_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_attachment.xml b/libraries/compound/src/main/res/drawable/ic_compound_attachment.xml index 4ddf7f4df7..7d96cfc20b 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_attachment.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_attachment.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_audio.xml b/libraries/compound/src/main/res/drawable/ic_compound_audio.xml index 5fb9365470..adb53a9675 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_audio.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_audio.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_block.xml b/libraries/compound/src/main/res/drawable/ic_compound_block.xml index 08ef51dce3..4519a8bb9c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_block.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_block.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_bold.xml b/libraries/compound/src/main/res/drawable/ic_compound_bold.xml index 2546a230cc..ca871203db 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_bold.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_bold.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_calendar.xml b/libraries/compound/src/main/res/drawable/ic_compound_calendar.xml index 72a9fe5868..490317cf85 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_calendar.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_calendar.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chart.xml b/libraries/compound/src/main/res/drawable/ic_compound_chart.xml index cc1c8fb662..c729cf8599 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chart.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chart.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chat.xml b/libraries/compound/src/main/res/drawable/ic_compound_chat.xml index 3a7e70841b..f27c3d9c1e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chat.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chat.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chat_new.xml b/libraries/compound/src/main/res/drawable/ic_compound_chat_new.xml index 8bf9f6762f..73e84889f8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chat_new.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chat_new.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chat_problem.xml b/libraries/compound/src/main/res/drawable/ic_compound_chat_problem.xml index 380358478a..ada411cb95 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chat_problem.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chat_problem.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chat_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_chat_solid.xml index d08def35fe..28b82f2f12 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chat_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chat_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_check.xml b/libraries/compound/src/main/res/drawable/ic_compound_check.xml index 78f935c940..8a823ed3d7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_check.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_check.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_check_circle.xml b/libraries/compound/src/main/res/drawable/ic_compound_check_circle.xml index 8d6147246b..6522854364 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_check_circle.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_check_circle.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_check_circle_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_check_circle_solid.xml index d258a5c97a..7c35f577de 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_check_circle_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_check_circle_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chevron_down.xml b/libraries/compound/src/main/res/drawable/ic_compound_chevron_down.xml index 2ac456e988..1adf6f4126 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chevron_down.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chevron_down.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chevron_left.xml b/libraries/compound/src/main/res/drawable/ic_compound_chevron_left.xml index 50316a4e81..8251b035da 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chevron_left.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chevron_left.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chevron_right.xml b/libraries/compound/src/main/res/drawable/ic_compound_chevron_right.xml index d19a9daa4d..6e22300e68 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chevron_right.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chevron_right.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chevron_up.xml b/libraries/compound/src/main/res/drawable/ic_compound_chevron_up.xml index d84ebade9c..063b1cf179 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chevron_up.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chevron_up.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_chevron_up_down.xml b/libraries/compound/src/main/res/drawable/ic_compound_chevron_up_down.xml index 213dfbef9f..6add4ed5ab 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_chevron_up_down.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_chevron_up_down.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_circle.xml b/libraries/compound/src/main/res/drawable/ic_compound_circle.xml index d5a292aa3c..ef828f6627 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_circle.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_circle.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_close.xml b/libraries/compound/src/main/res/drawable/ic_compound_close.xml index ef8a75f08a..c655fbd832 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_close.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_close.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_cloud.xml b/libraries/compound/src/main/res/drawable/ic_compound_cloud.xml index b96fd18250..689d7d770e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_cloud.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_cloud.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_cloud_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_cloud_solid.xml index 09a91809f3..784aef7d10 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_cloud_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_cloud_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_code.xml b/libraries/compound/src/main/res/drawable/ic_compound_code.xml index c17c73c201..08b2c47fcb 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_code.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_code.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_collapse.xml b/libraries/compound/src/main/res/drawable/ic_compound_collapse.xml index 8cc9302197..55f25455b0 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_collapse.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_collapse.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_company.xml b/libraries/compound/src/main/res/drawable/ic_compound_company.xml index 28a9232c13..d8397efc5b 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_company.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_company.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_compose.xml b/libraries/compound/src/main/res/drawable/ic_compound_compose.xml index eaa9ca0ef1..fff7a7550a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_compose.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_compose.xml @@ -4,11 +4,11 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_computer.xml b/libraries/compound/src/main/res/drawable/ic_compound_computer.xml index 97748e8ffd..e3483f52e8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_computer.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_computer.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_copy.xml b/libraries/compound/src/main/res/drawable/ic_compound_copy.xml index 4492c5aca9..b163c0c61e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_copy.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_copy.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_dark_mode.xml b/libraries/compound/src/main/res/drawable/ic_compound_dark_mode.xml index bc4fa89cd4..74a9123108 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_dark_mode.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_dark_mode.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_delete.xml b/libraries/compound/src/main/res/drawable/ic_compound_delete.xml index dd2e3b50d0..e072ce70c5 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_delete.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_delete.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_devices.xml b/libraries/compound/src/main/res/drawable/ic_compound_devices.xml index a399d675cf..e2bb7c1b33 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_devices.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_devices.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_dial_pad.xml b/libraries/compound/src/main/res/drawable/ic_compound_dial_pad.xml index 1967b8df77..a6cbc94255 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_dial_pad.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_dial_pad.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_document.xml b/libraries/compound/src/main/res/drawable/ic_compound_document.xml index 830a36597a..ad96267f8c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_document.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_document.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_download.xml b/libraries/compound/src/main/res/drawable/ic_compound_download.xml index bf4c24ec26..04fa025ada 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_download.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_download.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_download_ios.xml b/libraries/compound/src/main/res/drawable/ic_compound_download_ios.xml index 16a45ee188..7d17468555 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_download_ios.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_download_ios.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_drag_grid.xml b/libraries/compound/src/main/res/drawable/ic_compound_drag_grid.xml index 96697b574d..6f2825d45c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_drag_grid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_drag_grid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_drag_list.xml b/libraries/compound/src/main/res/drawable/ic_compound_drag_list.xml index 57fe86c0e8..f1b4a9818a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_drag_list.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_drag_list.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_earpiece.xml b/libraries/compound/src/main/res/drawable/ic_compound_earpiece.xml index 66b495b304..d16021dfcf 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_earpiece.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_earpiece.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_edit.xml b/libraries/compound/src/main/res/drawable/ic_compound_edit.xml index de0c0b345a..756c3f0347 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_edit.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_edit.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_edit_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_edit_solid.xml index 33da283f4d..15bae108d0 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_edit_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_edit_solid.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_email.xml b/libraries/compound/src/main/res/drawable/ic_compound_email.xml index 223c9620f3..a63a85bc45 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_email.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_email.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_email_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_email_solid.xml index f5c98f8cfa..f69732b0b3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_email_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_email_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_end_call.xml b/libraries/compound/src/main/res/drawable/ic_compound_end_call.xml index f58a645c6e..129af0a6b7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_end_call.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_end_call.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_error.xml b/libraries/compound/src/main/res/drawable/ic_compound_error.xml index a4ea2f0016..97422a0cbd 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_error.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_error.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_error_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_error_solid.xml index 97b8ece183..1a3f07fa41 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_error_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_error_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_expand.xml b/libraries/compound/src/main/res/drawable/ic_compound_expand.xml index 88aef8abc1..50520c0689 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_expand.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_expand.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_explore.xml b/libraries/compound/src/main/res/drawable/ic_compound_explore.xml index 9b62efa291..51cf8c32be 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_explore.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_explore.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_export_archive.xml b/libraries/compound/src/main/res/drawable/ic_compound_export_archive.xml index f09775d0be..94ed347175 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_export_archive.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_export_archive.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_extensions.xml b/libraries/compound/src/main/res/drawable/ic_compound_extensions.xml index 1bd8ae7bce..d4c6aaa2f0 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_extensions.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_extensions.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_extensions_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_extensions_solid.xml index 7873a49ed6..1b2a265084 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_extensions_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_extensions_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_favourite.xml b/libraries/compound/src/main/res/drawable/ic_compound_favourite.xml index f7845dc080..2d56178045 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_favourite.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_favourite.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_favourite_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_favourite_solid.xml index 3fc393c572..21a77a1f2e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_favourite_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_favourite_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_file_error.xml b/libraries/compound/src/main/res/drawable/ic_compound_file_error.xml index 13b3571ef8..b1c60efae3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_file_error.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_file_error.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_files.xml b/libraries/compound/src/main/res/drawable/ic_compound_files.xml index 67a30b6bd8..16b71ffbc2 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_files.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_files.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_filter.xml b/libraries/compound/src/main/res/drawable/ic_compound_filter.xml index 2f2b0e5f10..4fcbec8ffe 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_filter.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_filter.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_forward.xml b/libraries/compound/src/main/res/drawable/ic_compound_forward.xml index e614fabb4e..c489c159f8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_forward.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_forward.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_grid.xml b/libraries/compound/src/main/res/drawable/ic_compound_grid.xml index 223ed40a2f..023f9542b4 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_grid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_grid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_group.xml b/libraries/compound/src/main/res/drawable/ic_compound_group.xml index 4781d1306b..800a941134 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_group.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_group.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_guest.xml b/libraries/compound/src/main/res/drawable/ic_compound_guest.xml index 1bb2d99842..cdba0d5f58 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_guest.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_guest.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_headphones_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_headphones_off_solid.xml index af81d29c1d..551f0fc21e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_headphones_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_headphones_off_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_headphones_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_headphones_solid.xml index eac3a666d0..e8fdf3afb1 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_headphones_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_headphones_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_help.xml b/libraries/compound/src/main/res/drawable/ic_compound_help.xml index 293120e8cd..667f268fa8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_help.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_help.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_help_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_help_solid.xml index 80332718c2..29b11c6687 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_help_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_help_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_history.xml b/libraries/compound/src/main/res/drawable/ic_compound_history.xml index 25d4c68509..10e4f222d3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_history.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_history.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_home.xml b/libraries/compound/src/main/res/drawable/ic_compound_home.xml index 0feb167199..8cdb4fc202 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_home.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_home.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_home_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_home_solid.xml index 10cca67a37..ce94991fdd 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_home_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_home_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_host.xml b/libraries/compound/src/main/res/drawable/ic_compound_host.xml index d45d1c0278..048d4c1c3d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_host.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_host.xml @@ -4,11 +4,11 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_image.xml b/libraries/compound/src/main/res/drawable/ic_compound_image.xml index 58a3525b3a..55728750a1 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_image.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_image.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_image_error.xml b/libraries/compound/src/main/res/drawable/ic_compound_image_error.xml index 1c8d716166..6f660f76a1 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_image_error.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_image_error.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_indent_decrease.xml b/libraries/compound/src/main/res/drawable/ic_compound_indent_decrease.xml index 5ada985743..5fba2cd371 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_indent_decrease.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_indent_decrease.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_indent_increase.xml b/libraries/compound/src/main/res/drawable/ic_compound_indent_increase.xml index de5df3977a..2cad4690fb 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_indent_increase.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_indent_increase.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_info.xml b/libraries/compound/src/main/res/drawable/ic_compound_info.xml index cf0318bb61..02808d1855 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_info.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_info.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_info_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_info_solid.xml index 9101aacffc..7155a382c7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_info_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_info_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_inline_code.xml b/libraries/compound/src/main/res/drawable/ic_compound_inline_code.xml index 9f78e1f8c2..2b047fac71 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_inline_code.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_inline_code.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_italic.xml b/libraries/compound/src/main/res/drawable/ic_compound_italic.xml index e3fee1f82e..e47a0971f6 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_italic.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_italic.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_key.xml b/libraries/compound/src/main/res/drawable/ic_compound_key.xml index 112c16d78f..0bd5d8d7f1 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_key.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_key.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_key_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_key_off.xml index b160e81c73..ce8ed0df0d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_key_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_key_off.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_key_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_key_off_solid.xml index c1961ec390..4dbf8c9eb2 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_key_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_key_off_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_key_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_key_solid.xml index 29f9ad1a42..79253ea934 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_key_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_key_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_keyboard.xml b/libraries/compound/src/main/res/drawable/ic_compound_keyboard.xml index 6216c1ccf8..19ebbab54c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_keyboard.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_keyboard.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_labs.xml b/libraries/compound/src/main/res/drawable/ic_compound_labs.xml index d0bcae3bab..9d64b768e0 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_labs.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_labs.xml @@ -3,14 +3,14 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_leave.xml b/libraries/compound/src/main/res/drawable/ic_compound_leave.xml index ad5897d4f2..f1c1869dd4 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_leave.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_leave.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_link.xml b/libraries/compound/src/main/res/drawable/ic_compound_link.xml index 3787cf3981..fc3e50450d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_link.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_link.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_linux.xml b/libraries/compound/src/main/res/drawable/ic_compound_linux.xml index bb3216e729..9b766dac9e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_linux.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_linux.xml @@ -3,15 +3,17 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - - - + + + + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_list_bulleted.xml b/libraries/compound/src/main/res/drawable/ic_compound_list_bulleted.xml index f7fe7a8256..3e50a2b7a1 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_list_bulleted.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_list_bulleted.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_list_numbered.xml b/libraries/compound/src/main/res/drawable/ic_compound_list_numbered.xml index d3fbeb2d2d..a35008936e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_list_numbered.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_list_numbered.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_list_view.xml b/libraries/compound/src/main/res/drawable/ic_compound_list_view.xml index ffd3359cfa..8af526ae39 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_list_view.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_list_view.xml @@ -3,14 +3,14 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_location_navigator.xml b/libraries/compound/src/main/res/drawable/ic_compound_location_navigator.xml index bffa2d9f9d..54d07dc296 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_location_navigator.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_location_navigator.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_location_navigator_centred.xml b/libraries/compound/src/main/res/drawable/ic_compound_location_navigator_centred.xml index 50f8ac655d..b6afaa6620 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_location_navigator_centred.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_location_navigator_centred.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_location_pin.xml b/libraries/compound/src/main/res/drawable/ic_compound_location_pin.xml index 063076d4ae..08101cd217 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_location_pin.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_location_pin.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_location_pin_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_location_pin_solid.xml index defb2d4e42..a03272a0a8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_location_pin_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_location_pin_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_lock.xml b/libraries/compound/src/main/res/drawable/ic_compound_lock.xml index 9715295d94..2225361a2d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_lock.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_lock.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_lock_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_lock_off.xml index a19bac4811..3f34eb50b8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_lock_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_lock_off.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_lock_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_lock_solid.xml index 6a5a11b4de..d39e85a9a2 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_lock_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_lock_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mac.xml b/libraries/compound/src/main/res/drawable/ic_compound_mac.xml index 6f72038f43..47a4d690ef 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mac.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mac.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mark_as_read.xml b/libraries/compound/src/main/res/drawable/ic_compound_mark_as_read.xml index 8de67ac4e8..7798596fec 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mark_as_read.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mark_as_read.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mark_as_unread.xml b/libraries/compound/src/main/res/drawable/ic_compound_mark_as_unread.xml index 6b3c53144a..0ec3991f85 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mark_as_unread.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mark_as_unread.xml @@ -4,11 +4,11 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mark_threads_as_read.xml b/libraries/compound/src/main/res/drawable/ic_compound_mark_threads_as_read.xml index 5d6c12a557..82bf433d20 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mark_threads_as_read.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mark_threads_as_read.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_marker_read_receipts.xml b/libraries/compound/src/main/res/drawable/ic_compound_marker_read_receipts.xml index c70cfd3e51..6205a6a982 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_marker_read_receipts.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_marker_read_receipts.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mention.xml b/libraries/compound/src/main/res/drawable/ic_compound_mention.xml index 274ccb3775..0ec8a49e99 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mention.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mention.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_menu.xml b/libraries/compound/src/main/res/drawable/ic_compound_menu.xml index c3ee1a2ee1..87f961708c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_menu.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_menu.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mic_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_mic_off.xml index e28210c07d..8ce70e59b9 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mic_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mic_off.xml @@ -4,11 +4,11 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mic_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_mic_off_solid.xml index 686809342a..ca3bd707d2 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mic_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mic_off_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mic_on.xml b/libraries/compound/src/main/res/drawable/ic_compound_mic_on.xml index 793b9c8f83..2c6cdd5869 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mic_on.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mic_on.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mic_on_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_mic_on_solid.xml index 026f477e75..8b7027cda5 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mic_on_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mic_on_solid.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_minus.xml b/libraries/compound/src/main/res/drawable/ic_compound_minus.xml index 064946b6dc..85f71f8692 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_minus.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_minus.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_mobile.xml b/libraries/compound/src/main/res/drawable/ic_compound_mobile.xml index 8257628868..48c11f62c8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_mobile.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_mobile.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_notifications.xml b/libraries/compound/src/main/res/drawable/ic_compound_notifications.xml index afd16aa8e9..b7af3f06b6 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_notifications.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_notifications.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_notifications_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_notifications_off.xml index e4fca897a3..6542c704eb 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_notifications_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_notifications_off.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_notifications_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_notifications_off_solid.xml index 4bc9fdd2ab..502f899de3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_notifications_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_notifications_off_solid.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_notifications_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_notifications_solid.xml index 358a18c83e..1e025f929a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_notifications_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_notifications_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_offline.xml b/libraries/compound/src/main/res/drawable/ic_compound_offline.xml index 322954e4b0..66862b5b6c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_offline.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_offline.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_overflow_horizontal.xml b/libraries/compound/src/main/res/drawable/ic_compound_overflow_horizontal.xml index c85d1e8da2..5de8de32f5 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_overflow_horizontal.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_overflow_horizontal.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_overflow_vertical.xml b/libraries/compound/src/main/res/drawable/ic_compound_overflow_vertical.xml index 269e28613c..09af569897 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_overflow_vertical.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_overflow_vertical.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_pause.xml b/libraries/compound/src/main/res/drawable/ic_compound_pause.xml index bcd8325107..7ccfb0108d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_pause.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_pause.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_pause_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_pause_solid.xml index f25a7cbcfc..94545f891e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_pause_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_pause_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_pin.xml b/libraries/compound/src/main/res/drawable/ic_compound_pin.xml index 0aa36f53e9..343ca14ab2 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_pin.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_pin.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_pin_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_pin_solid.xml index 9326b0fd75..4f277512d0 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_pin_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_pin_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_play.xml b/libraries/compound/src/main/res/drawable/ic_compound_play.xml index d7b8d3c5e5..372cdfed4c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_play.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_play.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_play_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_play_solid.xml index fca650ccd8..e20b1e5c0e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_play_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_play_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_plus.xml b/libraries/compound/src/main/res/drawable/ic_compound_plus.xml index a20a59aac9..c4b3d11824 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_plus.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_plus.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_polls.xml b/libraries/compound/src/main/res/drawable/ic_compound_polls.xml index 8c0e2b5a45..0877d2caf8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_polls.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_polls.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_polls_end.xml b/libraries/compound/src/main/res/drawable/ic_compound_polls_end.xml index 8cfe2be80e..eab0f9af59 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_polls_end.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_polls_end.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_pop_out.xml b/libraries/compound/src/main/res/drawable/ic_compound_pop_out.xml index 7b5b07b969..0feace457d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_pop_out.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_pop_out.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_preferences.xml b/libraries/compound/src/main/res/drawable/ic_compound_preferences.xml index fbc271730d..d7089e0eda 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_preferences.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_preferences.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_presence_outline_8_x_8.xml b/libraries/compound/src/main/res/drawable/ic_compound_presence_outline_8_x_8.xml index 3d815c0696..603bc8a12c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_presence_outline_8_x_8.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_presence_outline_8_x_8.xml @@ -3,10 +3,12 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - - - + + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_presence_solid_8_x_8.xml b/libraries/compound/src/main/res/drawable/ic_compound_presence_solid_8_x_8.xml index ab82df2441..3be8cc0283 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_presence_solid_8_x_8.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_presence_solid_8_x_8.xml @@ -3,9 +3,11 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - - - + + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_presence_strikethrough_8_x_8.xml b/libraries/compound/src/main/res/drawable/ic_compound_presence_strikethrough_8_x_8.xml index 1ed8a1e492..6bd7114024 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_presence_strikethrough_8_x_8.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_presence_strikethrough_8_x_8.xml @@ -3,10 +3,12 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - - - + + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_public.xml b/libraries/compound/src/main/res/drawable/ic_compound_public.xml index 3dfd7046ea..7ed4a2244d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_public.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_public.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_qr_code.xml b/libraries/compound/src/main/res/drawable/ic_compound_qr_code.xml index 4befbcef95..75b3f9f5e7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_qr_code.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_qr_code.xml @@ -4,14 +4,14 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - - + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_quote.xml b/libraries/compound/src/main/res/drawable/ic_compound_quote.xml index 728fe07e43..550d7c818a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_quote.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_quote.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_raised_hand_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_raised_hand_solid.xml index d345569ead..aa16cae569 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_raised_hand_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_raised_hand_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_reaction.xml b/libraries/compound/src/main/res/drawable/ic_compound_reaction.xml index f85f57d002..f0dc9f2a7e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_reaction.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_reaction.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_reaction_add.xml b/libraries/compound/src/main/res/drawable/ic_compound_reaction_add.xml index 3fe88d4f8a..34716dbd59 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_reaction_add.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_reaction_add.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_reaction_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_reaction_solid.xml index 826ac69830..3604031fb3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_reaction_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_reaction_solid.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_reply.xml b/libraries/compound/src/main/res/drawable/ic_compound_reply.xml index 45a797deda..a4f7a6d368 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_reply.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_reply.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_restart.xml b/libraries/compound/src/main/res/drawable/ic_compound_restart.xml index 9360979845..6f862bd628 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_restart.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_restart.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_room.xml b/libraries/compound/src/main/res/drawable/ic_compound_room.xml index a0a278eab7..3f57015467 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_room.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_room.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_search.xml b/libraries/compound/src/main/res/drawable/ic_compound_search.xml index 8e1ec94374..76638caf49 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_search.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_search.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_send.xml b/libraries/compound/src/main/res/drawable/ic_compound_send.xml index 8c0d5e1159..a37b499cc6 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_send.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_send.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_send_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_send_solid.xml index 3ac0bc6f62..0d41f4fe1a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_send_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_send_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_settings.xml b/libraries/compound/src/main/res/drawable/ic_compound_settings.xml index 7a79aa33ec..3606bf2317 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_settings.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_settings.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_settings_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_settings_solid.xml index 7a75b037ba..b7f6bb4dc8 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_settings_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_settings_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_share.xml b/libraries/compound/src/main/res/drawable/ic_compound_share.xml index 6abf169f20..58bb31bd11 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_share.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_share.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_share_android.xml b/libraries/compound/src/main/res/drawable/ic_compound_share_android.xml index a92b79a76a..3c82973339 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_share_android.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_share_android.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_share_ios.xml b/libraries/compound/src/main/res/drawable/ic_compound_share_ios.xml index e481978c28..9027271541 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_share_ios.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_share_ios.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_share_screen.xml b/libraries/compound/src/main/res/drawable/ic_compound_share_screen.xml index 89f63b897c..10ef39193b 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_share_screen.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_share_screen.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_share_screen_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_share_screen_solid.xml index ee9a1aa837..255e373765 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_share_screen_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_share_screen_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_shield.xml b/libraries/compound/src/main/res/drawable/ic_compound_shield.xml index 7d2ee79157..a75afcb947 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_shield.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_shield.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_sidebar.xml b/libraries/compound/src/main/res/drawable/ic_compound_sidebar.xml index 4bd5a0b3e3..1f5b355e49 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_sidebar.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_sidebar.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_sign_out.xml b/libraries/compound/src/main/res/drawable/ic_compound_sign_out.xml index a6ded2b7a8..641cac9a0d 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_sign_out.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_sign_out.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_spinner.xml b/libraries/compound/src/main/res/drawable/ic_compound_spinner.xml index 80721fdce8..d3577cba4c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_spinner.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_spinner.xml @@ -4,8 +4,8 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_spotlight.xml b/libraries/compound/src/main/res/drawable/ic_compound_spotlight.xml index acaad53b3b..df9e43f1fe 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_spotlight.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_spotlight.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_spotlight_view.xml b/libraries/compound/src/main/res/drawable/ic_compound_spotlight_view.xml index 724cdf91cf..5a33b46550 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_spotlight_view.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_spotlight_view.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_strikethrough.xml b/libraries/compound/src/main/res/drawable/ic_compound_strikethrough.xml index a472c6c97e..010baa2a4e 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_strikethrough.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_strikethrough.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_switch_camera_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_switch_camera_solid.xml index a7695e40ff..8d275c6ae3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_switch_camera_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_switch_camera_solid.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_take_photo.xml b/libraries/compound/src/main/res/drawable/ic_compound_take_photo.xml index d6dbb4d568..fdd8ebd707 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_take_photo.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_take_photo.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_take_photo_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_take_photo_solid.xml index 2db8a6cdf0..bc3b0708cd 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_take_photo_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_take_photo_solid.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_text_formatting.xml b/libraries/compound/src/main/res/drawable/ic_compound_text_formatting.xml index 4126080fa9..c87c152b34 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_text_formatting.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_text_formatting.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_time.xml b/libraries/compound/src/main/res/drawable/ic_compound_time.xml index b29bb29de7..7fc0404c88 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_time.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_time.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_underline.xml b/libraries/compound/src/main/res/drawable/ic_compound_underline.xml index c90d6bc591..3c8e5b7caa 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_underline.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_underline.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_unknown.xml b/libraries/compound/src/main/res/drawable/ic_compound_unknown.xml index 87afe69e02..606e20b9e9 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_unknown.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_unknown.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_unknown_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_unknown_solid.xml index 89b6a89056..5aec9fa483 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_unknown_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_unknown_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_unpin.xml b/libraries/compound/src/main/res/drawable/ic_compound_unpin.xml index c7aee251f4..361c4be028 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_unpin.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_unpin.xml @@ -4,11 +4,11 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user.xml b/libraries/compound/src/main/res/drawable/ic_compound_user.xml index 948bda3e4e..b0d51f5cfe 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user_add.xml b/libraries/compound/src/main/res/drawable/ic_compound_user_add.xml index 81d9aaf1bb..9965dadcde 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user_add.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user_add.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user_add_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_user_add_solid.xml index 693db72c06..685d751fdb 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user_add_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user_add_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user_profile.xml b/libraries/compound/src/main/res/drawable/ic_compound_user_profile.xml index 222b9510ea..f66ebd04e7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user_profile.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user_profile.xml @@ -3,13 +3,13 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user_profile_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_user_profile_solid.xml index 5d268642e0..54ada8e1ce 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user_profile_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user_profile_solid.xml @@ -3,10 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_user_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_user_solid.xml index c281d6f009..64409fcf5c 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_user_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_user_solid.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_verified.xml b/libraries/compound/src/main/res/drawable/ic_compound_verified.xml index f30bec93ff..510e386bb9 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_verified.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_verified.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call.xml index 4f1c9b1ba7..bee275ab25 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call_declined_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call_declined_solid.xml index a6b699c6bd..b9a8090cce 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call_declined_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call_declined_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call_missed_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call_missed_solid.xml index 57c1502560..43133555f7 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call_missed_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call_missed_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call_off.xml index 6466ec2848..ab9cbf55eb 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call_off.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call_off_solid.xml index 35a5796577..10dd687230 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call_off_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_video_call_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_video_call_solid.xml index ec4cf0902e..dc78198098 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_video_call_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_video_call_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_visibility_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_visibility_off.xml index c4234584a3..815184858b 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_visibility_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_visibility_off.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_visibility_on.xml b/libraries/compound/src/main/res/drawable/ic_compound_visibility_on.xml index a66dcfa429..59b23e3928 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_visibility_on.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_visibility_on.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_voice_call.xml b/libraries/compound/src/main/res/drawable/ic_compound_voice_call.xml index 579738d57b..258a541751 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_voice_call.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_voice_call.xml @@ -4,10 +4,12 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - - + + + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_voice_call_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_voice_call_solid.xml index 428e2fa3d1..6aed590ced 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_voice_call_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_voice_call_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_volume_off.xml b/libraries/compound/src/main/res/drawable/ic_compound_volume_off.xml index e240c01b0b..884d3c3196 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_volume_off.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_volume_off.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_volume_off_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_volume_off_solid.xml index 6c801e7a16..b4d75ae32a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_volume_off_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_volume_off_solid.xml @@ -4,7 +4,7 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_volume_on.xml b/libraries/compound/src/main/res/drawable/ic_compound_volume_on.xml index 453a2578e2..bbc3effd39 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_volume_on.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_volume_on.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_volume_on_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_volume_on_solid.xml index 232571342f..2041eaba02 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_volume_on_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_volume_on_solid.xml @@ -4,10 +4,10 @@ android:autoMirrored="true" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_warning.xml b/libraries/compound/src/main/res/drawable/ic_compound_warning.xml index 53b838ca56..3b196aa863 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_warning.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_warning.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_web_browser.xml b/libraries/compound/src/main/res/drawable/ic_compound_web_browser.xml index baaf15c059..173b24addd 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_web_browser.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_web_browser.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_windows.xml b/libraries/compound/src/main/res/drawable/ic_compound_windows.xml index 37a3915dc8..0aa8b49e32 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_windows.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_windows.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/libraries/compound/src/main/res/drawable/ic_compound_workspace.xml b/libraries/compound/src/main/res/drawable/ic_compound_workspace.xml index 3871fde4b4..e5629d881a 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_workspace.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_workspace.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M6,21q-1.65,0 -2.825,-1.175T2,17t1.175,-2.825T6,13t2.825,1.175T10,17t-1.175,2.825T6,21m12,0q-1.65,0 -2.825,-1.175T14,17t1.175,-2.825T18,13t2.825,1.175T22,17t-1.175,2.825T18,21M6,19q0.824,0 1.412,-0.587Q8,17.825 8,17t-0.588,-1.412A1.93,1.93 0,0 0,6 15q-0.824,0 -1.412,0.588A1.93,1.93 0,0 0,4 17q0,0.824 0.588,1.413Q5.175,19 6,19m12,0q0.824,0 1.413,-0.587Q20,17.825 20,17t-0.587,-1.412A1.93,1.93 0,0 0,18 15q-0.824,0 -1.413,0.588A1.93,1.93 0,0 0,16 17q0,0.824 0.587,1.413Q17.176,19 18,19m-6,-8q-1.65,0 -2.825,-1.175T8,7t1.175,-2.825T12,3t2.825,1.175T16,7t-1.175,2.825T12,11m0,-2q0.825,0 1.412,-0.588Q14,7.826 14,7q0,-0.824 -0.588,-1.412A1.93,1.93 0,0 0,12 5q-0.825,0 -1.412,0.588A1.93,1.93 0,0 0,10 7q0,0.824 0.588,1.412Q11.175,9 12,9" + android:fillColor="#FF000000"/> diff --git a/libraries/compound/src/main/res/drawable/ic_compound_workspace_solid.xml b/libraries/compound/src/main/res/drawable/ic_compound_workspace_solid.xml index 51c5c9f9cb..12c582ebb3 100644 --- a/libraries/compound/src/main/res/drawable/ic_compound_workspace_solid.xml +++ b/libraries/compound/src/main/res/drawable/ic_compound_workspace_solid.xml @@ -4,6 +4,6 @@ android:viewportWidth="24" android:viewportHeight="24"> + android:pathData="M3.175,19.825Q4.35,21 6,21t2.825,-1.175T10,17t-1.175,-2.825T6,13t-2.825,1.175T2,17t1.175,2.825m12,0Q16.35,21 18,21t2.825,-1.175T22,17t-1.175,-2.825T18,13t-2.825,1.175T14,17t1.175,2.825m-6,-10Q10.35,11 12,11t2.825,-1.175T16,7t-1.175,-2.825T12,3 9.175,4.175 8,7t1.175,2.825" + android:fillColor="#FF000000"/> diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png index f9892e9de2..310d0ce9fe 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:584b66997ed296ce9621eca13b08aa3ac85afcba1487eea0daca8a261b4e138f -size 8367 +oid sha256:513b6de9643106b0c021a60a2791e6227ce81ff1089338a5d3de8ba525e353ab +size 8389 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png index c2d7023c2c..f01029b957 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5ce0fc2ee86d7fae4b068ff1a9bf589210d70829d8b15650b6a3f0e14f580ac -size 10492 +oid sha256:7aebe39a70a79e025d392ffb6c97793c828cc29acf7700461399e6cbea0d27a3 +size 10512 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png index 89f1fa7ae7..9246f89c07 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daadc3dc7f9ce731f2fcc0d2556e6088c00c4eac827c57ebe3f56348de7d9229 -size 8014 +oid sha256:89bd61aa2d74f720a2b1d73fa5379e712fc61e423cbcbfab83cb291bdbd75766 +size 8013 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png index e7b27e4f38..7ac1f95544 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa9a211995c335fd146f7be29101c92bc40cc242390b76ed0195274f7d67e5a2 -size 10040 +oid sha256:831058152c5c6e691afecab498ae07f4b35f7b75438a4efa1841cc04922bb7be +size 10037 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png index 4d82afcbb8..5840286da4 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0c86d045750812e3de843f85b1d765cc1bd12049c900ef4f3f865a3c05ee09d -size 83220 +oid sha256:0297e771c4370ede91623c024d63cf750826578381d2f08885e8246fc4c8c82f +size 83236 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png index a56c84e108..46ebb6db05 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d9ced33be666212eefdfd8c60b6b4f5437b0d6b6a5871c526029cd8a7db11fb9 -size 82067 +oid sha256:407a886dee6739c1075f8865603250ab0a2a7c79d4b8cdf8ed2f7617c8cdd9aa +size 82078 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png index e844f45ccb..d7ac2cba9d 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:698d7c9c8cee25b3bbae6ff113fa651028e889edc9d66816890f35f868139ca7 -size 76342 +oid sha256:b5cfe3523c7a0fe50dbac6fe6ce842999c60b205d7347697c72b89074bf29c56 +size 76369 diff --git a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png index 9f813e29df..7f29e70c79 100644 --- a/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.analytics.impl_AnalyticsOptInView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33de9fdcd218a71f374a436e330d7a3117aeafeb6594a253363914c88a0a8fd3 -size 74534 +oid sha256:4bdb9e6d6d8423e9d7a847095b2a96fb47b2ed6fee977c6e163682b5f20e43db +size 74563 diff --git a/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en.png index e74a44bc85..ec148b5c75 100644 --- a/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:780559f9a0677b007c93f0c24bef94ab63c89f2d8c124084557c5c8dec0ea3d6 -size 60500 +oid sha256:48f54197f74cf0675e04a83efbb278728568024bcec38a8553b623cdba384e50 +size 60460 diff --git a/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en.png index 3634085549..870bdf0bca 100644 --- a/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97e068729df68971b35727236873cc7954ae5e63890f255948fb4ccd98b3ae2f -size 59572 +oid sha256:b2e2356a3f8521649d6ad2c10f654142f87141e3f747db5a6f6ba25483c8171a +size 59516 diff --git a/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Day_0_en.png index 0a8fde8d9b..4b009d650c 100644 --- a/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80252fdf997b3189af014f4606ee8ba60e6576feb1b3bfd6a2a551eafefba78c -size 66409 +oid sha256:a17c98fc02077a91853cefa1ad7865ba8dd8fb399e58b9bea81617b797cf373f +size 66410 diff --git a/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Night_0_en.png index 7aa315a611..d4d3d5510e 100644 --- a/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.call.impl.ui_IncomingCallScreen_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30ae50e1f771deb025c456623019749a19cf08663cc2fa531d0865ea3b90e2b1 -size 58497 +oid sha256:baf0dbd830742e896f33c47254d0cc48598916758f6ea332710dc0d761002f36 +size 58503 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png index ce5f59afc4..3825bdd8c4 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fe1781052c62eb808e6b53972238f46626282053c15630f76fe99294614180d -size 13366 +oid sha256:84b11cca43a63a1b5d68b161d7c49c5d62f2fc6f6bea630fe406de52c0773a03 +size 13377 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png index 1b1dc0480b..bdff2798ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68fcdde40d2f2f1fa66186b0850b4ac70066314f9ebb6e515d4a0af528ac25cb -size 50316 +oid sha256:5584bdca22931e512ada5d1e761707901ac1c98054ba564fba3120eff85a7723 +size 50276 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png index 223d3ae94a..e972b8cca8 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a0bf177f0f5fd5a939bbc51c922487614e3a8902f6d19327ee34f3654794053 -size 52657 +oid sha256:8f0d5d448b130c730783bb5d0a2cfd6b5409543e334d2196f3735325815d391e +size 52674 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 index ebe4ad0b9a..5ed3836326 100644 --- 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 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:997f0b0adc3e503cae7420dfbcfe7358b0597dc3f2d9325228a5f5f4feda76b1 -size 54407 +oid sha256:52d24be04216937e0f79d52b08679b34f5d7fd7cac27f8d4fcc379b9d26b98fa +size 54383 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png index 79d8a34307..09b0f771ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3776c6e147cf70af109a8de76dc19575788f98afd55321601eaaf179f76b48c -size 67448 +oid sha256:eed59ebd3d64a679d57edf37d44541de4ac05c019254e2252cf55c31c303bd69 +size 67443 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png index b7e915c94b..4ffff911da 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76630125c828f4b7d34632e21ec5615a425f3eb5f17b15c963495e0247dcf820 -size 61249 +oid sha256:9fc439dadbe18a578d5436c8a6c85c62777b95b7169322e0944fe085d79599b1 +size 61243 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png index 54a11c5829..d1b21ebee2 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63ab147dd015d8dc1f3473749c0c1be34876610ca699e54c6f207624e14cf32c -size 61201 +oid sha256:393bf3509a833f7af78a57e546ce6d35ca3bef4d4523ff12af657d1c573b87c5 +size 61190 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png index aa65e67974..a2bc4b768f 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b62c47c4ae5f1d6a25fc5cdaa5e48c4815ae0de089f5e7b4770317281dc77258 -size 55033 +oid sha256:69ce060cdeec55a6a40494d49b099c0c34dab3027e64446c8900e021f55f6355 +size 55027 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png index fe790d6f38..9e8598c0c7 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4586403fc98b395696d938889d594ae6c7d20ec328319c372734a750191dca38 -size 12464 +oid sha256:c50a521b082cc991afe1d266a15bb7287bf38b39e88b34c64ec41ba8d4f44120 +size 12469 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png index af622b1d7a..dbf2be2d17 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c08f5d276bdf222ec98929baa53275e40a76282c9bd15bbf3dce231223ea863 -size 59021 +oid sha256:8301124f0464ecd17016d93160899f6a4f3d4bb14ebd8dcd4bc3c3bd77e41996 +size 58980 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png index c6e3982793..a9ef82274d 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de42de69f32f5b1657cb703028d7cce38e8d427360e92c1786d317013f17323d -size 61473 +oid sha256:3842fe35adfa08d01b34223bdde54fb9113df7eeb028f17705c432348f56ca79 +size 61437 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png index 599e05ca89..d905418495 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12a5a89c57cf315b9a2a753cdd43e6721d8565ff794b4fc31a9ef7b1b643ad1c -size 52704 +oid sha256:98240342e9ce368a676a950eb1ec40d1720cccde36e45e9b8896c887d14d3bf1 +size 52662 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png index edc3c60b54..9be427d4b6 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ad3480ab59df477aef94e2a1b57d247f09ae4a3beedf917ea445df0fb1dbd8d -size 65037 +oid sha256:b4885040583de68748dc10cf85e0f395f7ae8a0ef08d8aeed14826fafec22990 +size 65024 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png index 0bdc12d42d..bad5ea3df7 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b896caea7163d9e66bab518afbb8d59fbb492bc67677de6fdf4aee73f2909459 -size 12642 +oid sha256:3fb7aa111a4519e3f608a3ba1e059195c8b07bec33ae91a896596ae90abf4fd4 +size 12653 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png index f463ab8857..58bb111a14 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ad0df06cade954de31bc7e6e5d5e14c1ed9590e70f425da6b82104839fe54eb -size 48592 +oid sha256:a4afca3e00f67a85c273efaec9747895787a2a5f07f66f9f9ae7e34ee4e78cc3 +size 48598 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png index 4ef1339489..f9a22a58e5 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:800600290cbb91a528273e2c88f6d73bc5c71b9d395315aa280277861b74c035 -size 53461 +oid sha256:1d5e5203690478c822e1a77204f315158c81c4835ce375ced1189c85fc21db9d +size 53473 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 index 9f022eed6a..74c7a8a44d 100644 --- 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 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae2f05609d543bb6bb99df4f371d81b5d7c5040c66003afb30e6217395c51d0b -size 55040 +oid sha256:ccafa3f630c5db13f1b083e3ce30a9b69e8407549a12f119b07191b128c19b9e +size 55031 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png index 166bc7e714..7620426662 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be065a6d9b0b6f24ae9f773b70f7c36d96939978ddaeee5da889e3d00388cc0e -size 68006 +oid sha256:04b5299a6a10e01034298840b0249b53c5d72d6644884d8ea609588f3f3677b4 +size 67976 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png index f5b8ab7002..7c3cab3e11 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82438000e7b5369d1cb45ca3f1b67599c77bcfac54fe50335509c144c7df33b4 -size 61968 +oid sha256:50f59c4374146f6bff5f13e8a9be522a85ec642d4e9bd27dba1fc5ab1a5163c7 +size 61955 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png index ed9e1167f0..f55e0ac7a6 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99628f108a0c165316d77b1189a70ebb8b4754ae3f96960b616d1305879324fd -size 61907 +oid sha256:37a79b2f5d6aedaef2dec74defd0f2a17af49239058a606f0785e82e56d833ec +size 61887 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png index 1a2eb9ea44..b9a71909bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63639bf715af2a18f888a9fe54ea18403a13babdbd45fd86242253333cf1c5e8 -size 55372 +oid sha256:aa1bda0999bc62e108680c0adb2dea2d692cd217671f60b7c57ec4f376a02c10 +size 55357 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png index 9df27a7f9d..6ab0e8bc19 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a42ac1076451395c040f96f1fffd20f3cd851f2272a6346ef83bc6661f21ced -size 12475 +oid sha256:78ebe0649f31303d844a0175a8734a976e73b4d21769c1f62a93e41718da4815 +size 12469 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png index 91bcf2c395..bdb1f920d1 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ded460697c44b23c47534b786d5f259d2ee87bbb6cffb8c6cbd6777bd40090c4 -size 56849 +oid sha256:be70d554880dec4eb3816360dbdbb6b678f2300afc10c91e741418cfac93cfb4 +size 56852 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png index 42f0ff8d98..0878774f51 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76cb14f12f0d8304d3f3125026d79ac8b2012d00067578bee261dcba864e627e -size 59439 +oid sha256:341420a42fa71d28867237c882bbc53721f56f2b5466700722012badaeec4b1c +size 59445 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png index ca3f9b212b..16aef17c3d 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52f1de6e6bc921fd5b1862eb4804bd9a84474aa6e02bd34e2dfd8492a8f85fe7 -size 51790 +oid sha256:c8853f6226a69b2df97ea4839d2c5bb1d77f14eb62a587f929936c7013f88bff +size 51795 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png index e5783a2ca3..ccb2d31d48 100644 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2973248a09cc824af7545f1209720e235e5dcdbde3b4f863d50c96c67e19dd7f -size 64709 +oid sha256:ac14dd774fca2924f599bd831d4fcad9931011174108bae5da1bcf8a5db6c4cf +size 64688 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en.png index 88a6681247..01986a9c5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67b2982aebfe50751bf282f44f4b209cbf246f04708b9e5564843f1b926cc804 -size 29575 +oid sha256:61d96e2f91d217a1112421633426692fc5a2c35e9756d4980bd75fb3088a4b8f +size 29568 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en.png index 933f4d0185..2f8038140b 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7a0b233fa704f80e06b4e5ed3b787722545e30b0adf3729b1618785169c8511 -size 35832 +oid sha256:4cf57997e6ca0c7244811154564f27c2af135f0a85dc4598e16df51251096b65 +size 35844 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en.png index 867eb9e084..07a00b2546 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc153a3db10441cb166f2cf1d767f59bd77f4b45ff3f6a2dce02324f265626b1 -size 56368 +oid sha256:6f8f4593373a4229d852a8b4e2e3b937796e45135a032afbbd0563a4fa5e651c +size 56375 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en.png index c5b033d1be..4a562be62c 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8210b16c986cd409f1be925c0d6b69043fcf8274cbdd6acd92db1b158dce20b2 -size 56751 +oid sha256:5c80c8f9ee81b35b6054a10872e14d4fc4d8654b7747a620ea4b9a79d3595265 +size 56756 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en.png index cd8f4067be..d2d4c19999 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c63bb93bfe96508f749f0640d0f617709afb6ede6ed1b1a8ee6d9f4f013db2d0 -size 58453 +oid sha256:27c31889281d6ba95448b033a07f1e41bc1c55bed26840cc796283a0f9368bf0 +size 58454 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en.png index 867eb9e084..07a00b2546 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc153a3db10441cb166f2cf1d767f59bd77f4b45ff3f6a2dce02324f265626b1 -size 56368 +oid sha256:6f8f4593373a4229d852a8b4e2e3b937796e45135a032afbbd0563a4fa5e651c +size 56375 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en.png index e5c55a3f59..e6a51b3035 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86dde79666a45917d0e0dba67494d1c8173add8411753d533bc745d29ad18414 +oid sha256:f3e9fb42af90f7db14c02d572366ce59808ebd551cac7cc8552ee308d65f7c83 size 30607 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en.png index 0d444e8f35..0bbe373b9d 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:686dd48e4b76b6f5bc06c8b2751b981a5a53dfba9821a138d2c64a9a9aacdd3c -size 36979 +oid sha256:3b9bb30aec0b92dd5d352dd9dec4d26177ecb38a10c2984bab5c4bd4584b9b2d +size 36992 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en.png index 661406ac93..dd9a8c8bf5 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c24eec8e26ba06ddb216e3d5335a139f947d9ff576dc8737af0bb713e0d68a1 -size 58216 +oid sha256:0c7b44d045dbea3f47c774465be245046e972ade8ad6b9240df956c685dcbd59 +size 58228 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en.png index df682abb60..7067367b4d 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:749645226d6edf24bb3ee411a5986631a5cc0c4139991fe5d0223a34af1014fd -size 58570 +oid sha256:3ee8385caada3a2739834bbabe1411d2f6da4d645d5b99cf07a6da96fe5eabb9 +size 58584 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en.png index 1e074c8a8a..152991f1ef 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:399eb564ed9afc3bb5a149f2b6f5abdc2e202ea476a9bc3dcc6cdc85e23b73bf -size 60361 +oid sha256:fb1bff539ab70b3d8bb8ae5f5490374e855c9b7807d1868b0aa1cffacc10e1f5 +size 60382 diff --git a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en.png b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en.png index 661406ac93..dd9a8c8bf5 100644 --- a/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c24eec8e26ba06ddb216e3d5335a139f947d9ff576dc8737af0bb713e0d68a1 -size 58216 +oid sha256:0c7b44d045dbea3f47c774465be245046e972ade8ad6b9240df956c685dcbd59 +size 58228 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png index df14d11ae1..01a2a1581f 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:103e79c8b65f05b98d117c41d0061b433c26993baf9b632c41618e11653577d1 -size 69003 +oid sha256:17869867557671ffd51eb97d007e4ce5a8e4f748d36de9a6239dd8d98b42b8c8 +size 68998 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png index 356a0c3d35..0aecf53c24 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.notifications_NotificationsOptInView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75c6db71dfeae4a88096fc990b4bf47f00e398d38794c4792af229678030559d -size 60075 +oid sha256:aa92893b8828f832cda6b5b06252630c79d401385bec853aaadd9e64d0ea3f2e +size 60072 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en.png index 65b47e6787..d2d440361b 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94745803f0bc578f7973f0d3ca3c28d9b2d430fdca9a0e458c3c8a23e821a1a3 -size 29589 +oid sha256:bd21306e6755dc6ef85503d6452bc0b00e4a171f9c4980ae78149eadc4804ec6 +size 29584 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en.png index 4a2f90aadf..53e85fbcaf 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1e8e8233349788b0e2033a067b6678278b10b0e7eef8d7121219cbfd727513d -size 24679 +oid sha256:956bba0f418cf63f820765aebd07c1ade321694ad0a94fdf80d49afe7fc203b6 +size 24673 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en.png index 546c0a3811..0511248555 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24426371659a7ff4848d5687d6ea83d840218399f3e9976d9b300a68365062e5 -size 34389 +oid sha256:82e281fb8a4393950447717fe6ddfde12b484c27897cae9c9b0381072fb0e5e6 +size 34386 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en.png index a395192832..a5a91a0fd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:195206366f922f94e2386ff174d09d27352a13d4c2ac569607e33742cfce52fd -size 29629 +oid sha256:223b1fbad4d64dbf60d875244a8e27d11aa0cded90b765bd4c894cd5c3aac541 +size 29622 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en.png index 69a3223608..d0bf369aac 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:404d1a95f160d47feeeb5f6064881e5860a07720cfdfc65cd2cf28891175cab9 -size 28781 +oid sha256:4a6f8a6dd408633bc26c447b8c7c2ed8456091ba575c3622d2f5c4fc3c006ebf +size 28770 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en.png index d9c92bbff7..cb5f8a11bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:626b8419602226fb772ea9fc30baebb2a68f1761995d7806ad57030b158805b4 -size 24161 +oid sha256:1493a5469e99dfac63d6b550d53b7f63292d4812780f69a4593ba7da772493dd +size 24149 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en.png index 9cd3e22312..142a18a8f1 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3ae4f2b557ca5a14511c7300dc9d6fa430f249926a016ec9051e736383d0c13 -size 33401 +oid sha256:d4e8418722ddef821df6b4413547c2bd833f9d3736b9b51f9113b464a8296935 +size 33392 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en.png index 05c004aea9..d7723e7b07 100644 --- a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:566100d5e755cf7d64271123decacdf5bfc6bb4f305f95b00b384a14a6921945 -size 28862 +oid sha256:4255ae26dae22d495b6a4e027bda4fefb1eeb6182d2f945eaebf8258982cb404 +size 28853 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Day_0_en.png index aba4e77ed2..5a4567e334 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f22d990245fd9dd182545e728aeef8ab341ffef4b15a4f7dd946ab57291d5165 -size 26043 +oid sha256:b8a79530bbf328c00921ab51a5b8cdee70e2e40b55cdadf1a68a32265c2b5e0c +size 26052 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Night_0_en.png index c07157261b..8bd3902c3a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_BatteryOptimizationBanner_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4f770f851e0387e45ded5c03c8d2d6a48906200e2679951d882b7839053879a -size 25335 +oid sha256:32392022d54581bdab6476f2af54d55ad36864d403d801ce8302ece77066445c +size 25336 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en.png index 1d64f0f4a8..957ab01612 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db71ec762f862f221b69d698f3d3aef293fc48796ffb42c449b9cca4644d158b -size 25880 +oid sha256:11db35a1a77ebc1699ed5f9bebf6995dd99b3cc0f750d052778c08250c973169 +size 25891 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en.png index 715208e8f2..1d973d36f0 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:886ca25c790b327e009374b221c459522aa74b552112044016b9fb951f9eeebe -size 25232 +oid sha256:d3e65aa2bf0d012ee4189d4ee8400579c4681e5a9875e8992a928ce9e021c776 +size 25241 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png index dd337cac3b..0893c1898d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b289624c8461e08c945a254eb629ea536552e2652c7182be21a7bd9f183da022 -size 26185 +oid sha256:03c8caa1e34ae21b40e3caf4ba811a9d4d46ee5ec2d22d6e0297c527e8311297 +size 26167 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png index 640aebb723..6dc86a0486 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b86aaf39367bd454a913c4ed6cd17bbaff52e54349e0e6d363d6f84ccdc43c5f -size 23678 +oid sha256:d3e9cc7b076dfba2e977bd9b4b07a556d27f7587e81f199ee5424c39f4683f79 +size 23673 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png index df54400774..6c862e6b69 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5052046774204a99f56206efce6283445bd7ee6ec242b274b6f46416d8b59500 -size 26526 +oid sha256:2b850d625de1abbe020e1aade5f854af6d91f543ff6f46d859cd6c37db350e96 +size 26508 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png index 9b1fe1d49d..0ff257aa28 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc35300187ee623de17bef9ec8697ff1f3eb1fd3edef2f33e397f6ca420ea568 -size 24041 +oid sha256:3420f8cb3bd5d33d5cae776e57cfcaf496d2e0d26037029380e9171bad2ea177 +size 24034 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png index 839bb05b9c..35767dbd17 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ca6085c7c569bb0a818390f13d0a541f1ff991fc175b6982ef5024b39ef6107 -size 26277 +oid sha256:efb9a3d83c703a3222b25a4f5f577a29ceafb749afa8e8901050590beb164bc3 +size 26258 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png index 73b1151326..48538f8efa 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07d516b7faf26586afedc0abe089adea55dc89604969f1e2356c1702bba366a1 -size 23741 +oid sha256:ebfd6e53dde99f12ce1817a15f6f6112c478095eb3a4d3c8ec4397a8118d389b +size 23736 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en.png index 9ad2742b28..1bf3f9ed44 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3889357c2c9c062b8180a046b65e12f17fc3463d4f3c76e4957b9fa34dc8cece -size 29857 +oid sha256:2274f1a397290c8a4a86a590ec98e1daff17870f0f1f65d51865345e3c328643 +size 29864 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en.png index 1a1e151787..f69b2457b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d93238b171ce6ccb528b871cb90d696a01b2e711984011a1fa74cf82755858a6 -size 29249 +oid sha256:2326d7a97051edef38db9dea0904b70209009fd8da4cc2cbef9e4a5f6743329a +size 29259 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Day_0_en.png index dbfe7bfa4a..02d77810f0 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:367bec41d3cf5e7d0e369a4610584c5a11ca7a69fe26b794290c49027de465a4 -size 23221 +oid sha256:6822d3eda2c6508fec9932d351694f438abc3543caade47da894663270869a7e +size 23233 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Night_0_en.png index 0d2f51d4c1..ee271f0f5b 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_NewNotificationSoundBanner_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e666d80cb22b979a075ee9b749a36c4f9a4874149ba4d736d745c8311f6e0e85 -size 22563 +oid sha256:eb0ad26e57fa61962cd27e74f49632f90aa6275bb5e32a2f10aa7ff3fdc610ea +size 22569 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_3_en.png index 94f2ca7779..931d67ab51 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:946362107e6dd59fcacc96c30181d26891d0fad62d1461f4293800a61bac5064 -size 18122 +oid sha256:f6ec9b70fac0c97ab1ba5fa4e14e531f04db52d390baa99f149b34ec125772ec +size 18094 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_4_en.png index a5dc0183d4..86498c0220 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89f53b18a0ace95a1b693c20bf497f4b3930872408bdb3b25fead23f5eb7515e -size 47075 +oid sha256:f5c9a151450647781316f44623c4385c955977b3049adb6cb940a54e72f9ad00 +size 47060 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_5_en.png index e1efabe407..53a25223bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf85a6a94ee3eed576e91c7a3a55e45571dff4a6dce1f6c6bbd22845fb01a76b -size 59896 +oid sha256:9d035c3d696dae89026dbcc8cfc918a98cc8bb8b3f79548b57d36b96b29f097f +size 59908 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_3_en.png index dcda788683..1f16609123 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdfd9e4a398d6b302f03fd97dd2ddb0cb3f0c04b20f5ce1d9eb25d6478a97939 -size 17718 +oid sha256:7b8aad46ee1d58add3d6ce01f1b5c8bb8fd2e73be676dd33f9b827bfff858204 +size 17703 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_4_en.png index da67dff868..a8390799b1 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f764a6ed1226e2f1c92b92aa426fda4c4bbc97b34cf8e7a6634a1cd6fd15dee7 -size 45529 +oid sha256:7db2a27e55122e0bdb24d58bc02e6154346fbe4d0845d29063b634544debbaf6 +size 45513 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_5_en.png index 70f3c084fe..71048bb36d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomListContentView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4646f1622c26a45208fa8ad59c9f531c1794e1874e31e50942f459bf3be3de2 -size 58927 +oid sha256:bf2cedb0979d0eb916df2a1810c7d872d159214b0e26d5b3a353001dfed0aa06 +size 58935 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_11_en.png index 0409089568..164dbf2c57 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ade89eec1d95966f96987d06f176072241e2fbcd130a086cf859f0f52b189e4 -size 17576 +oid sha256:f388fc1e836916c906c31c9d691d2ff3f1a29e12cbab297c4c551c491906aecc +size 17571 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_12_en.png index 2113cf2193..7fd9c49d16 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da5e1d56e214382319a2cb67208be39e6207c871df2aef0beb3cccf5dc75c54f -size 15777 +oid sha256:ac6b4708f56c5b76300f0c50182d9f1e13fb8c772c6e606447b204c391bd0ea1 +size 15767 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_13_en.png index 159ae4b305..e1e2d4d27e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dec3176140a55c1ad7db0b6170c0b77a3a053c84a805bdd5156f14b9518ce3ba +oid sha256:fb15fa95148cfb77111e39cb1e1591fe81c4857f210cb7863346b9dd2aff22ac size 10432 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_14_en.png index 16d36bcf46..adb7609d1f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a63f35d985659577a36a2b8abc3f61cb2b2caace25f6028fc0946aff6311f90 -size 11627 +oid sha256:25b0acdecc9ae9c78f70ab0950f5ab9dd873ebfeb4c4ef5d10b49cde7ecf205b +size 11640 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_15_en.png index 0213f0cc9f..6a0afa7ad4 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c4ca5a787d0e47eae1ac04eb58c8d1b67bd2cc088f57127001ef83e88648cfe -size 12995 +oid sha256:26dcce8dba20d0f5d7657be53595c4f87fc2605cbc6255a845c51f063ae51405 +size 13002 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_16_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_16_en.png index f4648ff7b8..ffd6ba0b54 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dae6f8ae15d48ce5e987c4829d2356ccef9a3bfaf047a6d66d2af499922fc021 -size 11167 +oid sha256:f639515409af3bfa8ace4de35faaff91e5e082403d8d48ca949cb4ab8e2552cc +size 11179 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_17_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_17_en.png index 20347b9a0d..adc3650ac8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2c0b4d13f17337b17e6ff5d6a24f3a9a9f18056b294f7d15f90970ddf034135 -size 12871 +oid sha256:63d773c4b9fa2661b357a5821c668c66a133406144fabca7e30af6070bd630ab +size 12870 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_18_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_18_en.png index 9248348abe..90dd6a3dac 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_18_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_18_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d6da75a924634bd285d9e3a31ffbcd56c915a8d03ac74c2a08dd0f0a8692d53 -size 14110 +oid sha256:3b539aeae1bad94ad344a1e4feb340420e1808b2de427e64b5b11be599f27def +size 14107 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_19_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_19_en.png index f7d951381f..74f6883955 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_19_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_19_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79d04e945b82cc81765b65addc4c669946fd297cb5e44dfe4951d683b2a05e84 -size 16536 +oid sha256:c32ed4e78a93e4c9ee9af0aff7af7eec5e10ff6b585651ad4c3accb6f16cfe63 +size 16525 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_20_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_20_en.png index 8fb70c4d39..bd335617a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_20_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_20_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f793bdabcd0dc73ddaeda10ed2b4244e01a5de2362751fe78f518a76784a6ddb -size 14542 +oid sha256:d414edb059bdf5daef8718c87b3303b7f04f0b6479bd8be752039beba5b3bdfa +size 14537 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_21_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_21_en.png index d58c0b4d69..f496f280e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_21_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_21_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06401b7a38abbaa1f35bb76f3effce371ed2020fe5244b4650c2b5941282e387 +oid sha256:33d9ddf9655e75a686493ce8b4619e0cbb18e5cc0c88343cd111a7ce01e51a04 size 14838 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_22_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_22_en.png index 9e9945164d..a66a802031 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_22_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_22_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d18776af7125630d084f4c268fafa49a32b598ca9ba91a1672a9f7020eb48b8 -size 16069 +oid sha256:cbb6c21cbe6140b9a6dbf0a30e253080dd4f0c2deb99fb74b7f0bb1c3e5d36bf +size 16068 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_23_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_23_en.png index 164790cb18..7ef66e0ece 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_23_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_23_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cca40d49d1d9abc4a32fd79f0c1ab606f774de8a4562c0089c80e8202b0dfa14 -size 18527 +oid sha256:6bae79fd8d9568ae0b1dd85d5782436f4627311adf87c121d7f7f31dbfe122e1 +size 18506 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_24_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_24_en.png index 32fbf816e2..cafe6f8e03 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_24_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_24_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bde1e0a456c6624d34c98b820b83e9a7ecf351794dd322cc2d0a424e64286488 -size 16527 +oid sha256:97e4e0b2f5f12f8b634aeec360e3a47b0a772ba5d4235255e1a2a89ed415243f +size 16518 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_25_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_25_en.png index 35a229fa4c..bb2caaf5bb 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_25_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_25_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d7293e427be92078012e83ff040dd2073fe1d3533b9845b386fdbeecef03bb2 -size 11201 +oid sha256:a100b143e48e40fa110e5ab8cb5e04f33d2502850bef9d01c113b6d5b75e1f70 +size 11205 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_26_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_26_en.png index 5bf95efb7f..adc938e829 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_26_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_26_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:186526d0647c805c7eb324dda12a6f594a6ae867d68a8f757643601b1ea21691 -size 12430 +oid sha256:711a991953da8625cf89b926a3becf595cb14f982bde414d261ec759337a8e5d +size 12435 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_27_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_27_en.png index 3c8e044481..7aa0c085a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_27_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_27_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54c28865f9953411d1a70d9c854af8607e909e3839b248aa8b3f03129d81b373 -size 13910 +oid sha256:ce5c296390da6d786bed4956b951ddf86b556a9cf253517a48a59fab54268a6c +size 13914 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_28_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_28_en.png index d752309fb3..4a67b204be 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_28_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_28_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:655571779da4665504903b4dec2c9427929f459320cfcc571e728b146b02c7c9 -size 11949 +oid sha256:bb07590fe78d6aa2e1f36a1eb25553c554d94afdc2910fee1f00d570649a023a +size 11957 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_7_en.png index 019f2782d5..535aacb021 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:507a1753dfb87c246d1798d9d3b51a8078998a98d07adf4a3e16397fd6d6e28d -size 15604 +oid sha256:dbf412d003828e0ced05e50c6e6982c7129debf072fbd99701bc7317eaa3cfad +size 15589 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_8_en.png index ccc7ff8410..3b28de6bce 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46f12320840183ac4232ed78e06a6fcbe219f7fe95d7fef5ed721900b0579439 -size 13786 +oid sha256:4cfa82fe00f1cb1b8821677ba61eb64f2ebe600e84b370145da25bc32c3cffcc +size 13775 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_11_en.png index c87eb34637..e2356d490a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de1e862f177e76580c269089cb126700ea2c73f6a88ac09241a356f6be20202a +oid sha256:c72a31def7d8574ab3ac73469153d148fc000d05f5c16e4fdf5cd545ec317a8d size 17178 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_12_en.png index 5af9a4e6bb..c35c40b1c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4eec85eb8c2425b8ce954fc46239f7921d2d716800da7fe0e6ffc96fd738c2e8 -size 15443 +oid sha256:0524e55818eb73c3b7ec1045fe51172f74cc244e682d4bff043d02285587b245 +size 15447 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_13_en.png index 6800420a30..c6f600d5e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be7cc088c55fd33d907fc8c070d88a74bd8afe145c6ae3309b7079ec0e4d7e5c -size 10479 +oid sha256:3442f14ed9ad6a5ca13663204367ef31606c7bc52c353445f91633f5521df005 +size 10483 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_14_en.png index 4db15a09f9..ba73c32c54 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab316f339bdfbfc6b6f5d3adf9872ac73e52359b3de98b2be67ee4ab2b5646da -size 11613 +oid sha256:43c91dbbeb1f4871a385b799853348f58952a1404a07414116b7da796e1b68e2 +size 11614 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_15_en.png index 4910050dbe..6d1e8ed2ca 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aac751775fc22d7cdbb25ab646d7fbb71b1abb76d91f9314c643cd30d89a527 -size 12914 +oid sha256:eb83679aa492ad9925ce869b8e6b1f97134bf1f1bb7377dc7ec0b841f31dd182 +size 12903 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_16_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_16_en.png index 79b737095f..eee14a5173 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c548afe59fd077b9c895257ce69d50edd70271a3107f2a6145fd0bbb8d37f09b -size 11173 +oid sha256:994720cc5229557013cf2c21be861a878591a794c8bb67e934379edfb1333e7b +size 11167 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_17_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_17_en.png index 5e798648d4..9937199925 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3acc1a3dd6af8f73b91e99d19cb16b9439c27af22e2704afef87e470865f3c35 -size 12910 +oid sha256:6a5799d191f1d2403c2f064654d98af81f8eb533f208e5d8fd782ec3a9a3763d +size 12911 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_18_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_18_en.png index 491f0c3364..1fc1a7e27e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_18_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_18_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ba050cf4c1c0a76f0baef4262c9c93f1abccf74cef8b54b3135129ebadd671c -size 14087 +oid sha256:7fce6cf1fa63e1f2c17bc01adac0cd85bf164d5f36efe63ecb2d6ba1c845500e +size 14086 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_19_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_19_en.png index c59b8f46b8..50c5a6eb95 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_19_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_19_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e53ebb9f38df05491a8294b8866c7e64a096612877caf43a828bc2b8e570e0d -size 16164 +oid sha256:5483164587c7e8d360d7d2bbeb15ca475cb72890b021555e06500f7bd013efd4 +size 16162 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_20_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_20_en.png index 539cccf1e0..5b6dcaa8ed 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_20_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_20_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da4c0bdd794b10ead48cefbd12798ce1b1d332911a7de01c8a0657d9b5c5e548 -size 14291 +oid sha256:bc6cd2e9486ed676facfa44ee6696f36742368e9d9a958e5aa05c3825cf28452 +size 14289 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_21_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_21_en.png index b3970c0a90..6adb42395c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_21_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_21_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b381a41fd73147740ca806fc350cfcabee9def4c5094244332b13c293d622992 -size 14790 +oid sha256:b7c8d9ffa68b0bae11889f600ca252e5d5ea44ce6f0ae9270e74d86ed2a5e435 +size 14789 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_22_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_22_en.png index bfcc5c890f..426c706101 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_22_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_22_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3168aadcf3fa5051c637064457ee2a5db4a9ce8a15dbb623ac705bc0c8a72ee8 -size 15951 +oid sha256:70a2c070761542dd6360dd2395ad1f283c025a4fbb364a6337013e62cb2c549d +size 15950 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_23_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_23_en.png index 4ed992cc0b..9d1ed84f9a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_23_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_23_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf984cf49baeed40cd7247548662b3ca95b9838c85285135e6fe42c5296b12cb -size 18039 +oid sha256:531ad97b4f3cd43caa272dc146322aa19ccbb1c19310e880d985c1f42802ff73 +size 18036 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_24_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_24_en.png index f68fc64a42..291b2dcae5 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_24_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_24_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdf0fd1f9b0c2a2924d4b4cc7e76212fcfa92d30fef297466b5881fe7d4d7594 -size 16163 +oid sha256:07880e90a099ec64daca53adbf7abc44076f1059953f466b845496417f70e5aa +size 16159 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_25_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_25_en.png index d246223b98..8a8d5ed3b8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_25_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_25_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e808ffb1828512646b17b1045ca1f780d4aec6ebdf46ec201edc0b698f5c5b6 -size 11210 +oid sha256:ea264a0c098066f5884da9f4862fed9dd361ee9c81bab9313dd173753060a475 +size 11205 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_26_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_26_en.png index bcdaafce53..d5627f99b6 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_26_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_26_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c981239c48f878f7019352d77272cd7bbb5cb753d1237c1abc10d491f453d82 -size 12358 +oid sha256:a4220538dc3ed7ac9f35ae1081504939f747c128094c884cb0387c8574338342 +size 12342 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_27_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_27_en.png index b50f760f06..5d58879e30 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_27_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_27_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf56c11b136e1807c5e5ed8ef3176f7e9ac78bdb663cb058c3caeb3a344c7337 -size 13767 +oid sha256:4a67e650c8e2010733eaf0b123a8ecc1d6fa0edfde5885c9097b74d63f1e83ed +size 13746 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_28_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_28_en.png index 7404a82cab..3d0f3a4bed 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_28_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_28_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44ee7c34d4892aae572d0f5b5c77c132d1171aded33c992b4b3f3aae613d9802 -size 11906 +oid sha256:8469320536eb0ace8305bc7a573e72afb00afaaa4ce4ccd2c7094e11b871c56e +size 11894 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_7_en.png index bf2e9819ba..325c7372d0 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a754b9973904f020e3915c8013f9cb82632c24350a1ac81f11f849755533f24e -size 15308 +oid sha256:8d72d3455c54be3e8927219bad87c3029e92be5eb390d056902723efc0a8e56d +size 15313 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_8_en.png index 051bdc0af4..e1d5b79940 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_RoomSummaryRow_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83a360bd2459d925acbbdbf0bc22d69523946f91d0633fbbc3d7861a111e1e6a -size 13554 +oid sha256:7dc378735e771d22f3cdca0644468711dbf8202dbd2aa85e8c5d874ce5c83429 +size 13558 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en.png index 1d88045242..53d51bd8f8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ba415e06d061cf31536ebd439468dd454a830e3fc40b1ae8e2932caa4f8e59f -size 32619 +oid sha256:1d512d99c854d1a27db692fcbcde83079e4ae944ca56d1fcc3d0780d6d089e5c +size 32633 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en.png index 686c12c49c..ab51263b10 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8401b6cc831ef1001e33b681dc6a7fa0cab0c17a88fa9f8fb77e5860105ea413 -size 31533 +oid sha256:cd022f877bfecca96d3bec83d15857dbd70153b140f3ea1ae6929f83ca5357c5 +size 31535 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png index 76e93d89ad..cfbfbd0a05 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef686771149fe9c26c50c7b27ded4054c3209e8c5b195903f95ed1909f37f506 -size 12229 +oid sha256:1d9f89148d3d67c91d8375088e3774dfa01e9d90acc9334725baf7c8aa2ae5fd +size 12195 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png index 5797b5d5ab..2c15e1bf2c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:463d90f7b0960008de42da80ca739d13db2b0896f4b13cde4d27f9c001b261b7 -size 11792 +oid sha256:9aa41ea9aae055f81f29189960e5c9ee7b394b3f2b27c5c8bb59fa5a74737171 +size 11793 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en.png index 77ea682158..61eda139cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18e44525b9acc696d1e6a1b736def39ae53bb30f2838a43db44ba72c9630ac8c -size 22633 +oid sha256:02779a816af386de44d4ea286b24cf32998adf471dd42c418c096a872cbb27a8 +size 22620 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en.png index d8c16a235b..6e2d03c94f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:652c6cbcb3efacae36068957b6d85a553c3fd86ec331d03e840fcb58216a0d90 -size 22833 +oid sha256:cb454d3b19178dc9c58248e350897037878b7a7b53786856658dcca2c9c726cc +size 22831 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en.png index 24a92503e5..52f91c529c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d7f6684e8b30db13a837d95c67a46a90f41f13c7d2cfc3efe04bb727e52483f -size 24124 +oid sha256:52580790f4a797f76ef9079a653842f97cb24632957cacfe3369312739e805c4 +size 24094 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en.png index a6bc862e50..91e8019985 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:228e82e68b30b1360028dfc70a3c8aafd79a7c6a3a30e24c68acc098be6f32ba -size 21713 +oid sha256:eb39bab7afe53fbc8ded9da0f1f64a61488118dcac73add5e824f8fb65c14e85 +size 21695 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en.png index 475044aa93..2b8d8a7211 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d63c56382c2785b05a320cd1f5cddf2f69acb1d9b0b611a8d2885bd837b9f549 -size 21965 +oid sha256:e2353f91c964b2d29f658d2847b3cd344c3c0466dbc26324f0f8e1ad0e0eb6bb +size 21939 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en.png index 1090d6c7a3..513e6917a6 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:694062f6698cc74b56fbe6ca2fbcc07401139bcaaa67d005a79cfbdba3f4c11c -size 23459 +oid sha256:36d9a1fa18533acc8643e141ac50ad398e3589776e0afa6764beb06b2b7f3f7d +size 23432 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_0_en.png index 933bf8fa4c..34f02e8396 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:970fe059448d148cc7472b57cd079f196ffac2dd94f01ed6600a3901793bb70b -size 4035 +oid sha256:c62f963015631bf364dcf5140dc2f5171af4f111ae143f83e5a53810b4ca9350 +size 4056 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_1_en.png index 604e3390f8..fdf4fd6693 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3077553914ca940eb2c11a6917d500d6761c95644fd319afb59445a61366d1fe -size 44010 +oid sha256:10d68a9d1c5913fe9c14edd6d3663b7692f9c9031dd08205ad290c4d1f1593bf +size 43973 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_0_en.png index 4c79a350f2..355541860b 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3238047b8ad520c348bfd26daac52242941bb2b5ab362676c890187c2c04cee -size 4027 +oid sha256:191c7bb9003e24180cea8d0ac4514939f115ca5f2685588857a282de1e00b048 +size 4015 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_1_en.png index dcfbd7077c..30bb25d9f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.search_RoomListSearchContent_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60723eabfb2f64a39abb1a1c3fb7afb12d9090101cd5ad5f49347d09f077e510 -size 43495 +oid sha256:6fb9912ee3b7489424e9f364610cb4f9c7c3276e17f7e6fe75c2be7a3cd84bf4 +size 43434 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png index 4b264c39dd..126917cd1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6cee41aea25e78f820acf98f01722062ab8247dcc78652b8ac9a27e60f24249 -size 88723 +oid sha256:7300d8335682f4b7b8ccbba229da035cc7146f991a4655a1f12951616871398e +size 88697 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png index d254ddf882..cfeda876a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52018347e4361a393b130d1ab479ed96685cacc362b72fd71d46666afef0e6cf -size 40949 +oid sha256:c1dc4637d968405a887b8db7087e3286995a0aff30c836d413992c9fff29e97a +size 40929 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png index a5fb3cca49..9a0a2cb314 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a56da5b32b6ee1ec6c21ec4a24420c219f1318b632fd91bb5e2d8e8d29f2b59 -size 86985 +oid sha256:9cc67ba23c47728faf5cea8f19fd4e3815721e6b08dd1432b57886efbe12d1e2 +size 86926 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png index 9a8e074a97..5c819158aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a96b3cd320587af70dd8dee4e285eb374d04ffc2ce8371a3cb07866f514f32f2 -size 39863 +oid sha256:46eed87406db894f387b653d32214ac376bd02cabdb200efea268bb2a4ee8240 +size 39837 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png index dc6b4dabbf..ff8012533c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a666f932d1a595763b3c88b31ffbe3d195ec0d986ca5f2c0173e8e25a6115317 -size 126085 +oid sha256:b2e52e92c69be9d083d6d55e03a7f2ae2176517ba913bd285903cea9a83fe63c +size 126094 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png index 434e671e21..0b457dcabc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01629494aec1673e7a57a99fbebae5d769a9ac035fe14d956a2fa5106f3f03a0 -size 65669 +oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 +size 65651 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png index b35c1fd5c1..bcc68d581d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d722145129767f0a4c207c658430d05dff82bbbf26b753fa1c32a9b9da165f9 -size 33618 +oid sha256:440881dfdccf466ac78d3486f05a16acf32c65cd9a926e51f9a03c8df153a996 +size 33572 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png index 2f749af0a2..53d3ff1d11 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79b3a78bcb4fa9193817019ea9490d700666079bf3c97f1f147eeb5d051ab8bd -size 28332 +oid sha256:4e7a170db66cbdae26a12cba6d221264097733e09fb868974ce2f29dbf4f942d +size 28313 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_12_en.png index 6c2626f706..7e2570b13d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:895dd2bc2d3fc9bb71031e141efdce554c905d3937e207d20a4698aca0caff51 -size 5777 +oid sha256:5fd1199e9a19f52eac7995aaeb2a6cf5d39625ee02276ced0fa9506768f2abae +size 5736 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png index b4b205ff7d..07417ab927 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:42412e042a5801dc5d3dadab3d13afa126cbbfe36b044d5202b4ae510550b310 -size 89050 +oid sha256:8af9abdb9af652dcd100b0919488852158dcd383e1407d6596409c1c595202eb +size 88965 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png index d36a7fdc44..c8d69be6ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb215a025a521cd3d5483059fe095619b1df6d5942759cb398e41a553da53bed -size 83553 +oid sha256:01384a14c49b7e9df154ac56c760e036f050538322c5a0c369e2aa824f28b675 +size 83473 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png index 97ffb49bef..62e6277f37 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1992b62b50aa348c73dd61c7af3f4bbd304053e3e5aeb898f8cea2194ea2fce -size 51371 +oid sha256:d85ed502c37c8486c9b7e235ebb639bb7a6ddcdfec388b48ec1626ca45d7fd95 +size 51335 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png index c313592de0..42dd60ab0e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38d5ef47e6d9cdf2b4cc34b7b521f177c93ccd86ab3543c33f2371a23617db3c -size 67668 +oid sha256:38a30f5099d4990e4172ba7f6831ecfec540abf51608ac1f99c46846190968f3 +size 67672 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png index 434e671e21..0b457dcabc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01629494aec1673e7a57a99fbebae5d769a9ac035fe14d956a2fa5106f3f03a0 -size 65669 +oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 +size 65651 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png index 3607aabc51..2aab6c37f3 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f73c001d770cf772101029706bece528dafb55b4615cf89508dc32aa41ebdc6 -size 62765 +oid sha256:af895f2282acdb069b511110514a258d0579c92280e0c1ea51245b06e903080f +size 62769 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png index 573d02a807..e5e9cd7d9f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd1294f7077b7d1cf6a048ecd3b51d1bb95fbb34df9c21e332dc0a7c75160ee8 -size 54965 +oid sha256:0a0fc1b40571d634ccc59e8266861adbaa0e0764c7c625b1352b064d08fd58f2 +size 54916 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png index 434e671e21..0b457dcabc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01629494aec1673e7a57a99fbebae5d769a9ac035fe14d956a2fa5106f3f03a0 -size 65669 +oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 +size 65651 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png index 08a72488b4..bedf1bbf89 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ee533ba496b10dd24a594d833b8576422ae7c1e9da8dc1b900a66d2f3d0d045 -size 53355 +oid sha256:c9a60d84f39fc3ef9d2f195bba774eec69029a65e362b4d626fdf7777ef87d4a +size 53308 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png index 7a6842c57d..62871d6ba7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:557aee243c3bae8bf8171034beb88b5ac93fbd927c2647840c0bacbfdde6d704 -size 53166 +oid sha256:0a4e4134b94e49fa3d13869d61b9a5d8636532ab24ede12b7ebb8ee39fd2e86c +size 53119 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png index 6d88b76b56..4df5d25fab 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b04a71ec89a73fb94cfba1ca5122f3fde7fc7cdc2f744e6c8cd7cce36c2bcf05 -size 51375 +oid sha256:6956c433583232ff3ce3b3801d93bd2f6887722238ae909136aa59e3123be368 +size 51330 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png index e3da44fc30..6845fffef2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ecdc5c80e9018a311a3b6bedc1ca75dbcf5199c74a2c2e66d6aeb88c2371994 -size 83408 +oid sha256:988b2f85ee11077fdf3e1640010ede4f2af05fa22c000ab01560082f4a3c1cde +size 83310 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png index 0500b123c3..239fc64c8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f652a27cfc9549246a566114f509049461d570eb110e3b6b13f341986664a28c -size 61116 +oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 +size 61105 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png index 6e34521a8c..4fe6a4ff29 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e40fe4d4fec92f833e772b969553763523367193b7d1083a8a847ebdb11a544 -size 29237 +oid sha256:c065e34ccdcb98cf347177057029fb052986e680eb3a0ce0d3ba1110f893a6ed +size 29213 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png index 3a15f9b453..47ddffda1a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9380a13b6ce7bc94d6b94775fc0b6f2ee5a8cae93225dc203fe7e3465968757f -size 23523 +oid sha256:aeecc6082c03bbb7fc3d5d2cff9c145fa6b1b2da253fc5d9d7df4b3b49705f67 +size 23513 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_12_en.png index d3c84007a1..b7953d0dcb 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90879c2e2bb089a4f90faeb8bd8e7dc463abe1cf50f08c3a30abd416482af6f4 -size 5659 +oid sha256:05c2d030d21627d1d7ed50c3f202bcf3822204d90703242dc29ee176983d69c0 +size 5598 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png index 841691b1e7..d0a8f10fc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e93783019b2fa77b2038dc0b61f5f8eb564871a0b8408f80591f57284d7ab8bb -size 83910 +oid sha256:c5fe9b4c81283662333aa5660f0c3f07e6209107ad591154841e2d6b4d55677e +size 83852 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png index 3e389216cb..e14744683d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adf6402b55003f39c6794e05bc0a8aad2f59dc6bdc96f1a9cca1231797cbd129 -size 78652 +oid sha256:4c6e83649d247f1ce450600a4875487079910810196a4f6e0e82703bfb04223b +size 78585 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png index 056e67daa4..ce3dbb3c5d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2707d2c17a242cceee4e2b3069f335489b170348a404ee4aa69a3117eb8ad09b -size 46465 +oid sha256:82748aa6dee71f50a9a1eaa1f34e2966126c4b13c4dc2a2a53c5588f8ba83f50 +size 46455 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png index 382db61814..09b66c14dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d6621e96a565a252c37f89e348365b888ed0bb5db83952f4f307153bd42ced9 -size 63057 +oid sha256:6917011813550fb50229e6d8326110aa1eccc7b2891f13b26ef29afd79e72916 +size 63088 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png index 0500b123c3..239fc64c8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f652a27cfc9549246a566114f509049461d570eb110e3b6b13f341986664a28c -size 61116 +oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 +size 61105 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png index 5dff4ad364..d17ac93bf7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb62720c97ba96c504543a78488516670916a9986e13e3f4102e741e040f7d8a -size 58840 +oid sha256:1b65c77c82e2a175dc73c87b119a0defe9e0d44b71e6f6abf5f39a1edd0f6a82 +size 58825 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png index a2cce20c03..5d00038e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8a8b0b2e6dfae21cf74cbf48f35e4bd52c1951d0ad24fdbb9a7d958b49d68fa -size 52156 +oid sha256:5f188d6dfb2a084f54af9c11385c227c8ef9b923e14c55713d8e5379830a50ec +size 52078 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png index 0500b123c3..239fc64c8d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f652a27cfc9549246a566114f509049461d570eb110e3b6b13f341986664a28c -size 61116 +oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 +size 61105 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png index eefcdf32fb..12050c9414 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f985cde6fd504ad8d8fb949f4db340f305449cb92b81c3b961b6c5c07f3b2ef7 -size 50555 +oid sha256:4484aa90c69fb2b8e15a0ab79ec6d8268dc1f9c53f60f483aa9da971b03d0614 +size 50523 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png index 537a106163..4bf6ba684f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2666484f45ee3535e48fd59839a2cb3d23f9ecb0cadafa1a57e5edd7025d0429 -size 50392 +oid sha256:3ede57bbda30891887e319e3021e93b4ace769fe4ece5881a11def1007691ecf +size 50366 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png index 1b93ea622f..6e6850d915 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:716b3f83353dca306faf0d111660a6b16512ebe833426b3cbc6f598318dc15f0 -size 48596 +oid sha256:fc60a51acd5b968a67901550ab52df73a8ac9d99609a3a09361b19fe1c25d767 +size 48574 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png index b0b25acabd..9383197705 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fa5bb00b9a154563b2554292830ffca9fd8b9d0feb6f116e811267130e4a7e8 -size 78601 +oid sha256:f3cd78e49e05786a2063cf41faaade789fa3e7da2b1ac693e1f9bf6ad606745d +size 78531 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en.png index 97ee108106..1ec8f0df6b 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8bcbccb41f9624a08138bfb6375367ee52d8c36a5891fc0f047b50ad2e544f71 -size 33175 +oid sha256:bf2428479ece456f7d53e73e20653fc5b24a99a00ca73899a8ccdd85d09870eb +size 33193 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en.png index 558e4ee3c7..ef720c3b5e 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdeeb86200f01e4390eae52a1a479becbc7f05204fb8472e69ed6c104186556f -size 38078 +oid sha256:e5d198eef4752c20fc48e1b4db0480f3173c5844ce76c6eb7d266dd223544393 +size 38091 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en.png index 31744f41d9..8ab2ebc5c4 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72d6f6ad5bdd53d8dab17e1e799c2dd7116052f1ba2e0bf0426ceb123ec4e61d -size 33374 +oid sha256:9f1adca90a84ede5280143c2a0b0fb78cede7e491428d4d8799fef0c9e233433 +size 33389 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en.png index a7be53547e..a868e27cbc 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76439a75dd0519c83467706c14150816728c7a938fe3f3d699871f7ae72deb3f -size 30110 +oid sha256:bd361831d456172aeff63b7343dae98fd818b588c8b4d179561f483189d5595f +size 30101 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en.png index 585eacbcd0..06805478c3 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:556349a370c77677ed83cc13bde92d4b399accecb2d7483ff16d1975278b9b14 -size 34644 +oid sha256:263e2a9c278c9ed6998e7fe0f0b741c6470a111ce020345a06f03149a6d0331b +size 34636 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en.png index e3da0a4600..546fe892fc 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9eb16438dd8f358fd0a37e49e53924da32029cc4842a539315aed2915c8a0fde -size 31789 +oid sha256:482efc683dbaa0ce6226362b5a67defa88ae37e2cfb833bdd5d6e16fc79b53a1 +size 31780 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en.png index acd4e46e1e..0e3a495743 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5bcc00a92920f3b9013a31ba378fbbf14ac9661b3d2a8debd095123de08b607 -size 36438 +oid sha256:722b7a5061e4fc95b4f982c9bfe631c8a392065bba4a7eb5ac15653f2fdb1a3d +size 36427 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en.png index 96b2a381fe..0da19a3628 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c713a274a7ede9e65f6fe42b5c84f3b52779dd6eefa96089b78406d27318d4f8 -size 31927 +oid sha256:b992c4cfec6b69842eba17c7ffcee8a72d8ad47aa32f35f954e0fd0e5dd5b17b +size 31919 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en.png index 5ebfb8d840..7e90a1a77a 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8d8e40dd667f72ad01dfd459257bdb307cf7f85939c5d827c7bfaf73f88f328 -size 28230 +oid sha256:37558fe844c968c497b5341b08ce847fd3b8f7473f91f591ff311bfe4e373823 +size 28242 diff --git a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en.png index 3426478870..9335053189 100644 --- a/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec082834362a27f1bfefe9376b0fab010b52483008f47bc4c2ecc4c5f0b8a987 -size 32083 +oid sha256:b940517d43db9289f1cac9a541d6e03472148fd4ced853799594c8531d6152aa +size 32078 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_0_en.png index 31d8d6d6ee..9241a7a37d 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aae19b03efb483fd312e5cf4b02e000af86941ce5c8e3472fe2410bc67178519 -size 9122 +oid sha256:085470e95dffbed6961109236a983d6d158d958f6bb47e597766ef6414e040aa +size 9109 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_1_en.png index 1e3446160f..8f21fdaf3d 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94341fe8aa52b4551ef8a73cf298aaa1c4352ae0d4c83990c04c4c6e491b64e8 -size 21444 +oid sha256:6cbe23f6cf9bc4f4a77e8e1b5b8a026c6bfc3aef1aae308a9f08488baff5fc53 +size 21416 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_2_en.png index bff2174041..86f83b88fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a40987c3fb50529128eee026fa9b21495bacac58bdf20a01a39fb24ea462f4c -size 6676 +oid sha256:c34f3966fcb3f6b0f0d136c5ffa6abc114e1dd72dee80ff96ad0541c89a5278f +size 6637 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_3_en.png index ab2eb0ce3e..28ae5b5bac 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c4f3ad870d9d86b96a3cadcf574a48469e72a2270c66eaf5040f7bce2c9fda7 -size 18936 +oid sha256:8db01c01f7f0d1c79738fc79aa127f1f4f7ebb5d0add127361298f2dae81f538 +size 18920 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_4_en.png index 09335740e8..27d72a9313 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ee1be1b069192b7e155139af4e3dba97fc21373d3e49d31be41f6263b733800 -size 8626 +oid sha256:195fc722f5d2e88a2dd83c5f9fb1de57e3c4613d7a391b9f998388dc3ebbb235 +size 8584 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_5_en.png index 7291dce252..e08a8add02 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e26d6a17523b87c2cb8b2078e0f4a1cfd8b1aa19fff022f97dff76dda9faab7 -size 38279 +oid sha256:5ce85ac67e6ff108ba0d333e43d5ee0f8017602b7c271945de779b15d39f4884 +size 38233 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_6_en.png index 47f0826f5c..b06373ab5c 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61e5b4a31c2ab2620324655c5968799bd758d7256eb89f544b9800d7a81bb91c -size 32521 +oid sha256:04086fce6b3b8b17a8736903c1975e3b08fb2273ca6c41fe71000b61ce7f0950 +size 32559 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_7_en.png index 9d3f70ba37..e4c273afd6 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cf9c53daca4b53a2615a4980c2d606292f3fa1aca30bcdd13827d89898aa3b6 -size 25449 +oid sha256:b796eb0b26e073beeff1ac1f87e8e403e39c6030d092fc3f18b29d26e34d57af +size 25476 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_9_en.png index 1e3446160f..8f21fdaf3d 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94341fe8aa52b4551ef8a73cf298aaa1c4352ae0d4c83990c04c4c6e491b64e8 -size 21444 +oid sha256:6cbe23f6cf9bc4f4a77e8e1b5b8a026c6bfc3aef1aae308a9f08488baff5fc53 +size 21416 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_0_en.png index d42ab638fa..67ac1fa292 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31143646f33a013c30bc4e1cfd6e66beb8af100521dfd9dc599a94be8e6f415c -size 8535 +oid sha256:5423698f4f64b323eb15bb484ddbd4791aac0df340b9ae61cca2215211bfeb1d +size 8555 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_1_en.png index 2de946c312..cd60ed7afe 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00a961c76598dc98a0d9c7a45781865984c51bb440bb1605c381e9496ca1789f -size 21971 +oid sha256:6c85d701da74df18b017594fea595e65b5dc258411c0cbc22b04f2feb94ba9fb +size 21977 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_2_en.png index d4004dd81d..4ea1bfc3cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d2fae553f7775986fe0c50adcbb581eabe7ebf2f82d39e1fef3d6ecc4e3c288 -size 6511 +oid sha256:345fcff2eb2a3672ee16bb60b8f27f2c9ec29888822de17075a74b3c5e0e501b +size 6502 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_3_en.png index fb722baf78..3002763e4a 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbdebc079f54dbac4ce540a87f3ffdd37c4631b4704fb0783313735515e6e820 -size 19853 +oid sha256:fe84ec8ccea9643617e2a7e6237122652ac5c2933113dd25f8abdbbf6e959ea7 +size 19861 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_4_en.png index 0553656788..0a4b7d4d53 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe4889333bc96358fb3121bdeb54d3d4d75eba234d318462da3985ee75cf8ed2 -size 8420 +oid sha256:3ab2aa6a0103eca29b52cd107fd3826ea509bc51238c2f6e521977ef79d480f2 +size 8411 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_5_en.png index 54fe5b9b5a..5649bb84ae 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6fc23abdd913a0538776d0d0e96ce02ba119302c939ae3517f3eb5bb74b1de5 -size 38995 +oid sha256:e3497c9641b660ff1de9a54e1051f9ee6fcebc31a631f681082d28834c1273df +size 38989 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_6_en.png index 4db335c11a..40e5dce4ed 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9591e809b411cc5192d35e08d79c6bc0e98bab6b01193207e5af94e778503eed -size 32679 +oid sha256:49c325c609a49cc5a843c257a0cf7977d2fac8916404d0e1f94b58274546ef73 +size 32660 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_7_en.png index 3c0bd76117..e9b761b471 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce62e536fd2413c1f15b00aeb9389591035196c74e45d27efab61a5d7add9b66 -size 25047 +oid sha256:66220acd53b2e0e60c710605d79f316c961dc10d281be650bdf50114c04be758 +size 25030 diff --git a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_9_en.png index 2de946c312..cd60ed7afe 100644 --- a/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.invitepeople.impl_InvitePeopleView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00a961c76598dc98a0d9c7a45781865984c51bb440bb1605c381e9496ca1789f -size 21971 +oid sha256:6c85d701da74df18b017594fea595e65b5dc258411c0cbc22b04f2feb94ba9fb +size 21977 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_0_en.png index fc843bc4f5..3aa1d4d134 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c88f9a3ecbcf7db13846a6074c75fca2ce6bdbe0edd850bfc139e01a4fdc0c8 -size 9956 +oid sha256:4884f1972998a969fa3a8948494bcd0247c1149b9340b1be845ffa432a0a0d9c +size 9978 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_10_en.png index 7475ebf250..067e2a2bb3 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8ed797426703ce250ebb4e0cd0d6753e0581a7751fc35654d12ebe4c0746a9b -size 39351 +oid sha256:dfe2f91dd046dcd7416cc2767f467d793e14b1587379e328659389515d37ff84 +size 39363 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_11_en.png index ce1e584d59..f8d9e39de8 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed26457abf2a6d89d61e911944b4e9f62de248c1939f997d0f8764e4c1ae08e9 -size 43088 +oid sha256:b57f48029efc014cd088ac6c36c3f6ecbb1b9c6c8f3ec77590112d09f700dbce +size 43131 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_12_en.png index ad220df759..4f948302b3 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46b410cba77b24d8657031f5fde29d4f25a639300862641ce0f8ad0de8ff99cb -size 44076 +oid sha256:874a0b5d64b35c45a0293ebddbeb887377a8a40134af68828ebea0de34ca8694 +size 44119 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png index af3739d987..0a1de185a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:950e90b7c2c67fc95c9d6698dc7436885ee80dcf9da7d8467b0027c04c03c8f5 -size 29243 +oid sha256:cda32ac453af958cc10e8578ec0f37cecc82740dfbf627b3ef01aebc01136338 +size 29274 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_14_en.png index 578db9b288..10221f475e 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f892ffadc2999b904be4fc72b0345524a53699386265ff446ee981f815e51ed0 -size 30111 +oid sha256:23c88713ba8991df8b1beff3762ebdd48f3f6e3c31ff3f7713c440bc12435114 +size 30118 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_15_en.png index 8c7da8b54c..7f9b135b9d 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44f1bc19ce7f2db1d2e9ce5a0018d48848c63af21847ec238d08791999df8401 -size 34559 +oid sha256:9683fc7b78efa029be47bdb20a2049bcddff1277f7170b67f887c0cc8ee0fb10 +size 34591 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_16_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_16_en.png index 1549fc3041..58315fe492 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b05cd6be3be2571745310c89448bce1562fa191a061549cd3ad0936656933d8 -size 42456 +oid sha256:d2bf6ba4782f4c2dc891ea0410ed4797487b7f0f6292867e018b89efd33b46d8 +size 42478 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_1_en.png index 0c2e9f7f03..847dc439d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:680f7a4fd4a992e70aef33628faed82c8238109860fe87b91a417d1b880f0a4d -size 33258 +oid sha256:22c2ce2d7fe64ad0d18477a23dca604ff92c10d6ebc4a6258ea77750a6a3cdd8 +size 33275 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_2_en.png index 33023589e6..3a27f6cc85 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62a10762a1eb986d6f870d82fd9f5b10803e5178ce4192c4ae6cc17889f44c14 -size 31021 +oid sha256:a625075676f1bfa3ea2280d18d911b414a0e13e375ada0a5da1f129a76160ec0 +size 31034 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_3_en.png index 78c6876524..5966b26374 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f592039e3dcf2036bbfc7e644eddd717bb9c2fac2715077b8744a96d5e8ce94 -size 28712 +oid sha256:6847b8f932fde9694cdcc3b911f4c90d6836ade22a2ce4fc2db7518812ef5008 +size 28735 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_4_en.png index 12dee69df9..8612f6e4a6 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a707c7e9e4a1c91d12733a4002c914feb5365dad1e5fda77b4b3fd862d98916 -size 39587 +oid sha256:41de5451185f9ebd276baa7cb06bdea542cc6d9edd53ee08717f04204a0f4963 +size 39600 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_5_en.png index 0e57f43ea3..487989afd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:018a813fbd3d3bbae4627fa9acbbbde709d83d67b7292ce02c3cd170572184d6 -size 30602 +oid sha256:b24654360b865e485ee280db126029a8f0851127d3c1606810a2ab11aaa0359d +size 30585 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_6_en.png index c7d05de034..73c263dd21 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdc24799de625f9826fcf87a624e76b530e7f0e44c294d49f842ed2de7a9c085 -size 32981 +oid sha256:7c4de5a07ef4b6c7a03db84d161a467e929dacda83bf363eef41443dad59f6c1 +size 33002 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_7_en.png index 3d78e94953..05fa44ca7a 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:247a1cec9f0729ef1b23dc5ad730521bb7bfc117b4e9cc901ec922ee946f942e -size 39401 +oid sha256:7240e42cb7593cde2c9f4ebb9e3808f8ebe1de2251518074fdafd96aaee3a09d +size 39424 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_8_en.png index c6f8b658a3..967e0ba503 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcc00accf1fa84c48831378faa27558d5ba24961dd3ba0c5f0587329cdbaa9bf -size 29110 +oid sha256:fc05216680219eadfa9df834287831d13c3f37ce6eef45b1b49c26124b562f19 +size 29089 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_9_en.png index fd13827148..2ca6a388c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19484bb21efbedc60478192da648d035334fb0adf7f6efda0977a3a25e3b6696 -size 35394 +oid sha256:22f979dfb2c48d2d03ee439fde88e9fc355a667860c5c55574dc57644e1a9aac +size 35398 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_0_en.png index 636b7ba0e6..25fcb47796 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c91724171606aa0c36987908af0abce5c05b3311469a08e532532307d1224c60 -size 9842 +oid sha256:ec6efb77f63ec2e06866aa56c1a8eaa563f651a80144e5da1c4d27ff59275411 +size 9829 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_10_en.png index 4e05331ad7..ccc964e8e8 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27c86e8f5c4a00cb13b024bd0cb1375f04d547d03dd35459c4a0853106f1a3c9 -size 39079 +oid sha256:f1c917c487c0eb32ca844c24ae725921174a8b0446fda2d1263879ce19d90d3f +size 39060 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_11_en.png index 5f8961f485..1cca4251d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b9cf46f0039e0f91e8372cd5f9a15b7b54b75c80e0a38f9ebc2548315d57c9f -size 42657 +oid sha256:50c653b8a22a8bdde89f0729568858810991bf43e0628cf65989b487519ce488 +size 42639 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_12_en.png index c25392b215..4117529a80 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a4f65342c0e84179aceadc5d75fc763ed45c23f4db44bc16441c50990b193ed -size 43582 +oid sha256:a92f0c0aab2a62bd94f5701b308ae48fab3f342ffb4923071ace642c3b32ae74 +size 43562 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png index 9c134bf310..fbde4b8e3f 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2ef8069be91c6e20263da790c0b8b777515f46bdc4769532b321ae86c9152b8 -size 28701 +oid sha256:2a62ad4b4d17fb24cd4662213876ef8de0a3cf26b5c42089de330760667d91a8 +size 28713 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_14_en.png index f5fe9ed256..6ecfefa5f8 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6977342388cd3702e94d7b233dcf89ee2b0698ff1f39323c0520a9b88128a3fd -size 29622 +oid sha256:a457e82ef171deb34b17c70494cd686cab16a5550f17edcbf72d27752f15435d +size 29606 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_15_en.png index bcfe430ad5..7c98af9936 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6993298eb428c9f79a7b837c633b20c69a8170f179bf47af1f967ca2eb28f66 -size 33788 +oid sha256:12fa84ff4f3766a34de6eae4d8158e5090d2cf692afbc0cea973c7393ad99729 +size 33774 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_16_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_16_en.png index d0a42e7563..bc8e300d43 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:374318e250e1b813025f56ee7121e05905421c6c5657e228bce58f60da9729f2 -size 42137 +oid sha256:fbe6574b3732b8d3ccde1f8188c6385f92b1109e058e0ff256d5e48451e681b0 +size 42110 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_1_en.png index 27790717cd..a4351fc583 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:498e344123c195dadb96125bb2fad6ff7c8647dc1205adbb1e2068820e861631 -size 32516 +oid sha256:2f5678297f28480648365b97290c649addcccd871a63bb24022c618fc6648c6b +size 32479 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_2_en.png index 129a92851b..4f38f84c57 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d14358f97b6a7267deae81f0ff721fcde2acf63c5baff718beb94c41c9afa022 -size 30696 +oid sha256:04c1214ced713a5576afbd7e8814236db7b2277d7b0685cb9a3d5cfb36b07250 +size 30685 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_3_en.png index 8a6464958c..6ae6dd0f0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77f4e76bc68f099d5f28f811c004dbc48a5da17edb0576dc76761cbe85ee9bb0 -size 28629 +oid sha256:0fdb9e57ee8cd20345f336d38f8be1e3c8d5205ba3854f4ffaaeb3294512df14 +size 28613 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_4_en.png index 8093435a66..688a3e6342 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7fc4c0f8964f6cde35dc18ad39cc89249e14af35a10ab7a060e213b622f008b -size 38446 +oid sha256:a9a9aacc227163f349dd0c3525f5f2bdb7959e9352c27f96160c4711de0dc8a9 +size 38443 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_5_en.png index 0ceacc4260..f76ee55ee4 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1151f42b6fdb810a78dae144be8cdc1a97f4d0153c8690cbf2756b75308aaa13 -size 28869 +oid sha256:69534c11f667a064d5d50a98770cdfc8e82f0988123a7a3ea3e285ef6f94725f +size 28895 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_6_en.png index f599f084b6..3e4bbf6c17 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71e56b906decbea31fcf5581dc92dcbb6be79f6a6962595786e9533cc62254ad -size 32045 +oid sha256:3a7f6665c335429fc21f8868583022b82cb4ac94fc9cd4b2150b8c5e371c0fd1 +size 31959 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_7_en.png index 4f8d2856a4..61e73d6b07 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18e36242d664e1f2179bb3aef3f77a5bbbf5cd44aece2d2c9a3d7d70d2356b92 -size 38769 +oid sha256:333e605408b2373140bddd69d0ae07d3be531e90ecd36f0d594886465711e50c +size 38675 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_8_en.png index b595df5d84..7b04361db8 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37270eed539ed52a113375dbfa516f443838530ef7995bb6372764afbc25e75d -size 26787 +oid sha256:1262b7be57eda70a38d2e2a205c406688c0c306751c460a5493ec3cf812fed6d +size 26812 diff --git a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_9_en.png index ecf3010c75..276fda4840 100644 --- a/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.joinroom.impl_JoinRoomView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2e279977cd66e1be4159c788a70b8caca9cf32d7b428b0a2407105aabe9a405 -size 35083 +oid sha256:31d6232428dd0fe61b41c645b86ce10dc6a2f0455785ac114808fa95c66c36ba +size 35069 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en.png index 604665f56d..8ddebf6fe6 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2659edc9c1149255c953c86d4076fd8461c3eead74fb4b0f8c113dbad6c9d314 -size 29809 +oid sha256:cc84b5b532d090d91d58216a65d04f9ddfc513bf642ffb9600d44da1a7f8419e +size 29802 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en.png index 68f040086d..46907cd270 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ec35abf2bd911902d72527cdfd7338379c7ed70d2434d64b91f1a7164c1e5ca -size 35379 +oid sha256:227472b9c666dff285d8b060eb8233d8352a218b315cf485748b81b5e39c7cab +size 35374 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en.png index 58531912a2..4eb23730cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98341c9e5e177bb7211676119d6f2349d2ed1cc04a55998aa2dd0a2a9b89c883 +oid sha256:7b607ca5941018db665fabc738f83dc39439f7a7e15dc20289618a8686f7e251 size 18252 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en.png index d2f0fe6108..893b934feb 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79fe50124a0751a300f0ed4e46d26ab004463c96c72cef14376800c0c66a9ebe -size 19149 +oid sha256:b0fcf98d72b557f0e9a404a6cbaf3ed28a6b790251a5559ddc88346d6e46937f +size 19166 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en.png index c8173b1cbc..26291c6e9e 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7036f032cb8aceb9f3fc99557d1ee0f0840a51494bc1f80776effe86f75db75 -size 27710 +oid sha256:0b56cc67f2fceea3450ba4a616312e67cbf24f50ae13924f5294e7ec8bec536b +size 27707 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en.png index fc6c43cfc2..b2d5edfbd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:100977a64197b95f16a3b45d519b34147a8c7c092e405148c19bb1e38e669684 -size 32236 +oid sha256:33344ab709d4061c55c73e1df34c4a8904243c9ae1255e595f19b4a122d50736 +size 32212 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en.png index abeb7fa772..5a9bbdd723 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c35b19622942a80ad043af9a1bd9e5bb314984517e6def7eef1b9de71123d059 -size 39860 +oid sha256:defe44448a2fe2bc48f878cfe421a9748e5c52b5c3064b3809e8da233e16e874 +size 39857 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en.png index 88281c602e..7fb6bc0a54 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2eb8e4e89c85024e2c0b7598ef84b9c56ffec684f0dbdd49cb0308f1d445955 -size 27699 +oid sha256:697f457291dd88f6185d8aa0343a2e884cc3468a837a0beebb4db0ad8e8eab98 +size 27693 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en.png index a74a6378ca..e178e8a649 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16efdc3b827c35f803c9b4767fb18406bf3b06115435c13db93d49e61cd0cc90 -size 32842 +oid sha256:27ed8fd52bec6c5592f12791e3eb680de2fcce3e1780ec3718fca1cfced319d1 +size 32828 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en.png index d008fddd15..85abdb45e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0e3f24860064ce92d1ca64a98fcbdb112eef2cbed1f693b8f39b20e663a5d66 -size 16245 +oid sha256:4ad5f8a46ac61e62a49d43ddae9582119c803480bd4364b8052c66b13419a073 +size 16232 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en.png index 05c139be15..612a786d29 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6577b95457cbe765f156bc364d7b5871c99f6a9bc4b1588ee39f06a6df11ff4f -size 17200 +oid sha256:3e7bd8a5dd2d172ae5a98fc09c55784a5057721fbd7716170130647f021d3ba1 +size 17190 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en.png index 2cbaea1c10..83841aa6dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d58e9a47a3653dfb6468288f1a7950788f9f41af49bfbf23efaad86a12b43169 -size 25411 +oid sha256:29d18993a742d4fc4f163a407a32c0c391acaa0500c359ada01afadd91a9be7a +size 25396 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en.png index a66b830bec..27daf15a99 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b08a45f787377b95d323d55952d897ac535c8dbefd2035ac243afcced81703eb -size 28580 +oid sha256:72adc03453974837d48db36d5eed1ba68114da2964d163a43ff92468679abc13 +size 28568 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en.png index a9ca009808..c3ce00dfa1 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25f2e7144d142a4012601295e7198d1d450d711049a4067ec1221301a7489702 -size 37353 +oid sha256:bb4a624106605010f943409f6e9fbbfd31bddecd5acdf7bff49093685647a4b0 +size 37345 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_0_en.png index a7023c66ba..7fc2e2d268 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0108175ae5fea46394b5215352e19d95545bd0d2519e2bfcf1e368e621aa21f -size 14318 +oid sha256:2a9a41f3799cd7d663213b7b8a85faa8f06dc1e761dd872bd3c0230530cb7b1d +size 14330 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_10_en.png index 10d4ce49b2..dde07c6a42 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7d2098e616849e14e6308253f96adaffe286b10e2004ddaff7aa406a3f083f5 -size 31003 +oid sha256:d0b4dd14a7411a75da7664315b6ae4efc1d3aba56945ac4726be916f997d2c69 +size 31016 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_1_en.png index f6ec06a525..e33a736254 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:247b7b95443c6e2bf7cbadbd1c85935e8310bcc54980e057ccb6c61c72b797a2 -size 26521 +oid sha256:b357f432d5dff4d692b03b6a0fce8d59a044b4f6f139e3c644b1ddd9ef4f15d3 +size 26502 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_2_en.png index 1982cc072b..4a0595e7c2 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32369315f99990e5b9a62d1b385a3caa2eaaad93695769c8ff8d7b6b07ebf31f -size 33717 +oid sha256:27fbbc4d7fedd2143714333743ecf60c2d446193677a6f71196494d1a220a9e9 +size 33729 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_3_en.png index 356fd34504..d02c0237ef 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a170b2e8dc5105a41f6eb289dbd88a7ba7388ad31b9fdd2e7232358ee53fb9c -size 42246 +oid sha256:55d145c33e1c6d820cd8f3326da308bfff1f52d54619a2f8ef207ba648154654 +size 42257 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_4_en.png index df770a865b..ee8c77d4f3 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8af887789d660038aeaaf4cd234ff926879ad5d5eaf3b38d9b0d6de3cda530e -size 53485 +oid sha256:198e0d289bf4abb7a10b17f9de3ac5ff2fa3f89915ddcfb14b55926e33bee005 +size 53501 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_5_en.png index 22f56c4da8..66b6406d9e 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6e13b1e5c43efab5cc40daa0118566aea330552075e5409564c496b86db4564 -size 45402 +oid sha256:a589f95e6f8dd02a1507fff0417844252731447ed25023f800e8ce59b88464be +size 45373 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_6_en.png index 24f74a6607..a1cf6f613c 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbe3e94a10d42de71c2dff8085f1d0890a6da9015c6d4ee8ed559305996efd46 -size 34518 +oid sha256:43151d23f08e8b0fca98f62b38c7a7fffaa2f03e5950600a522ed1a7a4dbb8c9 +size 34496 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_7_en.png index 204676341b..c202ce5c89 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:217d15b6aa61b9961b79d76a2f88cfb2e757125680c6f8732b48f3de9e506699 -size 39904 +oid sha256:a0ec9eaab640d25afb83fe5b1adcb5a612d82e2963a8639134a72facdb3e5b6a +size 39881 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_8_en.png index 1c352f5e4d..855226b3cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab348a84c5f880b2fc49d60faa94ae3b823924115003d4c734cdd846607ff5d9 -size 30739 +oid sha256:ffb451cb51b23ad8e1485c2d532c5d3fd302dcf38ff7cd75f9dfe8517c1bb22e +size 30749 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_9_en.png index 9e17904f06..5f021d4794 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f4cb6f7cda4740749eae68d2001d713d743663fcb572e445f8a57efe1fd6725 -size 27582 +oid sha256:4c0cd058c36f277293c326a5215476acae260d4c868652150a8ecb7e477319eb +size 27586 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_0_en.png index 2b642f1710..b425b6cee1 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d19a663e364e5d6e4eb13bfe5f2538b077e682ef75a82234e428c1f6e5f327b -size 13942 +oid sha256:28c87be27141a8c8f80aa7b9c0fd2171d745e37040941748426adb49f7d24ff7 +size 13932 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_10_en.png index 49652d25e0..6e246ac96e 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56dab3a7d0d42a4a2584cf5905fa173f47043c5358480e376e91bdeccfa0d9cc -size 30141 +oid sha256:e413595d9e61bbaed43c84297d2d62bd05702fa2c59a34c7e0fe794aa23e5b15 +size 30131 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_1_en.png index 5095c84423..bbbdf1aee4 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a316d205b345754d58798a3f8f75c4d6893c578ac01892db26b91d106caaf72 -size 26029 +oid sha256:6358f7ffbc43efb97fdfec53886340fbbce4143fb420008b7ce02d563b2b6aab +size 25978 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_2_en.png index 5f4903117c..6844c9d608 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26a1769ee81d4efbee072e9e40a725ae8c725d90f4ff3e52a8f1cb4a8882c587 -size 32746 +oid sha256:be9b7f4f3589fef8d4a2dcd32b0777819c3c66f92313828d5339870ddd92fc64 +size 32737 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_3_en.png index 7882cbe0d4..4d55899355 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60daaa902bf1bc170b517d39f32af08744111ad9ad2eb87ffc2122ec826622b8 -size 41106 +oid sha256:15dc9876d33677a9a36bb43a3345b47865e24af6b5f5a9bff2f88b8a93b48e5e +size 41098 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_4_en.png index 9624a721ac..a02e2ad6ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f012049a5b9eacf9c37c46e786de1edad92449ae941e8a11908369a794a1ddc7 -size 52045 +oid sha256:aace908192a5cf5a1bdfbb25d9959e80c1a95465a35a3b66474642b0a4c88cb1 +size 52036 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_5_en.png index 4312dcda4b..12cf6b1daf 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4ae8ce188cf5d380117fef6f98c73285486970267db88b0823409e75fdf1c1b -size 43250 +oid sha256:54555b86f9c98d0d06feb25c918849fd545d7c56a5f4c48330e528a6f9ce5c87 +size 43270 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_6_en.png index 04b76a416e..20fe6a16f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5132609cd9921570f91274c0b4de06a4e9d5059b8d4ca381c87161900a042b1d -size 33505 +oid sha256:b368ec67042eeab3657efcc49da3f9b4caec3285a4a54fcb3ea453697b563c6c +size 33525 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_7_en.png index 1881fbc86d..f4f8d25368 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0de7bb034b2414146bfb0e3db535c4da6b431d1dda8856fbe69e2aae5f312a37 -size 37462 +oid sha256:4f6ade3b8793e47f9c1372019894cbe99e2bfde1ec0d5872e035a2f6a015bf1c +size 37484 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_8_en.png index 4b91fd41b1..cf963f529b 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb61a4338b5ca6938d92be97565dab866682d55baf09a1efc8bfea2df635fb8e -size 30221 +oid sha256:37cb25021aafe5ac47fdae828ce6f117bc670ce5068ae0ad99c4fe3b7dc4409b +size 30212 diff --git a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_9_en.png index 7ecf033794..1debceec74 100644 --- a/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.knockrequests.impl.list_KnockRequestsListView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5344b698393a443c40339d4a95ee16c3acf3313802006115332e6977df9f2aa -size 27401 +oid sha256:f5d168735d27d5d873c8866608f9da7bf38267e027887e784a6166a5c53fd907 +size 27392 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Day_0_en.png index c9252541e2..c222e295ff 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2468979bee62f4c3c654045b564bfece46af7471557e0117f1f15e723bf16f7d -size 18719 +oid sha256:22e8b0c20dc080acf5720cbfaacb6b17f3f23e017ee4714e21b00bff3e1dd307 +size 18741 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Night_0_en.png index ca2a5480b4..ba8c352d48 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.details_DependenciesDetailsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fea521646c14b4e067cd2cea83e497e7e2bf20ca5acb16b162c2058947f3ac6 -size 18549 +oid sha256:c085ce6bb1aec0d57daa4904be477a2b5db5313828020e86bfe10f0cd920b57c +size 18540 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_0_en.png index 36abfbb388..33917528ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0eb1a82b41f242b783f78e182835ff36fa39279b988056497abf1efca6b868c6 -size 10876 +oid sha256:ec1155a013bc06aa4a46a47231c9fa0105d1f409ac9ebb667044a3289b882fbf +size 10878 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_1_en.png index 01bf030f5f..6dec1229b0 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ec76da2e77f7b9e4a42e758a218a7d794a6c63112e6870fe099ad6df09d85b6 -size 10098 +oid sha256:23a393211214fc5cfc1c63c5b37d3cb2c9c45e7d55c6642029b280a8f6709ebf +size 10104 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_2_en.png index 6d49c2d8a9..228fa0b17d 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30c66097f944497349272d010eb47d18f82c5cf883d22ab72604bb3463381464 -size 29354 +oid sha256:ae8ae38533d194ac5c1c33e77697e3d43b2f51e7285581a91c05f537b4857434 +size 29352 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_3_en.png index 2301bc67c8..7b7bfb345f 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5060a3a0576d988be7ae07d6953941a997a9e4c32a22960ce0cf9a2012a7764c -size 30614 +oid sha256:49940300eef5e463d4bd4c437b483c1d2431c226b449dc27175e1655617b0617 +size 30609 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_0_en.png index f262a5316a..7a364b7b2c 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22a7e1fc2b7c0ee38e5749fe40876a826c0cea6065bfc47021f60ba17d23fa31 -size 10658 +oid sha256:024d500339d3ca8c3f83d7341c545a74f0520b3f8c613f52dc2f75a28bde31e0 +size 10650 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_1_en.png index e2e3c79d52..faeb11d4d3 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52f9c3b1213e88694bf196f9ed90326c104c636267ccc7806d0de3416f74aed7 -size 9905 +oid sha256:1c3cf0b4c86b08bd75888a955c613339793ea71747d824054bd8a53509755edc +size 9898 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_2_en.png index 2c1a623f6e..2e8a89c8a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4b0c2f3a87779866f20c855e9f9c866118ea23613993724b7370a6eeda5cd1c -size 28765 +oid sha256:ea577168ed996b5366609d3b0e76c5a837e89037427816940f1848445bc81993 +size 28718 diff --git a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_3_en.png index 434041f432..c71837dff6 100644 --- a/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.licenses.impl.list_DependencyLicensesListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55d0fe08862d1a7dd30ade4e5e7a5535a79b3a4277f6cb6ad34502e913489032 -size 29982 +oid sha256:7b5ba86629299e27a5cc0fa3aab18d5b05f58d79bdb3cb50fd518e79f2e30aeb +size 29943 diff --git a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_0_en.png index 4fcccbbf4b..f6e547e814 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:389171c430db4f6e6475b7e0119d384314443e82ce49aa3501a8f022b3ee7f8c -size 438942 +oid sha256:914c19ee49ed836cc8f27dce9550b325a3aead05dfc04eec114365f6aa7e2d9b +size 438941 diff --git a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_0_en.png index d70ffe3658..02d92197fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.api.internal_StaticMapPlaceholder_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:194048bcc1f4507af21253baabe271a227aea706b451ef43588227e5ba5102f0 -size 173416 +oid sha256:7f7cba4b87d9e4d2886adcbc8181b417684fb08329950d83da7e7b9d8199d7ca +size 173418 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_0_en.png index 6945ed0c4f..b320e1bfbb 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:780bec44e40578fd3d25ba06ef9a5dc3b0670f912e9957ef7a1305715fe764fd -size 18881 +oid sha256:f0a69815f56a84fee69cbb6edd14b2f9613f79cfdfcf47a9636fe38ff79f4fb1 +size 18920 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_1_en.png index 36c75829d2..c67fe7d7ba 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cba7e6e0f579f8da9c0d36ea2e56174e6d2ae48020d09252b393dce0b5fdb73b -size 35032 +oid sha256:10afa8471e0c9699a1662ac758f505bc4db9e71c24cf9cb2adf9674c06adadd7 +size 35037 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_2_en.png index 7812df3f5f..7a5c5ce7ca 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64257748b4047b9dbc48a5853f22a8e442875a85587cce2de70660bec024e1a6 -size 33353 +oid sha256:0be60af8c60993127fcfe4710071a588e44dc26545c526cb5ad532e4822d91f2 +size 33356 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_3_en.png index 6945ed0c4f..b320e1bfbb 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:780bec44e40578fd3d25ba06ef9a5dc3b0670f912e9957ef7a1305715fe764fd -size 18881 +oid sha256:f0a69815f56a84fee69cbb6edd14b2f9613f79cfdfcf47a9636fe38ff79f4fb1 +size 18920 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_4_en.png index b8e309987d..c353770363 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0d952bd32bcc332a7efc4db4066f34d165cff2c4d810738bc2830d033b28723 -size 19019 +oid sha256:0b0b03bf0b3084e1e376ac76772d55aabcc8dfb36114b5aedf10e914c7e9a63a +size 19030 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_0_en.png index d76fb95f4b..292a6a2f04 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2888144c07cd2d97f2f1554ba7aa7a5a4aeb2057d514d070311af7aaa921aec1 -size 18546 +oid sha256:531195e6951dcbef418a40812eb1ce3d1992524607ca6e6116a62ad0c8a6be39 +size 18547 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_1_en.png index b68333e367..8e3340ce3f 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5430fd67358ca399a09df6339ec7fa76cc7fa35eb2867730b04aa49a7c4d7e06 -size 33149 +oid sha256:bd569dd607e485ef7f237200a643d955cbae046d402c14c26c30dd02708d936c +size 33167 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_2_en.png index 941784dc64..8115443f5a 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b9a609a69735b9542586fea5875626207f74c87b91fe1de848b81ff381a2068 -size 31693 +oid sha256:3d89f7606776540c955ebc925fb9c81cf1a1dbdbc8e7e188ffbb403fa3973e5a +size 31712 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_3_en.png index d76fb95f4b..292a6a2f04 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2888144c07cd2d97f2f1554ba7aa7a5a4aeb2057d514d070311af7aaa921aec1 -size 18546 +oid sha256:531195e6951dcbef418a40812eb1ce3d1992524607ca6e6116a62ad0c8a6be39 +size 18547 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_4_en.png index c293a4b4ba..f2e4edb38a 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.send_SendLocationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527850ba915e6ecc80ee5e1d75c4bba490999d1a22e6a8643d6c916f697284eb -size 18687 +oid sha256:27fda7373270da1be20f70e4ca795650dc3010a3befa27e5e1e32142c2fba4bf +size 18706 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_0_en.png index e252711709..ce0256bd6f 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64d3a64a4ac6c0ebf03e0e9df70b47bf4f2390ae544c03495c42f31eb44ad02a -size 10922 +oid sha256:72b19100f3e530cea722f66169e1df1b967f61c5b2e41cd15cfe0779795ec0d6 +size 10920 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_1_en.png index dde4451b72..cbf3ed512a 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab03b157f9810e5a16a1b732fc887dc5143703e659ff6363730ac220b283f03b -size 29780 +oid sha256:abe540056a43e6dd0774b22be04479e846221fcd95ab6512b61c52984fab5071 +size 29764 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_2_en.png index a41a95d710..b5ad9e3cfb 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d96a4a7eaebe458f8f7a43c20f9c711c739a74ce6f97ef8e209417731a468cc9 -size 28200 +oid sha256:27e31149fcdc9d96ab0fdb111b8eb7e114769cf39a861600ac4651265c92b1f0 +size 28178 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_3_en.png index e252711709..ce0256bd6f 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64d3a64a4ac6c0ebf03e0e9df70b47bf4f2390ae544c03495c42f31eb44ad02a -size 10922 +oid sha256:72b19100f3e530cea722f66169e1df1b967f61c5b2e41cd15cfe0779795ec0d6 +size 10920 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_4_en.png index f342a66deb..572a275f0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f9536e26d0056c139ebec3a49b780cc0e18f1efc6033120c9648074c19a1e6b -size 11052 +oid sha256:6d2cee2219e96d74825b4d94ef71b1d43a4bcbb39846471f21769f10dd19329e +size 11055 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_5_en.png index c956d1bb76..7a5fc36e35 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:107d54b935bf5466b811735ee2b51e1e3ee3d3045f9f7686a1adc14e8ee4b9ee -size 14650 +oid sha256:4fc37c32da99ec30811253f3d72000033fe150d1f0777aa1af960892074dd2d3 +size 14648 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_6_en.png index 719c88f202..5e654f5849 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbb3ab1766f4566ed5cc742a6b33dfd65ed517ebc6819ff38883fc233437bcf3 -size 23279 +oid sha256:ab6c334b5ab114225dc2ef897fa061b78e6c0ae6e3c60488cb38f07aa35f28e2 +size 23278 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_7_en.png index df40f78bac..5c45000935 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7cfff8805665fcae6d0637285a9742865e194c1d1e5a4e00c435f8f6c574d4fc -size 26040 +oid sha256:5d07cc3065af85dd5b723bf5ffd2dffcdd66f34fd88d951c4e20a53bbe602422 +size 26047 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_0_en.png index 0f9c47d4c8..30276d3ff9 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:deab2caf175531eaeafc1c39818ce8159b19cd95245369ce81fc14c263178e65 -size 10600 +oid sha256:e8f5fcd8ebebc78e1c24ae34da1efff5d6677cb2c3c9c4719252e1a06abefafb +size 10602 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_1_en.png index a82aa7fdcd..1248e3a7c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6821dd9227e5c439a05b738dbe0bd6d96d25bb123ae98e213df1740630fea140 -size 28161 +oid sha256:543eacfcfcb1ee7e2a502f408a5fff239b899d6a4021e1d67a88570a4bf41179 +size 28187 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_2_en.png index 7f55ac54e1..cd4fd1b690 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a51febb963559a95e95a0b1f8d93f0397b46e9862afe05610c793a948001289 -size 26709 +oid sha256:0c6aa641c9b683a0ed71bdcfd0648c667121f88d35e52429c43abaf951c20618 +size 26731 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_3_en.png index 0f9c47d4c8..30276d3ff9 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:deab2caf175531eaeafc1c39818ce8159b19cd95245369ce81fc14c263178e65 -size 10600 +oid sha256:e8f5fcd8ebebc78e1c24ae34da1efff5d6677cb2c3c9c4719252e1a06abefafb +size 10602 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_4_en.png index 465b9d8a23..8d6b1c7a1b 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0c6ecb69d84b8cb817ff6934f395ffb70675ca8ea6b6fefcedd8f90d77248d7 -size 10715 +oid sha256:3a059a1c0075861a6761f60db28f7e91abc8d6ec0f5c93784032bf7b204d2640 +size 10712 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_5_en.png index c98fa3cf1b..4cecf6c746 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb0f0a66aee90e225d1ff8f749192fa5ad58a52419c9481df9426f7a519ef057 -size 14122 +oid sha256:a154b1278997024d8d9794ccfba0b7f2082179f7666f6b477c58b0b463a90496 +size 14125 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_6_en.png index 955ea2cdb6..96d831f2a4 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fef81167f3f01aad5cd75ad4e6a5679bef193663dfe77c4c4da92ed510634f54 -size 22543 +oid sha256:fdac9fcab59381a510d69f9b4fed399d0b1c8026b06517704007f95433448327 +size 22546 diff --git a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_7_en.png index 5d8a5ef5b1..a9e4dbf229 100644 --- a/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.location.impl.show_ShowLocationView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb1c826aa22732231112e2368c35f9216d9b1a06908c85d883744a450cca5743 -size 25205 +oid sha256:40ff18c8e4039abd9d24b8f4a91aeb3a207c11e24f3d2c425aab89a094fd82d0 +size 25214 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en.png index cbc9f1ad35..bbc7f08cd0 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36660f5c7db79ebadd94a2cc336de38d3aaa892e4063620fa3158ef46943ca97 -size 16773 +oid sha256:62edb0d74da0cc9594b24bf78cbf3e6fc331d14c0b38c98e0fdd537f0bac43fd +size 16791 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en.png index c462fd6a37..a84fc25954 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:696440bc3b44778f7894b686a85a60b49db16cfb05bc09549f0626817b37d8f9 -size 19158 +oid sha256:8356653061edd876f83a32326e0226be2af7956d7d03c121ea5b6429e8f7453f +size 19172 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en.png index defcb90471..803e0fb3c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa15f390927a533cdff4d42751e19942b0386473301cdb8cd800b37428ca2179 -size 28851 +oid sha256:398938718e1bd357f91e84459314d648bfb86f62382ed4e395b3b25233febe3d +size 28827 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en.png index 0262823ec2..5930fffc5b 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b03df9e5aedcc3cfa9fa6c1ca021931088bf3fb00c34618b218e3c169e58e47 -size 16145 +oid sha256:f3869ad677c0b01e2c88bd402eb7f30cb39af995f5d580a1203901c960af60d9 +size 16125 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en.png index d39e809ffc..e2255adfbd 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f7201708ab937a6b905d1a9395f788e77ca49cfd9230e8d0e21d20a53d530f7 -size 18526 +oid sha256:14e98c47b4fde1400980a14cf01a40825d10eb455614c58158fe4e1bb67a09ea +size 18507 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en.png index c2dbf39b83..27f1f74d21 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91251a1871095a734f70d335b3f514d266a5486b1fc57cbd130214f268525f1f -size 26957 +oid sha256:34942f62984ba9d0cc1dc131c9722eac27575cfab79399449476d72bb18666ce +size 26976 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en.png index 9834ab9e99..3b2f42cf47 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b4bd33dead4e999e81e133c768d4b84305ee5204be0e5114809f7490023d544 -size 29742 +oid sha256:333fbe4f530f4614aa9a79d718f23e58a4453f5ad79ac3292dbcf7d54857a05c +size 29763 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en.png index 0be8cf4f83..116c64dcff 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31b0c682fd6189a7f68024cf09d011a77d573818cb79ac70571a0c501cd13b35 -size 29351 +oid sha256:4b67ff23e20d6dae038a7c66cdf5a37f497dab0a8a4921455d12336fa36c8213 +size 29374 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en.png index 240776917d..81af5e81be 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:015cf2cc614aac901b825ced662af3b442a6133a4e696386d75aa1839754a8e5 -size 29215 +oid sha256:ca92bacba980314fc73b0fe3a0798f7ffa531d00f59a5424af780d6272ffd948 +size 29230 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en.png index 085c34f992..0e0fcc19e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbf3b090b0e3b4a00f5ddd86b7b2a62baa62e9cb6d1c24c36191620124dd6d12 -size 25210 +oid sha256:00a522594d9a00798827672c5019aebd6237dec4db89346b7f5ff2deed288850 +size 25189 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en.png index a50a3c140a..3484b7182d 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53187c4901a528f5ea59fff3def64197eb0664ebffe85f48635c5cf1720c977a -size 29700 +oid sha256:e8e6a1da776c6f25bb529c12a8b4ba431e1aa3dd911d4067b1cb6f3b976fb254 +size 29679 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en.png index 191c16855e..85c94eee17 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14a97916b95f4a265960e64f069acc76830033f9474a9466a89e857a63eef53d -size 29197 +oid sha256:6494921960e25ad28818665ce18d700aaec7d386b0e94f833d02e10eb808811b +size 29188 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en.png index 4f0c887da6..dc7185d583 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbd42154b2f722c149613eb1d10c2972001eb3391a5ff8787d913334e9f5fc1c -size 28853 +oid sha256:1aa9b53bf436f2801781fa1b2e58b424e57ed60840f7dd517387c3fb807c91d1 +size 28842 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en.png index 56e16eb9d9..d2f6aa1683 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b133195d083c3bc6a1f7a8864c1a65945b35b7bd7829d8e08253720e06b59e14 -size 28698 +oid sha256:2ef692ef5cf9a30ef224a4e6be31519abc62fb92d2f6c18e85fcbcfae57e569a +size 28689 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en.png index 78f23cecd5..f7fe822bfc 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a430db03a543cf4517f9086e3bdf43cae72ac544f5fa1b5994bf62aa3151463 -size 23228 +oid sha256:9649f5aa33a6a030fa90056a433cfa1f1a33b81228773d8399f1b54b33c0c4dd +size 23253 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en.png index ca9ce8c967..fcfdfbe2e5 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0870a37c29bd5b62b559e47c0eb2dfd7ae94ed38efd62d3fa91eb0d646923373 -size 27565 +oid sha256:8f55f8443433b4c6f6f40f2f59581a191db684d2ccaca9072fa2d7895c723783 +size 27588 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en.png index 757be85f3d..75512c8ea0 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d60096fa3c40d902db6ee85440a3f43e1e6c27e15af61b5622131d08b2cf0018 -size 20385 +oid sha256:ff7bf2400e9aafa54dedf5302bb606f5b2931579049f800477d4d0231737bfb2 +size 20379 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en.png index 1d2deaa7be..091f5f41e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3fc4e8b0dd167e5229514a940d478ccf79efed9013b9e484ebd255f4cc3cd70 -size 19974 +oid sha256:6b18036e7eb66bf73494cd21658cbc707e518ac0fea276f656cb881136668b15 +size 19958 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en.png index e2c57e9db5..1e5ee7e2a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5819730f4ada3a025dea9b01766adc9caa0ddabce05d1cc91a1962654b438c00 -size 21734 +oid sha256:313440c36f1ac39d2d567cfc28193da312e46bf33fb28e90e96b3b14d47c61e4 +size 21727 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en.png index a8c91fb894..ce06a09131 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bdcf4034d40b183d7ae6feb6b9a2f7bdfbf191fcc6d62bebaa9dd34067106dba -size 33772 +oid sha256:5e78dfc5d7e18de754f30f097ee0c57049396d3af2077c57dd70e19660335ef0 +size 33774 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en.png index cf3f345af9..ed1777afcb 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9a34baf728a4dabea20798983c4f7218d703607b2caad8f1d1a125d9e859164 -size 17970 +oid sha256:6856854a1b4612243eb221c2d2f98f3246259ef9c7bdc25dbb6b4ff1686a8ce9 +size 17962 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en.png index 8b17bbfca9..d7a32b70dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d36bd06ecd781058c66fae05e0a74b04a6579db4eaaafb8c668238cdf6d066d -size 31025 +oid sha256:dcce5ae74a03d224f211559255316eac4230ffd1379af825d6270609e405fcd1 +size 31022 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en.png index 5138536590..62574bfea1 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e4b059661e05040f194313bd8442d18761da730ac8d2ebfac8f464491d43d52 -size 22047 +oid sha256:6fb9a98b01bd453ba1a6aab386159cebc2a8728c3694586cd1aedd3f0e0bfa1a +size 22045 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en.png index 215e03e297..898daaa125 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45d6be27f49a786a797e90eb4cebd34e7227d4e3576e06fdf3840bf0a072f644 +oid sha256:d4f1ce61e6df5c758d7bda3b88dca91a706539e60bcb171764f654805c700176 size 23137 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en.png index 800045d229..9d8925cb85 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4f26d3ad812cede71d2b1928d257636c7252b711bb3985325204049081fe476 -size 19903 +oid sha256:3e4e387f7454ae8e9f513600578d85e69a398dba447381e4ad77e96084d4d065 +size 19898 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en.png index b3c39418be..492c571e4d 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5be795840cbd990edc68b3b3a45f27054c49298d751f26d7560cbcd49e92f4de -size 19581 +oid sha256:cfc91d549f5b529106fb072e6eace90215348e8a9ddda7fa9327b6b22d547058 +size 19578 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en.png index 02f30f7e3f..e8df15942e 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a987e3e4fc3c390bd1ed4dc19f0e90187a36e270d4fadb06924a778d0a7447a7 -size 21146 +oid sha256:9ced19fe30b254f43401354dff70a7c85c68c9a4142bbc774f29d37bef9c5daa +size 21138 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en.png index b34e5fa61e..06371269e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a53bc579f1fea83bb5ec49aae3f6a44373292369d88dc9841084967449d5b0d -size 31370 +oid sha256:0591d69a46b66eb844e6c4c1eeb5aa1a3aea1c00c14474767211a081232e3e09 +size 31372 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en.png index d24a46a11b..9369a88cae 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54f3b41df529b01806eeb8825ff837dc2911538a0325b4e8341831982a879040 -size 17633 +oid sha256:c999367fafbf5ebd10f3da6af2db7577589a2bfa87256e9f0da8765a4e8ee9a8 +size 17630 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en.png index 97e5f69dd3..9533ee7b42 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c135ed28162513c43723434a3ddc6b5b0743c4246ce096f0d3ba261e49f31a68 -size 29001 +oid sha256:ca3eb2e98213dda39282464a12e98e25fa60d56083f01705f19ece1708ac64c1 +size 29006 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en.png index 0573dfea12..407c49827c 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5889b08ee5c1b7719f8f19c915b568c90ab709ad519e4ff18835097143a753d3 -size 20624 +oid sha256:93a4a28be0e3baa8889096f2dc91fe794a7469a57364cc304b4b3294c758336f +size 20626 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en.png index 30666f1901..886249828f 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:add26f4f31638ec3e409c3af159b68a891b41998ad24e464a59135da4e6bb09c +oid sha256:9b814e6d456ab88abdbcc0a73d17ff6ece1125e7cfba6a45f1fb8497e0fed2f5 size 21037 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_0_en.png index dce06c0e2c..da67d1e708 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40c6c470acaf071d1abce378f1eb88330d323f92561ec355a2cb742b3360e12c -size 36067 +oid sha256:b5d6f0ad82c8b790bce7044b61f70cade02a90d96a3cf0b70fc42461d78cdada +size 36052 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_1_en.png index 3d296259bf..754ce31556 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97ed2313ecd729f889bf11f23655d19f17ad579f10de031499ef81b1a89cbb10 -size 36477 +oid sha256:d901fb7ed307f0375b66aeb2bfd10b087e7da54b741116410715957e78693ed2 +size 36456 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_2_en.png index d5af184861..6d33b0a788 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa58abb85be88f13d88db6ce1de9ec468373b7c4a765408656c4c51cee9ec126 -size 37392 +oid sha256:9306676d3b7cda6cd5633703d43cd7d676debd133df55e5f9b367cf483cca6d6 +size 37377 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_3_en.png index 3b5431a1fc..6b470e59b3 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ef73ad02be6fa34496de42393c88058ff3336359c58553f5c92217debbab06c -size 40723 +oid sha256:d72404ba8feabc3136da770f3bb6089f3fb5491b9aa1c5430b3fe222582041ee +size 40727 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_4_en.png index 02815fff59..d68200d41e 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f98b32b21a5d828d91aaadb92a82675a867e8f343a158c4be84a728be127b57 -size 33766 +oid sha256:fc66e46453be2527b13576c0c823de41a577dbe25d9c5c3ceae7129fc38a27ff +size 33750 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_5_en.png index bd4b84ae5b..b46d416460 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d639fd64425c20093218887f6d2080d75121dbf9df38954b411d9d05aa3dcede -size 38012 +oid sha256:501929bec8cb96c367c6d4e39b635accd010df8d51d8b5b811c393ba88e055f0 +size 38013 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_6_en.png index 35d2105136..d3a76fe71a 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6631906e10e92eac8be37aee94926cd05a90e7f4402bafda52ec3081c4518af0 -size 30197 +oid sha256:148eac0a83edaf736bcc5bfd2ad6c49d2658460a0a0e233f6aec86db0ed576b4 +size 30198 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_7_en.png index f7e31ee025..8549995133 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3898c9a578430b49a8f1bde6bb611b70251e267b6679ca8298a7810d80a72702 -size 30356 +oid sha256:0ab36754fbbf897c817f5a38e98548492194f91aab482684f907451543ff5bff +size 30357 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_0_en.png index f9f9fa56b9..97abac1ae5 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffb504acbc5cd601a5c23f83e3f1d0f98e73bdd8dc489ec9d54b9dfe3f6ff818 -size 34841 +oid sha256:730a61f81f4f2e1b9f3bd1767d8e7a4e6dd05453ff58ec895938df8270a3288a +size 34840 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_1_en.png index d945d408d6..ee1b1bf6d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9dfd360f1bb45622d9b032d85ed729cc7f5690250769aa97b022220faf6695d -size 35231 +oid sha256:5967fca9544fe9fd0db9c8837a1c4e4a819837b87c6ea21f9d79b337a8dc02e9 +size 35229 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_2_en.png index 813aeb9294..ed96d41781 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35aa62e603d8b68f4726d5ce0dd1f142e01b4718e63d977994587fd72b3325c8 -size 36021 +oid sha256:801536182916e33a93d8e2da80b4dbe5cdeeacd772f358796bfc6070d0137910 +size 36013 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_3_en.png index 2e2ced4d5e..de62234d4a 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3c28c88852bcd684e47e5cb01c79f10c956a16de3f608b7054b39c49cc0ed6f -size 37633 +oid sha256:7c86cc2691774d836e029bcfdd080c6db002aeb4c544cc9426755dd7670e8133 +size 37630 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_4_en.png index 444ca3b062..f312909ce2 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44449bdd8bc4376004ab8343225c4245f15c931bd42b9956eba4dc53acc65178 -size 32651 +oid sha256:e80eb2fb94a97a947e2d83b1cd11bdd76c32c2266a382233f10911a00e456374 +size 32649 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_5_en.png index 47f11c5d33..508eb4f752 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b2a9058c3758dba8b4ce43293cbd2fd04aa947f23f8d4bb1100ab8f1b610af8 -size 35181 +oid sha256:fbe5723853d3d495f54c33bfd63403a8ca76b76a44edec4cd135218462721567 +size 35178 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_6_en.png index cb11d83e3d..a56b58b7d3 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cac1e820d1dae190324860f01a986f46997c87aa604678ef2b9d48309876d09 -size 27616 +oid sha256:ee14cfd4edcdfd4aca7e455a1179549b2c7bf17d5686bc22d7e1fad049d21883 +size 27614 diff --git a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_7_en.png index b246835d89..a72b27ccd4 100644 --- a/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.lockscreen.impl.unlock_PinUnlockView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a6b35c5825831ad11a8287d3f2076597304fb0f90090e3e073de7faa70bf720 -size 27497 +oid sha256:44fd8f19fd371f3c8127fd85eed867b73b234f32ce94b777b38dd04b29e97682 +size 27494 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png index 5e2b6ca1c5..47f67ecc35 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bdd621f769997547dbd5cea14158b32e0dead55145ba7894b331e19ebcfe6ab -size 5996 +oid sha256:88e8024723d128f5095e15f92c48afa6f5f75058d11077f6fdde4b8722d8231c +size 5998 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png index 37dce9bd1a..dd9eead0e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c10d7e56a9c713282988097a754100c2dc79fe34cb8e1916fc742c05855f1996 -size 5939 +oid sha256:c6b8fa0e76653455693cfa82d41c5baf6458dda56867bf9771c02d8d3cf38f3b +size 5950 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_0_en.png index f9e95c7a4a..7be52d44c4 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28a62e528356d2276053c3a168d0079896046ce0094bbfbc2d07f063d710b726 -size 17978 +oid sha256:ab386d9efb188f10062ce65cef22b6bd019e512cd1ae56d49fe3c738611207d7 +size 17987 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_1_en.png index dff1394b7a..896d28d758 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52c09057b8570a1b37e24f624edc824e19a373dd9cd623a84e1a83eb329ce932 -size 7733 +oid sha256:910f76758cc8810f9113e2b1a4d98da3afe6e801be7cf1ee14482cd66060f9e5 +size 7742 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_2_en.png index 778e06bcad..8bab08a5db 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb2075e4489927b0df1ff34c584f26438197452b7ea97762d6cd1878b1151cee -size 6847 +oid sha256:4b6f0ddd0a60d1ddca52013960e1ff09d297cd8a8848d78ffe241deae715ff25 +size 6852 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png index bc9265980f..941301bdcb 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:182f6175d4bf8555462855170ca59d15daeb283bffa7b595382bd7617a56030c -size 5727 +oid sha256:3c9017dc880f96257a1047cab046a0d5d218ed1ae155e7e1f2d0b918e9a1ac8e +size 5728 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_0_en.png index da06089f8c..5fa3850c0c 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8a5bc1a4778babee1445bf8577d14402d500818f961b334538da40b742af13a -size 17244 +oid sha256:c48f3d889bed5a08500009b4c9b28913ec55dc5255eb17210a3b7092b4227131 +size 17252 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_1_en.png index 31bbc7e536..0e9fafc8e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0444250db1eb42738c546d3ac75d4f43077df6e831a8bb38110e158486d92a92 -size 7416 +oid sha256:5c523ab43ed9d2e639a59d8bb275525210fbfa778004ab03b7c18c7784ffe506 +size 7425 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_2_en.png index a8a48c1c59..4c6378eee8 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8ad2af90f6fabb9dbce8c7f89327f8f13fc51be48be8da188830437dc986044 -size 6601 +oid sha256:d733e44ccd5daa529c79313a52ab462d877d4f6f7ca8e416e9433fe69bff530b +size 6611 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png index 6dee2b3d38..bbf83b9e7e 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.accountprovider_AccountProviderView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3f8ec394689043929d83d1b182e8a88dfa7fe6875cc5db71d5211a61644a242 -size 5597 +oid sha256:86c9fabb1e0e253df54539394c55fbd5cb031b114e0cb4fcb502f50b86c5f3b3 +size 5599 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png index 2c3d0109d8..d4f8847135 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88023e66ddbdaf1547808af570bea7e805ed00a98eb99384f9e04b861fd32f03 -size 47402 +oid sha256:cf6c69893bea05615fb19e0d1e3550f2b49542fc1b5a77b75d6d990c98fd901d +size 47422 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png index bf76269d8b..a6f2545fbf 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c09fbb36ec755ba6fe2b6690deb0a98021792eacf627e138cc5798fce240ecce -size 45197 +oid sha256:4956c1cd07901d7c393a3e84c29f281b78dc974f9352b808004b288fc1a1fa70 +size 45210 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png index 28bd43a244..1600389f1c 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a33aacdc7ccc5750ec85803509d81b3c6b6adce8786b396771edcf7c9320bb0 -size 46493 +oid sha256:a67e4fd98c9f0a39aa74a8fb2e37b8163c3a22476cb6e4dfa0a07ce8d4d06d0c +size 46472 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png index 2086c32315..cb4b1a0a87 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5903c67fb7ba6e494b75654b5c88f812939f4fff9a31927e159568b5598a0d18 -size 44251 +oid sha256:7ca7f99493b89c021f880d0ed3eee57fbe5f6e463e6ce623ad4bce94979916f2 +size 44235 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png index 28cf9382f7..59bdbc5b9a 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12cca8121312e499cc2b5d7f48301cf7f6aa00495189719b0c89fb8622e09e75 -size 22629 +oid sha256:7686d3968c0fda3d8e614577f198ac9ddf25c974b6a960b44fa6e90721a159ee +size 22637 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png index a7d042279d..930a635c7b 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d8b02a89dc06a26e334ad4d3cf975dcfd7a9e3aca1e843072135430f3c5798c -size 23591 +oid sha256:72f18d76f588da96115181ebe14d89703451af2fe9be711d7248acc9ea373238 +size 23599 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png index b8dccf7a41..8a2e33eb62 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48804863c5b08d5b2c0b2a0e3451dc8d6e493001c758fcd65d9752c16c54d0de -size 24123 +oid sha256:9bb9d84ecc37123f6d6e66f315626320d697ec2b5a82460f827b13921ed4b932 +size 24128 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png index e885631b95..5419c8177c 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f808d6ea2a1eb3891de9e746963cae5f398c6f6b0d1ac8d0c06914194ef4c56d -size 22172 +oid sha256:031c74c93390702a5fafaf6479b7ef22d33ff06fb39351ae42bd613092b0d0a3 +size 22160 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png index aafee6ef8c..50a045f970 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45e3ff62c2ad05b7d7f10ff7d47172158415aee833ce6f85c9f2426e10ed5396 -size 23061 +oid sha256:0be5327fe38b6d29ce6622213fb068566b20d2a206bfc440f227696d0a5ce0c9 +size 23056 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png index 59c69ee398..04f5edeca4 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d05a8765d84c650ec5d2fcc84704fac76e8a7ca2b6bb21320eb808e4a7977e34 -size 23607 +oid sha256:736f0207db49d32abfed0e73416b7aa81a2e56e2565d01a9ceab0c40c44665e4 +size 23602 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en.png index 3917d151a2..dc79ae0b25 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8678e865aa65d5a4882ee278ecd8f2b4a876f8a989c175e6f09c8a4e6075ac1 -size 35521 +oid sha256:a19833d0e5143255da7a37c2b32ebd95dd56d25aad537bdf7160f1a0df9dfa5f +size 35508 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en.png index a707eec995..3f6d94d008 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:faf544d1012dd64dce052f49516dd9808d4635b03da2a1ca0a353d8d32af7f17 -size 37775 +oid sha256:0fb20d41f430f8a3c231fbef142f8c57d8d6bf461b79693f009719375eb2c5d0 +size 37766 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en.png index 356ec8c03e..e5b36d9c1b 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ab69843f78b7fd9d7c362103190ae97054a1851d6d6d57f1b1c70fa205e27e4 -size 39293 +oid sha256:ed45d2cb4c4cd740da090b1b0d64f5baec224818412a4a0643800fde250ea949 +size 39291 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en.png index b12690a3e1..7c3b569d2d 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e4de4b4b1f8e6aa91842eaa002e2dbe62a29813fef781ed7fc80b28a5001e3c -size 34754 +oid sha256:e53c1aa9c1b53f4da9976ba8604bd3e9c5805fe802bbdf4973e0fb7d7d2bd378 +size 34747 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en.png index 0eefb2ee37..51735e68e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55c4168327e00ce0dfc2dd6e6a93c126998d4e4d9335307aac8e06a0d40f49dc -size 36623 +oid sha256:b6d1cc74556654b9c00148768ada22db491cdeacc9544a06f1f4aaee793327a9 +size 36615 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en.png index 72e9832dd5..30b8efc352 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c686188413603f6ea05966705cb45187d119e20b7606bf0b43e30c4b7652e460 -size 36754 +oid sha256:747e3b66d71a13e6f54a9011f70057ec7ac75dc458fbe8616d0351dbb3b1a1cc +size 36755 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_0_en.png index fb4750faa9..a41f0840a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c73e84f10a891ee697f8502d1a4c703081f3ec37e57627095a12ad9ef052383 -size 13663 +oid sha256:b3adb907b1c0096ececf1c33547947a88eecd4d1e8fb7349400aaa501b06baa0 +size 13673 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_1_en.png index c0ec143549..3eab530cd3 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d42d22ac83029b1d910b28ef418d8c96b4743f416dc5160ebdd0e3e99bce39ba -size 13778 +oid sha256:985cf31a5f8e521a308839f7c6e7782a19adad894cf390f175b75e023e3f8318 +size 13787 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_2_en.png index 3a35e87929..c1f388231c 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb50f96f14f0facb16a6b554b5a0b81f9df2d6811af6510d28dff545391b52c1 -size 13593 +oid sha256:2156fdc4cc6a142e7678e15191e22baf991f6c1431aa2c89496cc06f8eb307c9 +size 13575 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_3_en.png index 782a8b5e4f..fd355f0ae7 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2a11ca18878361ca87f7b9c49532fda925661f6639409143c651a3b1da055e8 -size 15479 +oid sha256:278cce531815bd30b231d55747c2b76b09f98cb1f37c68184071fbb906d7bed0 +size 15462 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_0_en.png index 0b5e688ad0..86871c4014 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4501ad200cb22f29e89684061ed0804c0ce61deb7f09530abb017685b217002 -size 13302 +oid sha256:31abaa311b8e7aa174c960143ed793c1fc8489892dd62b1674a046d53645d25d +size 13287 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_1_en.png index 9caf313c73..519e58f577 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a74c0283b6978b51a61d4e86f09ff75d67e95c9a441ab3c66769a702f278071f -size 13406 +oid sha256:62df4af7c19201cff8da4b15c7287775e36c1096d882d86264e094db049515bf +size 13391 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_2_en.png index ea60325ea0..81477f81ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f59e8f17fac707f9b700d9c36e70f0199a294e89c6d8c4dd10cf52e04fb9b6ab -size 12448 +oid sha256:97032955377761c96196ce4038e8afd31a29f3d75f4bf1cc4c91484b5c609b33 +size 12462 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_3_en.png index 9ee8cbd01b..f2e7fa7369 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.createaccount_CreateAccountView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29a7515bf07189c657e870d9409301aa3e9c1e0b40752d98cf6be42b5555c941 -size 13831 +oid sha256:456a43b2d9aad1dfeed7ba658a4066ed172cf8bc1763a07e256286d8440b3286 +size 13845 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en.png index fc9d6b50ac..6c5179625e 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b07f82e21321935cea24954353113216fe99122494b2d52ab366a8c09c321d0 -size 35661 +oid sha256:58b726014d03b614717f6bc6515d53f1cdd63beda6294d191863c32175ea2680 +size 35698 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en.png index 6c78a29042..13a01fef28 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c573e0578549b128dea66c56cb099a40a36bdfc0293975c977e07bd2f5bc8779 -size 37066 +oid sha256:27a4dafd2a2a1c4a70d4b5adfb749e4db11f178cd87efb7929e8acf68b849e69 +size 37087 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en.png index dd5987b288..6b1db9e2bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa8738284f5fac6505f2238c982f07a0c239fd32c71a868119437035effd522e -size 27758 +oid sha256:9b3227338f6ff382c47816260dee08e784aac98efefb4d6a9f5ba548bfb4c9f1 +size 27724 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en.png index 3013d81bed..709df42a87 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bce7cdf7af45f2192cefef78b5dd5c864469428110335c04988f8f8e99967eb9 -size 34562 +oid sha256:e3a63c11864f1689f3aca8148727fd3b859606c4fe046b1a4d39c66184246a2d +size 34550 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en.png index 07f5c8b0c6..fc59d54363 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d761ffe23fff7689c4a6e0e24b9c3d55de754325db7c2f6d54ae8d0fa87aac6 -size 35654 +oid sha256:7b90dbdddea9d7eafdb66a65aaac3976af27bb3b63090046ff414138c6ecfbb3 +size 35662 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en.png index 62384fbdce..e1bfbd926b 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:131c375ea2c0c22ede1c3d4d469b2233dde4f8acdf57fc0f851c45e1cc759896 -size 25711 +oid sha256:eb4245b8d137848d2b60d1d5d7d6840eff80f36e312ce46631a789f92eb298f1 +size 25766 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Day_7_en.png index cdd0ab890c..0895f51e3f 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0c1cb36f30969765191d54131c862a06ec749668f79e5cf025f487ddda1ca0c -size 21891 +oid sha256:8df3003af45b005ab467ad87f7e7757b2797729c856332b34459334911eb2c6a +size 21897 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Night_7_en.png index f45558ed75..ce0e27cb02 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.onboarding_OnBoardingView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f25dd05a8be436b2a6d9721080dc460f50bc7a0549885144a285a428a80a2e3f -size 20982 +oid sha256:2f38fd9da5fa43feecfa99455d7c4770d5cdbf342728c2912a2d04fd33e13ce7 +size 20964 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en.png index aae316a90a..7f1ca1120d 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8481030721604e65fa93029630a3cf5e9d314dea3a33c4383819958507333450 -size 32021 +oid sha256:eb9fa26c85ceff7d65c474c491aa921edf0c9328c05e4d13ee2862a4c223b805 +size 32016 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en.png index 5bc8f68fd8..98b8084228 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9826932d12f100cd7eaa16eaadd3a1a9d0809c713a946b3286c6e4ac614421c9 -size 31500 +oid sha256:edb75e23804c001cca044e9e9dacc17b542367bb7fa2137697b6050fac32e0ee +size 31495 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en.png index 001a5e65c5..0dac0cbc38 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48d5bda07ebc3e33f43c3e71f832a43008b9f0ffcb82d009bf3acba749433578 -size 33703 +oid sha256:8c03c5e0f6fbdbc7442ce89c24169b33b3fb9364e0f2a68d71263acc1eba6cf7 +size 33698 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en.png index 1a04c3052b..bc910c0da0 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5b4b059ff853d458871b1ef769fa32b1394a78c85a6ccc3ff6ab363f4e65c95 -size 31230 +oid sha256:c5ad68ad6f3afd5f36726cade7f11193549156b683ff0c599636af2944163a75 +size 31237 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en.png index 9ce500caec..529861848a 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:549318641c94f6ebeedc9f5f52ae71ec4ae1809ceac18f24f70dfd09ce993a5e -size 30656 +oid sha256:c8d331f307fca629532858d175b8c3ef51b876281a2d9fe8fb557fc5b2f08bff +size 30643 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en.png index d6849e6a0e..5f90928ae3 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc9f1b97209467ef809079b5635ba8001bfcb415dbb258354d1b81e295b8801f -size 32942 +oid sha256:2079d7e9022ea5fb117381db520e9c1b20caf614d8e35d2e73f03784ae51ef2b +size 32931 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en.png index 6a4686405c..b2f95a9597 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ff3542d030785564597ad45d2b6b80a4447d9de6d0d7f682ffd7c85a40106f9 -size 20779 +oid sha256:24fd98aa0c43fdf26b67ec4dffc72d7f2d48f5d19f0a68a79c2c2c53e6c5fd12 +size 20769 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en.png index 4843324a67..b8fe60681d 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48c53cc175948d08fac32100a285bd82cb6997cc5e50cad2537a7f164bdc5bf9 -size 18417 +oid sha256:58ddf6004bf14c10a0b65f271f6e95641891777e28ab12967e234363a10c33a5 +size 18411 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en.png index a69ba7b423..5b85ab50d6 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97745b6207461b287581176263991ff8ef42c46dd7564c75cea57dab6b1b0445 -size 21763 +oid sha256:c7f5c9646571391933edc18c8a6b672b5208a6a4636b5bc15f77b8a06c6ec4a6 +size 21751 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en.png index 9af6ff8b89..09900745bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12e8e16ad25f1946c15c0c4a9918c0cafd6ae0fcbe11ffcb510cae855251643f -size 33065 +oid sha256:8f32bf15145564a938bacc40ae61e8f7d02d74e7a76452d62e56c88b5c193931 +size 33053 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en.png index 91388e92a9..dc89ee8fc3 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1806e375c572b2cbd0fe128fb1965ae2a1fd78bc9666235dd7e9f0162c372882 -size 67044 +oid sha256:6e0ae0d30fde1317c5b8f20569597cc6039eac3e8f70c80c075ef4259e3e74c4 +size 67039 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en.png index 6c3c842f3f..388427f218 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4342ad5723edfa7cf0bd7224e014a834edbf73f6464b953ce7dabb1b21b2f09a -size 21155 +oid sha256:55c8f3cde0d4f5466e24a6636ee04c4baccb7e10edd4ba24e034ac16f74af1d4 +size 21150 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en.png index 54e64b98b5..60b3be0d0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a27fce1b620293b7e0f6b72feb60982b8c7e23865c5b734d8227b607b622f105 -size 20917 +oid sha256:330d0d44bb7638a4668fa33974e3b2cd31b3ce285776c993cced2b928b01bbb0 +size 20909 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en.png index b772e4717b..733d9413a4 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1c388b6e43e1fc804f2be5ab59b40d866642d415e332c97b0ba16e15cb40af3 -size 20503 +oid sha256:fe2527eae9bc919a3994cd59e8f6d0c181aa3ab9209b1c34b2bf6e63c7a434af +size 20505 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en.png index e5871c766f..0199609ebf 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f187b86f0b3338ebd31ae2f7ef639dacb1f217cde283d3ad8bb1d64176d4402 -size 18316 +oid sha256:d015f4c5905ab38b4bd987aaf4bf0ac8f55795700de8ae19b5872d4acd5bfd8c +size 18323 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en.png index 208a1be0f8..c19826eb03 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:527bed48f32f454a17933a029c607a4ff290072a77fa06dc078e4c9487e8e2c5 -size 21523 +oid sha256:443ca45f4951fc0ef2d390cca6bb2c5717c0160a9df04fd3fe5bb7ede82a1f91 +size 21530 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en.png index 3b6e51994c..111df0a72d 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9090b07463eb2384cc542bb0fb5da7c43e338650a8488343eb70625f7e64d604 +oid sha256:76f4bf4c4d8783e9f79d2cd174484433dce3d4ac67eb3b60a178dfafc3df780f size 32416 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en.png index 2cc361a85d..f550be4d00 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1b06dafdd25ec468016838735177c807a9e950bf99521de4b9e67ad804816ae -size 65594 +oid sha256:a90a5fb148455d4e4d9c4d8332222927d6cf3c606e27c695e4c44af13cedad9a +size 65592 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en.png index 66a2d68689..bfb26876c2 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a88bccb59cc963430c8d0cb3c8d3c1b13ec2f842e4a8bbcf4f8bfc75af1cef9e -size 20944 +oid sha256:3d2efd7eeeb3ef4dd0746f854028dd012705e4565510596fbc25c86b27e41903 +size 20955 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en.png index 294dea5e58..a1fdb67640 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1458d506556b3cce3507e08aa7a435583e0d369989e5858e7700c88b9e456a91 -size 20629 +oid sha256:516a6c8873c80c96febb9edf8956bccb00b849301df4682b969d3979158316a0 +size 20632 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en.png index 1788cfe31c..8b832b680a 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b496323ae79dd599379d0599796f42a1ceec66063150c47e67bba554a557e28c -size 50017 +oid sha256:d56fa06676b57960d2fb80755eafa2d227c3d18e1192136602e34c1b2520fede +size 50037 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en.png index c3ab42fb5c..fb2b7e9193 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e876ad66d9571da8579204cdd5eccbdb6255f11e176ce26617e3273c829352a3 -size 49153 +oid sha256:33bc8df0c875903c216ffd7f62be804d9afe3922c2feec914d27ff552008ee44 +size 49127 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en.png index 58f9b452fc..c30565fe33 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f5cfce9ce5cc6c1ab4c3a0407eb47ed6816d88ea29d4a3879b258cbe32a0206 -size 48944 +oid sha256:fd0fda31fa91d40c8d24ba07ae3c3720308208b9f6fbb8225541d42467330f0a +size 48936 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en.png index 0c6f82c6e2..c436d587a6 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08b0fbd0a78a1a3e58c4c4f21e636cf5f84d0c371627892cc83eb9c7359e34d9 -size 46550 +oid sha256:5c26e52a8c1dacb2a5c7b567e69f2cec9022d4ffffeeb461fac5056659ef50f5 +size 46572 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png index b881f5507c..0a4ee279c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a691b9eccd82b6f71fb4c7f3d0931d4b168fe99fea3e8b35103de2617d0d164f -size 14609 +oid sha256:58217104c9a26ab0fee9cdcb24827800a61b00730e7c52a8ddb900d88f6aa55a +size 14629 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png index acd15bed62..76cac663ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ad8ebe5cd44806067cf9d22753c3b71f52e405f47b71cac0f3b0edfcdd30b6c -size 19753 +oid sha256:47a1d2a56df0fd2ac662eaef18e35a0ea524cd2fe47e381adbddea6bd300bd8a +size 19774 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png index a4781f729a..e16c2b9ffd 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e3ad90bf5f4bc7e18c3b7040e2c055a55e518f24dee719447534ecce27dccb9 -size 26106 +oid sha256:325dcaac7e37ba3977d1bf867464bafe09b52d8818024b2b0994976bf9374315 +size 26128 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png index 5c0fd6cc44..bb9637fc2b 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ea9fc610c5cb79b546dcd0438e658529aaa6f9f1135d63d8b1bbcf5e798c57e -size 32258 +oid sha256:2f8ccc661ad150a6c8ea19c3051ce68863d7add01b83d5b18d365ba0173786d7 +size 32284 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en.png index e4c29da6e3..9c7478491b 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2b974ef6efffed566221686dc68643c4cb84fa473196d140c874f7f2e89d346 -size 31287 +oid sha256:82708f952ddc924e20d13a1d49725118b2e49b6e962e4a67ed3c136acd063a61 +size 31304 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en.png index 28350efe96..2b2e86defd 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8985b0c0826e77917db5038c9cf603b300ee9db4476747661e31b81a2ed21e37 -size 30423 +oid sha256:a3586a4cd910c491dfdd0fd516e05d830c877d940663dabab0b0a50a511a41fa +size 30449 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png index 821feaea19..b73f4d4be2 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0d283a0fbcae1ec2864a39bed60ed7799173724ecf1acb7b55c259477553cc5 -size 13963 +oid sha256:68751e4e93cfa457f753b1605637a8d1a4b9c5e600ec86097b05a5aa8e3ed345 +size 13955 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png index 8c2398f979..33e8d0cfce 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85e270ec5307a15f57ac92862efed174e435d1bd869f2c8ef99e38a97ff81252 -size 19024 +oid sha256:3205d7cc5b33732414c493ee3564a4f94669c01796d428d100d67212f6618c5c +size 19014 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png index 0b823ed8cd..dc1d1efd31 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73a233802af6e13796f5e7be2e85e67b17c0e3175fbf4a98733a1f3c86909939 -size 25038 +oid sha256:36b854e59ff8875a7132340ab2b4ef2dfea0e824d38663e95b1016fec20e064c +size 25012 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png index e779ba29fc..eab090d118 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:056e162c06b71bfad54d1938d485845b6221e4ec8da4d624cc8ffbb4779b6ece -size 31054 +oid sha256:4bf95bcff03d9cb1d70b29b507563e7fb131885548297a3ba8ca49e1dc8e1fe0 +size 31055 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en.png index 0650ea1162..ebda0c7f9f 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2ae9d386bc79df3897861413f8856510c12107063280443431ca7c82931eb2c -size 30091 +oid sha256:8c151e4afc239da27ef4a0510cce5b2ae7ac061a540c53e650333f0aba4560c3 +size 30107 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en.png index 7eb468d971..06075aaa85 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2462994c75c4b75ffdf772a8f058f9ac7769e51c32b3373efb734d6071b12fb3 -size 29127 +oid sha256:72a487fd1e35beaacc38b0fd059a8cee5d6e67abc908731b7820d78f0631d452 +size 29120 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en.png index 53d093d697..124496f09a 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74a0cc83697dfc3e21155c061c356c42732ce57aaa3202437a7e6aaf0f0a4652 -size 23633 +oid sha256:96ecd537c90cc286029ea53b345c05279dbc0bfd6c7e907e328b5f54b6f71822 +size 23667 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png index 4b7482c16b..ec657b622f 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d9d0859280bf789a095ee379dbce92c5c3fb9cbc994b370e108ab711dcff223 -size 50755 +oid sha256:060cdf1ae2d280bcd101fe11979f318aac7f9f34f2f943d702628cb5acb2b726 +size 50797 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en.png index 276bb073fc..d6cc40fea8 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c49c2a3be28f39bd31f720a8ede2b6b1a5aad456a86942ea34e1c2dee363d626 -size 23148 +oid sha256:58089aa957efb70172a21c186adb493ff811e0bbc639c1293cdb38659cbf4f34 +size 23156 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png index 75a7f15a1d..7357be6a41 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:079d3c04aec0ef842ac3bb3cd1ce9920c7ab6dac6967805254d304e34eb76c3a -size 49860 +oid sha256:717d2f9f06238064f4a4a77853594b1f9aca44d4e5e90d96ddd54c8a1dd7b44f +size 49877 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_0_en.png index d8112aaf75..8b3c209fea 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b50e20e3379d61b4bca099960ef4d5ee5704c034d3f7d8622c5c9144838adf18 -size 77808 +oid sha256:0f92ab829b4ea1131e6dc3082becd30b286c25f0361dcb5c387832d659936c77 +size 77788 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_1_en.png index a2fede0b8b..9e1fb0f9c5 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:454311f3da693362bb0828f46e121db986a3155812271d44e3a54390fa882fdc -size 76225 +oid sha256:dc11c389f93db0b73d495f76762c3725bb6f9857231406b3614ef4566dc3e66e +size 76218 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_2_en.png index 0314ca1c8f..b10e5ff7de 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d81131943b6ff08a8c52827e956a9cf8d830b8523c192e645b116733aff2f8e5 -size 61663 +oid sha256:ff56fbfba0d25239366b734469f76b0856a65ccb16cf865120455ef72fd05ece +size 61647 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_3_en.png index 9646868b80..070fb9463e 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20bd0e1458afb6c992e9240ad9907c60a6dfd90c34b8cbbd274367f607e7160e -size 55857 +oid sha256:d49792bec9eaa05e0ac304eaa3aab568bf07118acd81d2ac133f8479782f79d3 +size 55835 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_4_en.png index 4b4539e0bb..12fe289755 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3eb3667dd904f0e831cde35cef4999066efd173f374084655b7a3c0ec43babf5 -size 53080 +oid sha256:a9b62038185e1a54d4ff38a93a12394b18692339d2e4dc91ecf88d27919bbab6 +size 53060 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_0_en.png index 93dde4e943..7d4931df34 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea1e0a8550ab8891d0df0312476c943cee9f921814b8640c53fbeed3679928ba -size 75969 +oid sha256:2b28725659526b938f54d89f8365c8f25558ca913116822fcf8246bdc6fb84bd +size 75947 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_1_en.png index cd6d404a0b..721cbb9232 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c0dcbcaea409193889685c6d60a21b1b64241796f1189c0315422e6f37721c8 -size 74302 +oid sha256:a40491ad50238d2dce8fa143e24fa40d5d32b3c950d54105a0196f20618055af +size 74306 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_2_en.png index 7b590a03ac..967a41c778 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5204b189cf02f8f0145427df1c412e597cea106bcb87ac259b28e41ba55f2f0c -size 58053 +oid sha256:20e3405ea9c51c4046aeb5cdd7b3b476ca4f24e759dbae00db14e27c8b9fb1f5 +size 58072 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_3_en.png index 3e9223d717..0f993bde4e 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:425f454b182dc1cc54a13db28cc43c35964b4fd51c959ecdd32270aa1edd6c63 -size 52855 +oid sha256:77d46d7149e796c7885e1d2406c44667c44cc405a1dd8be142c7b0349e2349d1 +size 52828 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_4_en.png index 1235b78c00..d505d0c496 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_AccountDeactivationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6b8b614b6c240d612fbbaa97fb3df77269a6fda04cb8c245af91cb2b75fce57 -size 49654 +oid sha256:52b1546c184a5ba9057e37a44c5d025a65f1d6bb9891e79d9bc84444bd24d44b +size 49659 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_0_en.png index 3312091d9f..a1845184db 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26c9c3c7dbf02862565bbafe7b763bd140eb898cb737d9b3a1eaef20632c91b6 -size 10915 +oid sha256:d86c9bf9e2ffdb999200851c33ff40e90a8cfe75e63ca0298f5a957f65c5fc26 +size 10940 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_10_en.png index eb95a3a49e..710c720b97 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8091f08791f11b595d91e122cd289286559d73051056f56876574e5cd0f5e4e -size 25825 +oid sha256:ed962e2ad170015fa521906dff399e51f2127a985f49fac0dabba38a18b22299 +size 25855 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_11_en.png index 94bfba80e9..e0df4506aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9711b003b1183198368df7b045f6a213c7fdcbe7c56246b270ff7abb8397cfbd -size 30603 +oid sha256:0ae3da8f5e9c68186bc10638dcf50e4004c49b4fc8767da3b7ab16e3b429c5e8 +size 30634 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_1_en.png index d850d9b28d..a06bd225cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45f87240bbfa831fed4a80ad68a8253f80d161626189f7b884832bc7542f2078 -size 37092 +oid sha256:d1f34307d2dfbb82ab37b39998c8e7dcfcff2eda0f707501c9fa144e9a167c23 +size 37130 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_2_en.png index f8bcdcc53a..7d4e2ffc48 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f78446809786d799b9fb3930dfdee13ceac7184a4a4767feed690c29943943a1 -size 27517 +oid sha256:c1f5075f4d1060f8ce9fa297d184f0461687edca4fe401de08858b037c3bf99a +size 27546 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_3_en.png index d850d9b28d..a06bd225cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45f87240bbfa831fed4a80ad68a8253f80d161626189f7b884832bc7542f2078 -size 37092 +oid sha256:d1f34307d2dfbb82ab37b39998c8e7dcfcff2eda0f707501c9fa144e9a167c23 +size 37130 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_4_en.png index 2e9718ef25..efde266a15 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:528d6fbc1077900bc3f60c322e6a9705c6eda325308a4b4c0ec64f361a8bfa61 -size 24155 +oid sha256:da5c79f4ea2f59f8acd78aa6497131d30354c895ebd9490c3a1f74c00fd05f27 +size 24134 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_5_en.png index c8798e8cce..1863833cf4 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ceca5b199df655056c7ace20a323fef66b0821f1a375763b9efdd58114ef66e -size 17221 +oid sha256:693b82b8a1587fe26788910db9a0c668029d1fa1745d342b74dd5bd7f01dcfac +size 17202 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_6_en.png index 9d1a2e3389..cfe2ad30e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d3485c356369d0f809fba0ea28f1ecbf2544f8dc277194140824a07704ddd59 -size 23083 +oid sha256:837f9d87cae529d3e42a2d6be9d330d2553b1b0f13ec1b4ad1ae1527770ad3eb +size 23061 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_7_en.png index 20981bd7a4..2b20728bdb 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1447bd81bc01ceefa94a4265ed787a6b70f3c912af51cdc7ffe554985575a5f3 -size 35271 +oid sha256:f86a22d4e6d2f73cf26db9f2448df6c4a74d38afc2a00af93fd9e4449bb020ea +size 35303 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_8_en.png index db4ac9865e..9535c84de7 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57c24c7a46fed938521874661dc19ec71fd4803e33dc68c439ae10f8d1646ded -size 33417 +oid sha256:41ba56d647b8e5ff6956516e24dbf2e25e041cc8762a30528e15d0dfc327faea +size 33444 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_9_en.png index b6200e998e..5274e8f04c 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f063221a85384ceeb2937628d2e95320c06699e3b42153518f3a8578981e90e -size 34339 +oid sha256:0af27227bd4eb5cc8a48b883d1d829b059a9aa347f38995ba329ceba384c84e0 +size 34365 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_0_en.png index f6be0efd9b..193f658a30 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92148829848b2aed2bf5798227e33ebf182df4ff060f3af335ca5d1d20301f3a -size 10522 +oid sha256:b1cff939257db9f0031ca24a44566889f7adcc7510b51222ab0a83a21840aed7 +size 10515 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_10_en.png index 48b17e29d8..dace95b236 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c8226bb4abcd49cb081c8afe1f82788d0ef706e9e294b4ef96be6ee5e1224f8 -size 24905 +oid sha256:1840d57044559abcfc6adcdf66c1e2f6e6b8e88246972f7fb9d8f6587e2517df +size 24895 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_11_en.png index ec9ad9ae2f..90f0009af4 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dab562694765608729a5084fe0ea0355878507103592ac555e4fcebb8d292d56 -size 29612 +oid sha256:18160a8994ac13621938ea64136aec18f2409046ba9df054d76d0fd3d4db7cb4 +size 29605 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_1_en.png index b07ba32d93..47df40b0d7 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de33894dad24f9e8a8ccecf73b80d76ccef208510de3b16e7688782e82f769d9 -size 35736 +oid sha256:bf6fbd19bc18ee9c9430593413852730518d0ddb897560fcbc6a8012ca0eca6c +size 35732 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_2_en.png index 290a4b02a3..b5a6480066 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:401c69cfdb83b0a8017b4e972abc13eb46f740bb49d1894c66157045a6a6289a -size 26482 +oid sha256:9ee4271bf13d49812d2bee18a2d012f0704e4c678393bec3a1dbffb784fe9796 +size 26481 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_3_en.png index b07ba32d93..47df40b0d7 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de33894dad24f9e8a8ccecf73b80d76ccef208510de3b16e7688782e82f769d9 -size 35736 +oid sha256:bf6fbd19bc18ee9c9430593413852730518d0ddb897560fcbc6a8012ca0eca6c +size 35732 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_4_en.png index 1e5e32cf3f..9dc174d422 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d985c2b02ad798a2804e3db14b93624bf517fc637e9d2ae2dddff571ecc96d1 -size 21989 +oid sha256:d6ca8f4714628a79fc36704fc7562e27d1692a81545ea310196c0c4f754a2f95 +size 22002 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_5_en.png index 8b36658e1d..f55af83578 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a7f0ab5f5025ec834429c4112438c1c67640fcc0178ec0779279e06efb45971 -size 15740 +oid sha256:a58bb65a33c438a14f10f4a2ac1ae341e3d8d65bedbe6444a63f278f61fd7dcf +size 15749 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_6_en.png index 4f8b313065..678735985a 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57784a0cfc2f033e722c1d30c57fae997a63f01c0a38a653a9d6c51a747e7590 -size 20961 +oid sha256:7da4472cbc085b2cd0a5853c3fa57d2867dfb2e6de57004292e26fc995a40700 +size 20976 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_7_en.png index b484c46188..5582d1fba7 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b46c117b3450960673450872fe15146456c27af2bea2b372276643a15baeaa8 -size 34097 +oid sha256:98f699ad4c8195212e4913be285977101f8cc02b80af707870a108520361dc9b +size 34093 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_8_en.png index 15bc56a51a..2f1e9cb2ae 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24cafa0c4c57a00dd1c4951c2c45aec794c8c4b54f0365b3b8022ebfc2c4a75f -size 32363 +oid sha256:76989befe99e32a24d6a469b664745fab89ba96d7e3597f4f2db4fea78abb1f0 +size 32356 diff --git a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_9_en.png index fac0d85507..b7ea9de673 100644 --- a/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.logout.impl_LogoutView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3813fe8f68e4882abda419745563b71b9252848d56fdf81e5f1c309d512ef5c -size 33292 +oid sha256:3a4cf571811cd039c67a55ac3e3a910c32753121a1ae1abe0c29dfd0fad43ca2 +size 33284 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_10_en.png index b1d5fd3d3b..f6aa89fb99 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b15a3f5119d31c2da2976f6526fbf8aca73cc1eb1eb6436a4bf619137b9880a4 -size 29616 +oid sha256:41455ed68974b754aadc75fdb3f4402585392f865cdd04301a3453c29ff99bea +size 29613 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_11_en.png index d7254dca40..fe25500e7d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cefbe57afc5b78b598d004fa9f6cc9d42e00127ffb7900a2f5346eeee0b1531c -size 49183 +oid sha256:a374aa173eeff89b16c1aca45c7df58348f795fc4f6e06c2728114885905967b +size 49167 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_12_en.png index 789df60a7c..b565dc2a90 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03fbd054c197e783d2079cf4b3953f1a4f15dc7c38889dc826cb5de3b7c1f4d0 -size 50597 +oid sha256:452266b8c0b1672b84e90574490a6ba4f9effec54e52c830adb609946ae91cd2 +size 50652 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_2_en.png index 4568d23092..4cc104bb95 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34c5fd10902041682c6ab2c3022ea44977035f7de6ea9844d94876b921327ced -size 43960 +oid sha256:e6c189fc3d50e0ac43990ab1ad7a78f7042ff24d48262a73c1a82425ab1ef6c6 +size 43920 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_3_en.png index dca9066157..528cc91b71 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:531e376ef91fdb4f535a951222f5e25ecacc7ded6d6693e30551ec68a16dcd33 -size 46911 +oid sha256:810eaf70634b3a08cccd928bf10c6472c56b9e315c28e4f62079341e7446c1d3 +size 46858 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_4_en.png index c051c9bd74..ed07f0ee94 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c18f38af96a7f2d0e6dd30827d9ef5cae25d7c864df81ba763044f782f3bb7c7 -size 45233 +oid sha256:d11c49c0a5303bbfa2dc5cd94a2a71ea421b91f45d5dc8f6ce559716107cd36c +size 45189 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_5_en.png index 13a4439f26..2cdd106985 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96472d116b4c961b4dc44e7a5e8fcf9a7751ed7662e8c4a169722ff53a53ceed -size 42380 +oid sha256:e3e2510f39a924c7e86b2725bad2b70547fa9329764f8e165f21ed169774b6f7 +size 42394 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_6_en.png index 10ee8e348d..4c25d1d690 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:055df03c64585976d1453c0c3b5b0460cefaf1aaa93a47d17b98cc80fba11f29 -size 45525 +oid sha256:a00f78ed08a6b29f02eb0225a5b627e29ee218cac8067d42c38dc35eba362969 +size 45470 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_7_en.png index 05e6b2c7b7..50c97e2207 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21a5e088364ec86448df788e0d54c27dcba3c6f696a86e7f97289da0792ede75 -size 43598 +oid sha256:b9e3eb76e43e240e2e25dd82f19fe8cbf3da5a712dad00c1a2c1924fe3ef5e8e +size 43620 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_8_en.png index 36ecb96acc..0e61377758 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e356e49f62609b0c96b294a51af0c3dba861906d0cf18492460b2d199dcd1003 -size 45368 +oid sha256:bebbadba5009f56d0b98f7e29383c1b04e793aff9ce8be83fa35b8e5aaa37de7 +size 45321 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_9_en.png index a0ea657805..fd54f40161 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed74db84d89dd5c59bc9470b1cb6e7dba625a830f7f215b5af60322deed39b04 -size 34643 +oid sha256:13a5f12c6bd1b87581bba68e4ad8f1f971caeda4680832ed3182d62fab5973e8 +size 34599 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_10_en.png index 2feaa1bd5f..0972142472 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25969c104deb93b7816d7db30cbc1d6f1b747841f97d017211f6769f10946b52 +oid sha256:8221339de385c37cb4a53c1b9cd5d3b8e8a35b594235c02eb0b4d8c5b79d4864 size 28701 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_11_en.png index e762a68e92..364dfa79b9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a883e703a5f8c9a794ca274e52b493c490815f39c84c7c7b9c9cef348ecfb766 -size 48368 +oid sha256:4b8db882c5c5f54aed41c2803e6845a95305206f3237b4aa788d3ba5d883ee3d +size 48338 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_12_en.png index 67b93b5e8b..2bfecaecea 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c44806a243336438401a21e265c8d513fff7e4f2cbf68a0c745f5918c89d639a -size 49828 +oid sha256:3fb27bdd0394a7b1aa82d2fb20e0a627e6fd47ebc3dd60a2d3b5ee8e24717b53 +size 49889 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_2_en.png index ff27990665..ab2a512998 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9725a74d334baddaf3946675b871abcc24f20e3518fe572f6eaffdcd5e0bf98e -size 43028 +oid sha256:3fd7ac1724cf64adce731ffd80a83046944bd8af6c5b556e2b00e1ac3e3f398e +size 43044 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_3_en.png index ddf220b94f..9ede501c99 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78379d56dda45b77f6bcfbf32e12e78f72e88c760d7a0911bb9e8c9f244c39b8 -size 46151 +oid sha256:a4bc8613ca9c419b2d238990fb090db20434cb4fc026c4f904d2f1712f8329fb +size 46167 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_4_en.png index 39a4ed6170..4699f6a24a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8213b5f1c9620cc8edaaa9971906f09c8b466d42ce253a9f52d30419af2e732 -size 44722 +oid sha256:a40530757b5cca798f26794e098fc7e0c07044e227458da2603774989e15bf87 +size 44744 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_5_en.png index 05aa90f6c5..51c0820e25 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c94f65df581c57f83346e9c8d697a50eb95cffa5ac3fc4198017a41b9d72537 -size 41215 +oid sha256:eca8d3d3d838db44578c45bca4b3bed73d40f04000b2d947cb2742a22ff6b8bb +size 41237 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_6_en.png index 6863297844..d016dae2e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fc2b4034704979785701cb42fe2b967256a6151ac90934cecd5b8b1922f780b -size 44987 +oid sha256:64d17ce693cdf66ed72f2b881c54ac455e830d27522e0163c7a51fe5e29f0787 +size 45004 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_7_en.png index cedfe0a891..b6ee950d3e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d14b2d18fb60fcabb3e657001c97d95f55b82e87cf8efa34c8a5fb2ab237a359 -size 42385 +oid sha256:709da1c52a89625280393ea02b7a6281f6e7101c80d485ba82a7b4f71279ff46 +size 42401 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_8_en.png index ed3e934f07..fff9e25dc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d081025bedebd0993968f3522a6e4266ecd20526284c37794a7180305d07c7c -size 44806 +oid sha256:68b92e58a4670ac3e0d621843c1a234507fb164602c7d1096ab33b248a58cb61 +size 44819 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_9_en.png index 1b9fb82bff..1bbe6d7ffe 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.actionlist_ActionListViewContent_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a6fb2cfae961192dbf019291f157e0c167d44ef16c441d1bb273b4b6fbe9a1a -size 33331 +oid sha256:020b7638e8de0c7e96051e08c47f03c54df5e6cadadae80b5b7599fec943c9ac +size 33357 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_0_en.png index fee039658b..a0d6d70b6f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab08d702a9426d5d577939130c8dc21c23574998754ff1afaa2fec8622fd35b5 -size 400216 +oid sha256:17caffb2cfe6e5532ef33b333e1757d22db57867d61491d7f3717f12f9af6e68 +size 400171 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_1_en.png index c86b8ea729..82330fb9ac 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:042e8567096a4ed1809286c48a6dcfeabf403098355ee5d56b8a2b5d9f71b4af -size 399918 +oid sha256:7066d8825b71f3fb42fa76836d73093296d33ea07415bb78d3755e5de56fb55c +size 399883 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_2_en.png index b9fc892a6c..2b0306f7e1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e9ee69210098536033f3b3ac80a5f2ff6e9b9f83e5b030eaec572bfc924431e -size 59465 +oid sha256:3e33323ca7754089a9d381d7fadf802e9c7b655c291d4adb8c5c154a7a9ee01a +size 59425 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_3_en.png index fee039658b..a0d6d70b6f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab08d702a9426d5d577939130c8dc21c23574998754ff1afaa2fec8622fd35b5 -size 400216 +oid sha256:17caffb2cfe6e5532ef33b333e1757d22db57867d61491d7f3717f12f9af6e68 +size 400171 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_4_en.png index 3dbe80b1b5..b5a44410a8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8088d0a6abe61b16595574f4cf6b18af122a1e7caba61c560b7bd22af0c1fcad -size 59371 +oid sha256:c31caee91a73dd86351e98f2958bbb22ad6b286d18979862f36d99639983b689 +size 59331 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_5_en.png index 07c778a8a2..0b2acc1b7b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:718838b71f5e69e54b9d2977c7dd9f4a1cfba2e5c03f98bbac4476bd4f91e352 -size 86475 +oid sha256:6158acd4fe1e55ce12c7863d179284e7af5f2dc3eaa6d35d5258853511693c55 +size 86433 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_6_en.png index 41a7341afa..47c4d55b5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4214287ce64b1083c0be5227fd6e16066f3932c48ce7a8953d47999a5924fbf -size 72848 +oid sha256:d3f18250226a6d8eb034b1de50531ad5b09c3da3020090a04d6064156d5aac35 +size 72811 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_7_en.png index fefd103edb..0964b15178 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e0cf2a3fc5f92c5b7e8caff9e60ad9495ba1703dbb160aa64f9fd0a1bd4822f -size 406105 +oid sha256:fc10238dcf203073bb7347372164135ad27a219f8b29b293ebbef4e38c16b6fa +size 406059 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_8_en.png index 23c8cbc45b..eb5f1dd827 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.attachments.preview_AttachmentsView_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbeb0287f75afc662c28cca13fe39f9d24e67ee5b507cf976324d5d9dd4c381b -size 83505 +oid sha256:787675a64260b3557948840d252836cd561814117e93dda41332af57ad54953a +size 83474 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en.png index f0876872e3..33761f5e0b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd04311a5a5149ff49533ea8dc92c20533fcededdd555009c494b4faf1228d70 -size 56136 +oid sha256:2ceaf287838c0a6fcd1e132e2e524dd26de2895110387d177f07524979610049 +size 56178 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en.png index 4e67dc4988..f082fdfd50 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f218607af91fc6c214e83bd35091320dc63f0e8a65de169f6635b8c312cc74 -size 64464 +oid sha256:8e61c655429be007d2492016db77d6f276ca7cc3cecb19b7e7bf723ff3f599ca +size 64475 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en.png index 1877ff8348..85a03690d1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f344bc8222bc7ce57eaa9c7025b318aaff8b921950cda1674ffd61c8b1e734f5 -size 64753 +oid sha256:f1d607448052e38efa6f36f4d3aae2712181594bdaaf19094fa035c941c46897 +size 64738 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en.png index 547fd389af..0fe9ba140a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad0d72ac9350beac968fe5c658dfdfede14ecae3d4825db3cc0d873362241c83 -size 54736 +oid sha256:016506802e24fad8c456394833b15d761b391231af888b8d561f7c984389c3dd +size 54747 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en.png index b4d5de3673..79e65c00f1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9c7c8f8276d60dc85481a4a6aba7562f9a7ef6ebfeef639984ce23878974277 -size 66875 +oid sha256:9b51235edba1e4c4091dab2d8da2d0a44347d815ec6dbf35e5916e8a1ce24d0e +size 66895 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en.png index e9b277c8ad..5e3703cf6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ec65cd67b1014c45c7d6f8310263bbeb225c59cd1d5da1aa22dc1ee29e54975 -size 66217 +oid sha256:7b2ccc52904228530bc7efdadd73998e882baa04c66de02b8ae7e88f7be3787d +size 66248 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en.png index 7cce647f45..e6c9140cc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5eb071620522e1cc85e02554ba88ea1d0fd1240177e6e14f341137ea36433a6 -size 56761 +oid sha256:ebaea3664362e8e9c91e0727a1c7e4d9ed42d3661c2c5c6d8b7b51dfe4a1a696 +size 56767 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en.png index 2c69c45672..f9a54c7fd5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e4b8a9839598a5d035f6834865b8b66762ef49024ede88a498ed568261d0e98 -size 54446 +oid sha256:6632f47fb3dcebad21f74716b39b7dc67819d2d54f1165bc055e90c2e1aef1df +size 54442 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en.png index 95976d8ced..b5c996bed7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f56ab3bf4f8cdc2ce98be69a0064592e5679eac186c1ec5431e6470b2416d987 -size 55313 +oid sha256:c286179169bd57dfd1c6111aac86c168537641e1591ec887f497712b3bcd05a3 +size 55324 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en.png index 22ac848113..da52f4ff0c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cb0632e3d9222b6e5ab087539e5c8bc3a5c7ad7177631801ec1e43bf2d14bc2 -size 52426 +oid sha256:312d00ac7fb97d683372f1122ed0dc6ea81946b1f8b6a1d3a84fc1a3ab212bb4 +size 52416 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en.png index dd7484b444..42bbe37ae4 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:050bc2041dbd68877ec793cee650ec0a859de5aaf6dbefbde7ae541827cd6ec4 -size 24179 +oid sha256:44f6ccfb561e6449565a130c6026f366ab34b2e65e2e33ae14c7a46ce091ddbd +size 24142 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en.png index 351ce3983c..5dbed8456a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecd3846189fd336e3608d636309670bd3f916aa484afd0f63851b8a4322d7e83 -size 23418 +oid sha256:a5cb908bafa11a205f43c48e11d757181dce0051ffba17cbf3dfdc30601414f6 +size 23369 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en.png index 7e8b641387..3fd7a0e0bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdb8df2bc5ffafad24a948d5b388ebace2dc412ac8f0e6f639abd03a4dedbfde -size 6742 +oid sha256:7350c5f81af5791e96f0202d6b98752d68cfa95d6c9226669fef07486fb8fc2d +size 6738 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en.png index 5ca82a215e..38d49eea12 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_DisabledComposerView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd25f8e9a84252ae86d72ffe41da93c8630e7dc469fa2b065301a19a8009b469 -size 6411 +oid sha256:e84e57e40005b39e2b2a9458156cef7063dc914e7bc8b5ef95689cdd04e893b7 +size 6380 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en.png index aca96909a9..ae0d626b47 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:095c359ccc6c82bc76f2218a79f5ad581b6c53aaea7c2f003d64ade5ec2f46fa -size 8603 +oid sha256:fd658d5f8e99366b31a0aa1f65b09452823cab10c19a7216bf80569dc7463eaf +size 8596 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en.png index ddebcf77f9..c33fccf93b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerViewVoice_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd03c5a7f395ca18ca5aab54047719bf5fe27869912e26e4b7b1c079a7fa15c1 -size 8229 +oid sha256:e94077469c60275eb6601ce34c1f6d804fc11803e7ef1037bc9b49c5eb1d93f7 +size 8222 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Day_0_en.png index 8a53ab1115..217766f386 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:654a86eab37998ec6aae6786043cb1514203a88e315c090c7b88f6e37a6d778d -size 19128 +oid sha256:9d9efaa65d699dbd74bd4bbc7933c31b6360758f540cf996406d562b3ba86060 +size 19130 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Night_0_en.png index 1d7980006a..5925a93929 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.messagecomposer_MessageComposerView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d69e545f9971e6b34d0e48ead3dd6e7ffdb4cf1d388b15c7a8078211e72e4747 -size 17978 +oid sha256:7523f6a9a514393c668a012bfdd60c2d28dac14e6a30acb9c18c57311e128f15 +size 17951 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en.png index 345ce9fe34..cafaa81200 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d194ea0d68d15d8950277eb747047b7ac3c809eecfc12877296b7eb67d67b02 -size 20707 +oid sha256:ad1808fd1f7eeec6a723d6037dd6ef163ce18163d4d0e6aa8301ba5dad4ae510 +size 20696 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en.png index 3f862fc218..9e6b22ade6 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a677ede82dfc471dad04ef5b1e5797def8847dad800c2ddb25de4d57967cd54 -size 9951 +oid sha256:e61cbe97457377827d04b60b5a78eaf27ef99e2af2c07f58e1bbfcc488127622 +size 9949 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en.png index 706a51a6b1..17d9ff14bc 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49bd11464ee00bad139378a1c838e28137df0ee1d0b79a409a849dd072b5f34c -size 31674 +oid sha256:cc1b0d4d04b6fe66d9bfff4ad3a376bc9a13933b903058072b189cf76631cc97 +size 31680 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en.png index 261a484f6a..f27a94d3a5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65b491ffa423ac5dce4e9bbf50b623edda962a595834e6ef3ee0b11766f0e174 -size 43773 +oid sha256:acbac9e1edbdda905ee58cafb8ef22d7fd4e1508375cae17eae8db606ee45f15 +size 43792 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en.png index 25a06027ed..ca875559c0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dc9805c2f2d910491da944f1cf91430bcc5a8a91137eaaf301f65955d0d350e -size 18798 +oid sha256:cb2d0b37abf2b2e2697e52aeeadea59ea92c824db4e46c3dae173599720f2853 +size 18828 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en.png index c76cd4b662..5774300c14 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da92e41ef68fcbd813502ef6b9fcd6c535a84b45532fe868a8ddb72c151423ad -size 9765 +oid sha256:94dcf16e44de6fc1410ea19dd066c861ff1171d43802a8885abcaec069f77302 +size 9743 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en.png index a53ebc5379..f363107d11 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ba2c4c469b7e4150156cf3a22a63bb3ab5c17493bc2714534ee8c3138305819 -size 30760 +oid sha256:2dd313ba433a5b568989846f5037d0d029cd205e2751c0dc87af29255b62a56d +size 30741 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en.png index de08db01de..605b3573a5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6f6171368be0a7dc5395b198ec421f72b397a2559f27473d4f5935944c60b2f -size 42510 +oid sha256:20005156ec4fd44450da5dfdfd422a747614fc572fabf0a1f79d5c8e689e3b77 +size 42514 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_0_en.png index fa6ec5174c..26758d7384 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c90eb5d5ee91ec306263f32a252888a2e8e574ed6c8206cad08c094a9a9cb2ed -size 43574 +oid sha256:2faf649225ecdebc6bfc68f8a668fbf9082589c90014adac8c9dfcd3eada2d60 +size 43596 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_1_en.png index 99f01b3bed..ad85d5437b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4799f6d61825bb1873d7d90a7fa4e6e4cbf4886bc37ee82696851e7c8232b68 -size 44662 +oid sha256:ca1fbed236431eebbacd58199d244d5167d1870d4ac1098850daf20e94a7c387 +size 44681 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_2_en.png index 4bf8a52b5b..337dc3b4ba 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f21c1edd672ab72920c1a75e0e191a5e15c1416b8855eb80a18fd9325e2d6835 -size 44201 +oid sha256:63b0deae7849299e6f3a64c4361d24641ec267b782e831bdcc820f8c18656418 +size 44223 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_3_en.png index 1043879096..b3f96beb1f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:278669a85a31608f7865f06b416afc1270a9873b550f0c10fde4625c5f3e7f12 -size 43927 +oid sha256:28a6e5bec7201237252a65e97302c7ce6eb59b1c6dbdfe24e027f6649a359b19 +size 43948 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_4_en.png index cbf61120ea..633fe3ef1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58f9159a23fbb0880d42021d02c8a58a304752db6806631694c8a6eb39566c79 -size 34833 +oid sha256:457de59d5bbd601bb548ea95f53705d247dee1e49a72ea9de9146c7742981e4b +size 34827 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_5_en.png index 4bf8a52b5b..337dc3b4ba 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f21c1edd672ab72920c1a75e0e191a5e15c1416b8855eb80a18fd9325e2d6835 -size 44201 +oid sha256:63b0deae7849299e6f3a64c4361d24641ec267b782e831bdcc820f8c18656418 +size 44223 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_0_en.png index 6216365657..b8fdea1b5a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e958c8160a12c016826cc4e8af43b48c600d0ab7d3d811f23cfb10b2632450d6 +oid sha256:18611a0d29277f7429b1d8c396e44dd1dce34b32e060cacde1bc6df8731ecbdf size 42179 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_1_en.png index 06016b1be4..afe043da83 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d065bdc2440a2197e6eef113484ea1ed646aa4f4673a4438e4c96bc348f4c910 -size 43511 +oid sha256:9c95d7894c2e89fa6037ba15412a0de744e8bb6ff0fc764721965661e4fd8869 +size 43512 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_2_en.png index 4bff1718a8..87b7d74896 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:284cd97cf142afacf4df16fb775bde7a06b074c66fb3f63914b10790ed96570e -size 43192 +oid sha256:b036a6a129ab46a55594bae490d3be337a911d5b4ea2a7c0703f7ca14cdcac16 +size 43190 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_3_en.png index 1a264655b5..82fed492dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:401cc1b3dfac1187eed0ce7672acc8f9f18dc43a1428ea1eaf75f3e513a1d31c +oid sha256:69068edd97303c21ecb9ab563d005c8c155ea776151ddfd131712f341826d5ce size 42372 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_4_en.png index 00ab993e22..c5236c9803 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:126bd6349944c619190a442a12824f7c48335648f2e41bf182c03da71b44c8b4 -size 32404 +oid sha256:6cd31dc75a87da033d7c1c6b1933de79a49ad463e6ab1cd7ded2ebbf80217668 +size 32420 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_5_en.png index 4bff1718a8..87b7d74896 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.report_ReportMessageView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:284cd97cf142afacf4df16fb775bde7a06b074c66fb3f63914b10790ed96570e -size 43192 +oid sha256:b036a6a129ab46a55594bae490d3be337a911d5b4ea2a7c0703f7ca14cdcac16 +size 43190 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en.png index 04c099106f..df61c68426 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65a59efc8cfd19f4dddf0ed9d39c4cab634ebc720c2da7737f382dd2e325ad37 -size 22517 +oid sha256:b01a2e008d075539241eb99ce811088bb7ab89ee94dfe39ff8abcd4f24b08e41 +size 22512 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en.png index 045c8dba15..b39848d95c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b7fdc137bb92ef23da15f9caad89a095355c719a4151b10d3f6156d04ab7055 -size 6807 +oid sha256:0f36b7ab6f350a187e83d7cfb2e55f64fd5dfcc82438facaae63c2074fff292b +size 6825 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en.png index 3e93b95261..ce9e811519 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9ea09c61e22ba6bf59a93f06f89ae738d4cde1199fe79d2b0aed86805ddabab -size 5636 +oid sha256:41f000a90175e8cb9478421e4de2dbd87123cc22be29504372860f8db7f846d6 +size 5631 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en.png index cc8c7de1ba..a843272661 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da07b6a6c81f2d819247b77cb6452bf808a6ba9097143e8ca6acf85025ab5b3d -size 14438 +oid sha256:756c92b946bd864ad6a1cc33f0c430cea62473eff63cb1174695cb46a297deec +size 14436 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en.png index 42c3854905..6eacca2e07 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18b5a57b061028e9b0d265f725e5c2b08439589c778c49f054822ab3baab68bb -size 21551 +oid sha256:c3af79602722cb1e264dc15f883e6579db9f12114b1b43e70881707e88acbe32 +size 21579 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en.png index 493c2947a1..a538b62fa0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12be2dd55a8f06cb5fe3ffcd0364a0cfee77a4ea502a31044c2c201ace026e49 -size 6702 +oid sha256:597ae7e4f45edd15bd90511d7c9fcb85a0153a7bb74c22d1e9b55a24b182d12d +size 6722 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en.png index 136b09b57a..ea260a60fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ffe383d6b566d8ea19d335012e8aeff51de67fb75b208532a3c07bc02d76464 -size 5523 +oid sha256:2977734999971634999453a258275d5f8ad2861fb0cd5758e988606b8e1245d8 +size 5543 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en.png index cc96f69e93..e36b237d79 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8b0196422fbee4892e4909c027de98ca9f98c1d4d9c5d09fe8606b120f0e4de -size 14264 +oid sha256:58fefc1cec3d36cb6ccd78549d2d7ce6cd940bb9ec56de5b817b7dd5324d4174 +size 14282 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Day_0_en.png index 2f8870c83c..2d5bf964df 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eca4089cc6ea4a4d002f3f7d465a8b669c8fc6e9955b235e67d14ff0d6cbc0c -size 613159 +oid sha256:2831a3aa710ec9176ae5a8e3816342fdd65b549538d8636eba11a95b65d24654 +size 613161 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Night_0_en.png index ebf5333c5a..76f96195ac 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineImageWithCaptionRow_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6999ced40cfa54bfc972449887c38c015e903e12b981c3f7eea539ad3dee59c2 -size 611659 +oid sha256:1e216b136d7ff810d8d6a89a4942f29c1c1d44b8e810857a1657985d065faac8 +size 611655 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en.png index 93f6d92dc7..f79cc954b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67e6b9dd63aba10d9846722c167ecf5c9f219a149a2a7a89a6784ed0e9722a05 -size 9014 +oid sha256:f94442178a32e767e325d31c3130978f762861147cf25c684c8a1dbaebd31524 +size 9013 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en.png index e851758f7f..9159e1088a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a4a429f3349de4f6b22be2b56b5313c701d9b2f0caa988821d850922ad7b210 -size 10823 +oid sha256:c94badc42259eea54f9c1c206ca2e5db131c3d96b50e38cade8818c83090c525 +size 10793 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en.png index 169a8ba58e..3813a9da01 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6c5cba84a59f3b5c4e160321ace07213af08615e5d046be1b0e2a1a7240d78f -size 10264 +oid sha256:74b5ff422b229b78f0df6b6925077ba1bcec22952cc1e121fcc97dee981a4597 +size 10253 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en.png index bd910671c0..a5a855a116 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef2f375239cdfd6348554769f919332b29d69da4207b6c208b088cb559d368b9 -size 9256 +oid sha256:5abf1a4d2996401d56f234304e6db9f4a93f6bf22170f8d3db75ae8a620605d0 +size 9282 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en.png index cbcd6115b4..4b527e228f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa08907ce95360ce237dd3843936331a9460a9f6e035e23a36c5fc53dce8f941 -size 12569 +oid sha256:b0f368e4ab71cd07ab8400b73bac0c089ee2a0fd9a5c7effecfc55cd676fdad7 +size 12588 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en.png index 75ab0867e8..8dbc9d11f6 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51d3dfc99a193923acb7652bf0d0d286b2beed237452e74bddddc5a7fcf9a7bc -size 14806 +oid sha256:9fd4bd4529177dc8bdfaeeaaccbb7dd7f72b1a89ebcb9c429629841411b808b5 +size 14804 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en.png index daea84ea9b..5dadea0d47 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0194400efc740d003ebb8b27a57fd505b9941cc9b66bcafef5b64b99156aa54c -size 24221 +oid sha256:4b64fcc58374f1f1eb928e6a05ba25f371cc9fa634b851471a5b16a2c1644d23 +size 24215 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en.png index a1fc125bdb..50064d53a8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cab575f38bf2134f0271f9fb1a0eba018d51cd8eb9ca582951d4be52aaf74e4 -size 9300 +oid sha256:4237f1ed8fae3c6435d973773a991e2937d263f8ba508bbf713e399f365d5015 +size 9289 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en.png index 93f6d92dc7..f79cc954b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67e6b9dd63aba10d9846722c167ecf5c9f219a149a2a7a89a6784ed0e9722a05 -size 9014 +oid sha256:f94442178a32e767e325d31c3130978f762861147cf25c684c8a1dbaebd31524 +size 9013 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en.png index f56493c157..6ec713e352 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec8a4d89051dd217f8652de2d8493234d714670bff218d1d5bc3b7d06beb7c61 -size 8822 +oid sha256:013021db6d2f767623c863b45d105ab87cf87500b21151573864eda10714ed9d +size 8820 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en.png index e08a42eeb2..f66b4265c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4afbba228eca3d932cd273d8ab440bd4852798ab7b706af9c285caefab99e56 -size 10549 +oid sha256:298ba1a9ccbb0a67aa7a68000d6de06bbc1b58a01343db397db24dcea47b76e8 +size 10555 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en.png index d11dfe7c5f..a7d61e8711 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0b0b3dc7878192e645c14b9d1a9adf7f0fb76c69afc0748f91614226c80c59c -size 10181 +oid sha256:7c9705480c6e785519e89896729bc732e1a0e26b245a056d71264e7dc7e6cca8 +size 10176 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en.png index 34b00ece43..d195389718 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ac3cf77e574c2e9c9f7f30d3ca15df3f4e3936b7f5d252a925ada598913b229 -size 9105 +oid sha256:98c30b16426bb67e7a01aed77afccd3dd28fcb49dd59c439bad3beb5339126fd +size 9123 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en.png index bb3787d765..dae1422143 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c80385d94f8134d52f0fb809ac51ffd2996da4a3f1b68b70f12cfce98f9b0e96 -size 12368 +oid sha256:0b1b8e4be4d8d8c493a7ff259a55d11cb3f4159966d251ecf58050ae2446779e +size 12374 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en.png index 2e9f93bcae..0b75b2f577 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f4a51543a70f1deb60ce53ffc266cf2acbe00264508b0c0fb11440a4aa7200e -size 14453 +oid sha256:0d5215c2596f4a3fdd6ebbd9a87b799178795e6d1942a171226eec956a9eb730 +size 14446 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en.png index 8c13aaed0f..84a530c9b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb10d7c1bf6fd6bb7d9c1d93af57293b92f66916ea64a02dba5142f583718800 -size 23555 +oid sha256:556dda2b597c031a52728a65b8d767066e45e64bfd3cada83108a9286954b432 +size 23566 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en.png index 5185abf2cc..40e8ea6546 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bda3f281f21da980f21e84b9fd95663f549325fae27472525ea18ae3846ff029 -size 9140 +oid sha256:f7aac7dd7ba679f1fdff9ae0605873b86c68929adb13abaadf5c9252093cf1f7 +size 9125 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en.png index f56493c157..6ec713e352 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec8a4d89051dd217f8652de2d8493234d714670bff218d1d5bc3b7d06beb7c61 -size 8822 +oid sha256:013021db6d2f767623c863b45d105ab87cf87500b21151573864eda10714ed9d +size 8820 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en.png index 739dcfed73..57acf13050 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8bcb1e5c125a2970c30b0467b328fceebb9122085a915360bf8d5a79b1a542f0 -size 8176 +oid sha256:6929bbc0adb2503498b7424356b1a27980be484f362e1c478f03bb0ab42a3337 +size 8178 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en.png index db83722607..97a12bc843 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d576efe1e38008ccc0e3c7cf64ae9fca88b615df7875769812758f81b74d238 -size 10597 +oid sha256:2009164e45d18dee96634768edf2bea6315b50075af1766d41fd28d9181139bc +size 10596 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en.png index 91286e29e7..aa2157ce1c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:696107edd2b836af7af54ca794ba6e12015e6d8cd40c7319604aa9cc61bf0a8b -size 21831 +oid sha256:5ac5a0bbc502a114481a5e9c4d2e3c536c73c0b4a422a9ef1594110a761a7f9a +size 21821 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en.png index 6cecb02e0f..5a6fb008b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7084dd120e36c226b0d7d7ec031eeb0785de067a5bedffcbe4371be7c6728842 -size 10360 +oid sha256:92754615711d2f1e2cdf4b038725e0ccf8a9ac089bba709a6b2f52a1ebda2e42 +size 10359 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en.png index 216a518cd1..f6a8f042a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff0d40ce33f8511cb8257bf9ce2846109ba0244dd320674a0619a38316c1adc5 -size 21116 +oid sha256:b0c79bd4feca12c792e891e9d2c20c6d26df26fad3dbee15401fc65c8871e10f +size 21119 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en.png index 4c3cda9a93..9caed5aec2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a91c56e40e2f823b6b3e821657c048c9deba57f46bb141f556cd53343a1203d -size 8118 +oid sha256:21785ef7f34e3a628182723985b14a694f0c9afbaebaac71562fa46188f09460 +size 8121 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en.png index 2b07e34aa3..50fe665850 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed27e7c1f2bf1e2ae239fa5a49c6eb4d18ccfbab1a781d0075516cf8a957e63e -size 10419 +oid sha256:9c7c57247861ab70e90a12a270f38790d8ec705453a1abe074e696a824b9c272 +size 10411 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en.png index f6ea664966..797fe438b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44defcacaa00c21b9f53f9634e25bf581e9510a3de6bed8bd51fa49c6cf8e41f -size 21065 +oid sha256:510e41e944782f6c6fdc6ad71b356363da178f58ea1a5e80a679949196b9c0cf +size 21064 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en.png index d52e7c9be8..49d7bc5192 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b50c9cbffe0519db9b503b9e119f2284260239148b99ba023c2b84a61cfd2b3 -size 10208 +oid sha256:6b8425afd6ae2a852297400f57c838b97c7bc85bb80c85ad321a3e246b773a97 +size 10207 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en.png index 080c4ee44b..d6bd786f17 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemFileView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9df001e8eb669beebdc823a260f8c215cb3e194349e3d7a58ac8d64c534f9c85 -size 20227 +oid sha256:6b3842f55ac92b365c0e97eb869ce7b86c948eb9c764e2c2801e01f04db850fc +size 20226 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en.png index 9902236b72..3b1bd71576 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35f419b462fd6f734856f3ae20e11f924bcda9224f7cd1d975102f48c747d68a -size 4919 +oid sha256:9666aa672226eba345da458c463b4494c06b72353ef989f47e7094b93cd671c8 +size 4916 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en.png index d3c5f6b219..2a34d63188 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemInformativeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dfdb1cfb62f21a6f2291cbecfc1eb9ab300dadace21b7b9a8c054edb0f5980b -size 4895 +oid sha256:993cb6cdc3e3ff1380306511391e5617d957687617c5b42b2294a0c93cfcb20c +size 4898 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en.png index 86816ca5b4..a3c2b85d48 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fbbc521450e8a7f4c1503357e521c58ae252f36f481d28ec105c0b134999f72 -size 12979 +oid sha256:9cf9cd6822d784894fc38c246f0d0f7ed3a10026542bc0bf6f31d9dff52a5d14 +size 13003 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en.png index f833c5db7a..109ea46ad9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11593e9aa7caecea405f007b8b179e43357f52da134d6fe9be7c7c2fad0d41fc -size 12568 +oid sha256:f86e96f17184672774acae8d5ab0f8f719acfad2404daf2f68a46249facfbba6 +size 12567 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en.png index b8a5c94bc1..ddc0c5c9dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:895e0799a4d7c15218367042c5b6f3faf03b817d6f7c74c3236fa06e56f3d282 -size 47360 +oid sha256:55638e0bcad96a1aa5225d0cc01b32bca63c8dab1a7c284f8912fa63fea33973 +size 47363 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en.png index 5d243240f8..9440926951 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e01095fd862e354e9bc04a675224405d9e52f6fa8886ce592d7372d9e1562d2 -size 49402 +oid sha256:b20bc21e6c41505e58a53c135cd2a89d214e59abc5e3cecec915cfaa6f2b225c +size 49407 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en.png index 989fb9e247..fdb049d4cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d771112966c611b3417bfd14c83e3535c83a13182ca7f756e512a91c488bc33 -size 49308 +oid sha256:a0366b37b3371ff7d46dae9a569159618476d046b85ceaba523946539355ba46 +size 49304 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en.png index 3a771fd746..47330a5876 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e8a88d5ef96e76fb74a9628af81b4f44c11f8c4f3f4f737f1f07728e3f0ff5e -size 49348 +oid sha256:b1284ae7a3797f855fa17ee1baa3c966965d4528bdc7425ae601b57015e17b6c +size 49343 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en.png index dcd18ffc85..2eece14b39 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55ae6865681d1a7b10e0093b2a901c1c1c994d547b33b82e574687ea513c8e41 -size 45774 +oid sha256:947baaeadbffcee1367d7e28e93135937c3a3243ca4b1afe3ffde35bc4281dda +size 45784 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en.png index 6c1407f3d7..1e197c7101 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b770232557af1d4431e44c839220c7b375c8ac9dd3f2e260a829037e2bc05c8 -size 47944 +oid sha256:1baa771305baefe715cfa268fc3338d101b08c8df00e49e9f566303bbf4d8dc9 +size 47951 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en.png index 409f56d162..9ffae621b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f09d6ab2eafaf87aff4d4af974632c803700ebbca5dc231adaa572227e8c4bd -size 47964 +oid sha256:9149b8dfd77717ef1716727860b3cac431a4d34aa9377160010dbeda13f566d9 +size 47971 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en.png index 833665b100..f3239c6966 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30affe826673bac3f7814f1c85dc66e621abb8001eab14e8009ba4a7fdad8b76 -size 48032 +oid sha256:feb700533177998be86802fc32efcfe0ec070a85892e738d4d7734245997b360 +size 48036 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en.png index c53bcf4ee9..c44a9fa4c3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e82ed1e80a2ebf75a770cc9a3ce5cef8c245941a49511db51c6e2f7c70026b4 -size 7586 +oid sha256:23f66f318c5da83d6ea516603b23a79d9a98376cd7ad258372cff136b5467e51 +size 7589 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en.png index 5411c6f1a6..e3c458fc37 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7bb1206ac87607d1b221aecc7aa1e2148afdb3e051cec7adb7cf11d396e4f17 -size 7474 +oid sha256:5e1711526f9fd574964b654ddcd640abe515e94070d612d24b56e402e07da7aa +size 7483 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en.png index 5c73b374d5..764e1f2f62 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4a9fe0e21900921bf8defa3daa83b27c418d7cb1dd8c9b6dcbe57385db5cac5 -size 7765 +oid sha256:ae153c28e3144dca742eabbf07e1737bf5a59e8038ebf1c9831c9cfec4f0e06c +size 7771 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en.png index 6c65d43dd8..17e469f001 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8902fca64178c2220febc9fe1dd8f889e23a272f8310c8f731878c0e0507e2c -size 7626 +oid sha256:cdbfc07ccc078656f6e3608ea838b7f87a86b873e81bd5941ba1f46c84a1017d +size 7627 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en.png index 48c96d960f..71e3f41e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5ae7adb0e35ce929b4d98ae2e2eb10e47a96c57c43ef3d157848433c72c5cbe -size 274710 +oid sha256:e1d7b969ec71a3103f86176e7cff801e8c00433edb5da9496acb574feede43db +size 274709 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en.png index fded23e8c9..beeb0cafca 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:034352befeb44709dcd1473771365347d12cade26f01011265fe26cb6a1a0a56 +oid sha256:0356eb4418698d3401ddc985a849fc06de22daea822e0bc286c4b99178c00477 size 506363 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en.png index 72d1fe15b0..762c38a500 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6bff5342799b70df92a642e0a78eebd4eb7f2dcc787cdf6a68d356baf9cb4b3 -size 383740 +oid sha256:c892b2f2ae4658e9a0a904539018bb2da9e990677feb87be91f531e0ba40adc8 +size 383744 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_3_en.png index 48c96d960f..71e3f41e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5ae7adb0e35ce929b4d98ae2e2eb10e47a96c57c43ef3d157848433c72c5cbe -size 274710 +oid sha256:e1d7b969ec71a3103f86176e7cff801e8c00433edb5da9496acb574feede43db +size 274709 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en.png index 48c96d960f..71e3f41e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5ae7adb0e35ce929b4d98ae2e2eb10e47a96c57c43ef3d157848433c72c5cbe -size 274710 +oid sha256:e1d7b969ec71a3103f86176e7cff801e8c00433edb5da9496acb574feede43db +size 274709 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en.png index fded23e8c9..beeb0cafca 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:034352befeb44709dcd1473771365347d12cade26f01011265fe26cb6a1a0a56 +oid sha256:0356eb4418698d3401ddc985a849fc06de22daea822e0bc286c4b99178c00477 size 506363 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en.png index 72d1fe15b0..762c38a500 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6bff5342799b70df92a642e0a78eebd4eb7f2dcc787cdf6a68d356baf9cb4b3 -size 383740 +oid sha256:c892b2f2ae4658e9a0a904539018bb2da9e990677feb87be91f531e0ba40adc8 +size 383744 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_3_en.png index 48c96d960f..71e3f41e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVideoView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5ae7adb0e35ce929b4d98ae2e2eb10e47a96c57c43ef3d157848433c72c5cbe -size 274710 +oid sha256:e1d7b969ec71a3103f86176e7cff801e8c00433edb5da9496acb574feede43db +size 274709 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Day_0_en.png index 05d11afca3..71aafa8951 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1d9911da8b84dd682ac6829d2a1f6b38c02d52c5b0429cc91b9c47a20c67611 -size 39891 +oid sha256:45f61d7b50a14b483d9459846f002b9ac94c6ccb632c636f891616629ad47248 +size 39899 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Night_0_en.png index 2a5a9ed69e..5067f5b5d3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceViewUnified_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:878190c02f046d6eada9ea9b150c1e22739695681bbcf8577f5a1a20098d5236 -size 39966 +oid sha256:80ce1738cf56d99afbe781c82e32cdef03564a31fec0450aa66a84c56085ce81 +size 39956 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_11_en.png index e6a1534e69..a2f4e5c84a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3983e68125e92ee174d40bf9189dc0ca08e421e2e3bcfb643caf3a83f1601ba1 -size 8615 +oid sha256:68c8f0a94de98773a3dae69fd44fa87fd3eeee5c6bc44afa710a2ba32eacde7e +size 8620 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_12_en.png index c514750243..320efac4d0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91910b1e33b16201a0fc06aa2aeeec940062da82e1ad094cf88aec49edee1425 -size 8257 +oid sha256:b98fde923272c2959c407fb3f62cb150f1b0fac3f54d29d94f30646096d889d2 +size 8261 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_14_en.png index 74a1a8d5f8..c1d138f7ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5327a1baa2b0486d29c656f83879d001f4f0d1ee0795496718e8d4f644a7a03e -size 8480 +oid sha256:f6e969ae817abeaa153edbc06cbe873439cd3e65be31184f22db1d8becc7953a +size 8487 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_1_en.png index 4803c4b3fd..4b84f30648 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b377e9613e8d1bb29274f96a306c61218072157f5367dd03410538028854ada -size 5167 +oid sha256:fd514ccd8d00f7f1ea2dc0bce9b786be8fe99c98b44a1b99add18e132d0dc1c1 +size 5171 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_2_en.png index a94560cd79..07cf2c5161 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cca95d31978a550279cd2b36736127542a6010adc847c065c666a67d4bcb84d -size 4906 +oid sha256:9e69b5e773119af8ab4749064e68f6584aac0aa41c11a054db9e9c14e7e9aab0 +size 4908 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_4_en.png index 8fb61e6f13..b49506008e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:194a9f854b996a3228ff9e47858b50824c2b41fc7798deaddf8d317b4bd14145 -size 5220 +oid sha256:df2ac9c5cbee9a350f54ca6892f42c6685d91d9d4fbe46943143b99c915e8ae1 +size 5223 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_6_en.png index b4912b2caf..771495367c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad75b56bd561c849e596500331c99740f1c0c91ce0edb032f35dacc2dfc60604 -size 5729 +oid sha256:93a441c65d9ae6cfba78c4a89a72c037bfe1759325a7bbc0bee05dfbc40e96c7 +size 5732 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_7_en.png index 56d7952499..b379bf3ca9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57049b44b184b7e6004e8a7c9a3ee1c3e4b34d6e1f51d086bcb9f9f5b7188bca -size 5433 +oid sha256:a82b644e43af13b60c98ccd565873cfbe1c46e3391426bafcd5d71881fabe34c +size 5434 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en.png index 701e2efe09..fc9b835afa 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb60e31ed37ad9329f5d3a394ffa5220f5c32111c93ceb1ddf8de1d629f103c6 -size 5777 +oid sha256:11adeb3f01fa93c159d692cc2323761873bfba37ad6a3a014e2fdbe80cd108b1 +size 5779 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_11_en.png index b8b0c95ea2..bb12277d62 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31103ad947b4e9f270908403974478b6324139e8d148e3c3d5252f5daad35a73 -size 8326 +oid sha256:b13a02e83748f671aa4aec7eb8052bd3637eeb8c898ded100e29aa219ffc1fbb +size 8337 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_12_en.png index fc5428a7f5..b2ed5f6991 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47e57feb0ac270d1be7781326e5449eeeccedc4deefd4aeef2fdeb0b441d0c9b -size 8157 +oid sha256:4ef577bfe5233d1194c7bfbaedb38b3690964fe8d3325a9f1c71c3e83fc81d8f +size 8149 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_14_en.png index 671dec99bf..92476e7b4b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1878b6aaad15a42e7e17eca871c1b72b152af6df8eed4165c9ba4c360006a2da -size 8114 +oid sha256:0464770461d9a59015fa3bd2149bdd17c00600ae256fe4d6b2eaec12a029d04d +size 8121 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_1_en.png index e0add7031f..c9da9a4b6f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:457aa1c9c8c02fb6d40d33e442fc4eed7d5adfdfaca6eeceb0170d081af7d04d -size 5105 +oid sha256:b79152dddd997e11c52b910c19c02d21cf504d2a8ae228e11c9546f2496596da +size 5109 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_2_en.png index 272151df31..89e7d512c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a3befd7e367a73614c6dd40809fe2ca89bd2e759b24102950615aa84555977e -size 4923 +oid sha256:ebee4fdf176801a756018e9c4ea80a7e506e9a58dc789f1fb0b9df8306abacf0 +size 4918 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_4_en.png index ede430bbb0..ba74381c3c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e52b92c4132f6b12871d2967822ded602cbf2d13c98c6208907a560949d8a2fe +oid sha256:8e1098a584fec0ec74838c2cebf0db3f1c6d75eea8575e2d0e946657cd065395 size 5184 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_6_en.png index 28bf140dea..7c2d0128ff 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26a433ed71e35d9585d7a6632bcdaefe19d8a942f986b0b99cff0bab9342f519 -size 5702 +oid sha256:8d530adf3152141fafb258bad3cc45349fc2726bd1c5a51440d1608a654dd031 +size 5707 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_7_en.png index 53c5f672d2..11bd395271 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9361e1aaae18cb3394313d7ae0c6391f74b04385b267632ced24bb7d1fbf4113 -size 5459 +oid sha256:d397a13c3fba112e8bd2f3045c4e9fc9de10869204451b33cc7a88b2938b9797 +size 5451 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en.png index 307c3dbc20..7aa2ec7227 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineItemVoiceView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c6762c06d78dc3055bbb75b4367fc1a581b87f45c245d4e5403509c3453c8cf -size 5775 +oid sha256:614d88406ef318b65475837e79b10759f3c9ee038dcfea963677d371874a7a1b +size 5774 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en.png index 766ad71da0..18e0e58bd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03c1d2eb83fe35e3183d2570ca2d772b62527938269ca4949700e89e2b565da2 -size 608644 +oid sha256:4e60262061ca652520fc3ffce83916e34eb75e4a7eea4ef474ec940a55edee23 +size 608642 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en.png index dc3fd3fc29..6b4abaaa88 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.event_TimelineVideoWithCaptionRow_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3eb688eeae227a611f73eedb29c1cadeb5a06a753cf334fb57e2f9623f624a8e -size 607050 +oid sha256:112c9a01861d07fd5386a78158d744e26d068672e2d2097ed5f5194842454341 +size 607053 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en.png index 0c39b447cf..9076752deb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f6041b2a91114581185017d761cf5b441263dc343db201ab19cf32a0a5679c6 -size 24654 +oid sha256:bd2b5a0473511d575b25de19e33c2a71c4e6e7210efab896dedff7b0a4552e29 +size 24655 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en.png index d3b2dbc501..c19df9e807 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.group_GroupHeaderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3a446323fa2329104709248fed572396cd9d485ddd24fe75c968415a9e161b5 -size 23813 +oid sha256:14c6b9e8f7dacf216483993a09c378fd4c444f76cf97ebc5b405977117aa82f1 +size 23799 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en.png index 35c3834c65..9931828a47 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e490617e1be4d4a442308a1cf0cdb50ed28b7b3bd89db08a4f30783e18d9044b -size 4738 +oid sha256:654b3e02cdb633f496bf469b1d2aa7d9d378ab1f7d268baa56fbb51f582e8d49 +size 4726 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en.png index f1ac54a848..c7b23e6596 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adb2a08a5cef64a1d3d57adcece013b128947cf2fdc311c08174514c6125cbdc -size 4572 +oid sha256:49d4c593002d2ed5f6ace886d9220f3d236356cf1cefd8f7c0da68177032d0bc +size 4561 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en.png index 35c3834c65..9931828a47 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e490617e1be4d4a442308a1cf0cdb50ed28b7b3bd89db08a4f30783e18d9044b -size 4738 +oid sha256:654b3e02cdb633f496bf469b1d2aa7d9d378ab1f7d268baa56fbb51f582e8d49 +size 4726 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en.png index 417ef6ba0e..3c5b6da0fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6519f106b3a543ec2bde9164d35d2763f0fa78fae72a870e8faec20c37bdedc4 -size 4605 +oid sha256:d072a1765ed49460b0cd8494c7ac6b047990fbc68dc7183a5cd5199ee6ec9a87 +size 4604 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en.png index 2812b92341..ac2beb8344 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9097f9ffd2c54ac6c70160dd411566545c499c562cc2867a9a6cacd5922fb412 -size 4447 +oid sha256:4bc4fe868c3386c0ff38ee807ccfd098943bdb08595372378cffc0df44956b2c +size 4448 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en.png index 417ef6ba0e..3c5b6da0fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components.receipt_TimelineItemReadReceiptView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6519f106b3a543ec2bde9164d35d2763f0fa78fae72a870e8faec20c37bdedc4 -size 4605 +oid sha256:d072a1765ed49460b0cd8494c7ac6b047990fbc68dc7183a5cd5199ee6ec9a87 +size 4604 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_0_en.png index 1d1e608c0d..a2589cdbb3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28c97af140962b913fa77f02491cd6bf577fd010a600afe700880867548b7d87 -size 4118 +oid sha256:b963fea01a8e9a1e4d5dee78827dea2bb25ee286c015a05e0e04adb9c10cdfa5 +size 4115 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_1_en.png index 5b518a263c..3d9be7d51e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d402a9c7a784723d362ef0343e14997bc02ee6ed860b55cf5a0f9336975c1fb -size 4065 +oid sha256:17396bf0185da40a808f25dda85b8fd8c49d3fd2c14f1d25d620348994494570 +size 4062 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_2_en.png index 974da4f4f5..31401b1481 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c426d69c20033d67b5db344ef8a01782f232e8b321dd4cea24bb05e159ba450 -size 5797 +oid sha256:c742d69992fc4fb291d40d2be787326fdcc1f45870dcad2086a8ee479d7a0d60 +size 5793 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_3_en.png index 4eda301073..22d9c81934 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65fcdc6619c1d3b0e0e74961f6199d8d7e0eafb10673b947e7289d998e6c5bc5 -size 5511 +oid sha256:ce6b4231277e0d18a3d982802c64b56fbf2519c73a9689a05a8c6ae6a61ce1f9 +size 5510 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_0_en.png index df2395e9cf..97ea119325 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ceb5067d47441b34c37e4daaa7a3fec47e0fc7e53344b124061634072f23d886 -size 4116 +oid sha256:9ec34113d6350f3970dadba1b845de2b0907ae6bf03db487d7922a1a254f986e +size 4110 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_1_en.png index 7ada653915..d3baae837e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:259a99d8272af58f2becf075e2d0e9f7ab06a0517d93d08bb45e35f36babceaa -size 4053 +oid sha256:500e29c0f87bed4e23edcbeaacf651219d4ee80113d89e844f55b81a5cd98e0e +size 4046 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_2_en.png index ca68f8dc18..049d7a24ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_CallMenuItem_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69790f5fc88f6867a66904c784da828a4d17b7c614403db6b388e7edef22ccf3 -size 5519 +oid sha256:0332421cf70c150fb269a90ca1c1380522df9961130f14f7a077e32c38a0b8af +size 5521 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Day_0_en.png index d57cad5b4e..b2de7d213c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d082c4126d5738d967d4f5581881465a93edb5ce998171818dfe758e4f0d3635 -size 45320 +oid sha256:c46805397e92a263c4c19aa67c6a7b6ada90323604f1171c9dae21b29aa0d425 +size 45307 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Night_0_en.png index 998d0314dc..f3d7df2758 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessageShieldView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:690d96482ea6f20bea59689c9466f47b5a83ad9057a2739b4c242b06e650fbf5 -size 43900 +oid sha256:ad9ebc7d4700f7f8b50c478bbf996e3d3b7d9b7f267c27fff9108274fb6d3f28 +size 43948 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en.png index 57426ed101..763670185d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12625896f18d87016ebde0bd69438c44baee56dc41fb875957d122fa84938024 -size 5161 +oid sha256:caa884501fb8a88ba6560c7487b4c85d02d7f907b7983c0049f667f4062a0ced +size 5163 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en.png index 171e8275fd..5d802ae729 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_MessagesReactionButtonAdd_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b87fee6b173962f2a3dcff13f5faca7948a6842734cb78b3be49465211460a2d -size 5298 +oid sha256:55b9ed4fc283809e9a94efc7731133df0981d23595beb7bd47caf9f830d9e294 +size 5287 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en.png index dab3e0f247..fb98ed9de4 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:825df1b768860fe51643b479ae80b722a246e2c1a37b676ad35a4b0eb3879563 -size 10434 +oid sha256:036d08a8e11029537d4be614ca0c1814bd780b8784f40b186568f33080b86318 +size 10383 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en.png index e062140dce..c570272f2f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_ReplySwipeIndicator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6a2b4ca0e09de68902d05fb057cd9aae69cbdf4d4d899d1cfa8c4376f01311b -size 9701 +oid sha256:9ebaa1c9f091a5f2ce53c38b6160e1d2213b535941ba54cc53a5ada4c65c4e81 +size 9743 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en.png index 1af01d026c..d1045de45b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dd9fc35c14dda8c5a05a94dac78ef57b12724b2fa3b225eea19d18309374c36 -size 5031 +oid sha256:dbaf5334b7c379a176a7ef83d8a981dd9e19450ed42e0564fce5182774cf6b7b +size 5030 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en.png index 4922d4037f..5981d9c5d3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9de0ecd2f210a895772edd1c6b76e8f93597ba0c0cd974648fe808211b6b39c1 -size 6251 +oid sha256:2de058c2e7a6a4509add58c45dccf73fc8cbc9104a18968a38284c90ff36722a +size 6261 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en.png index 549f69b5d6..f950c76284 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6879b2e22109097b13a2fec79c861a6c0923769ee0a3556717893115f8e44706 -size 5152 +oid sha256:3b003672f33830450c8dde5eb1139c45f6dfcae559eef5c5a6d7e15e2e87d036 +size 5153 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en.png index b410516f0f..86146c7f63 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f57d8786d0c29d433d9782a501a3f8791dd8edaa06d6f7a93bf887aed62373c -size 5091 +oid sha256:f39328e95d31f7dfed861351447cbd5e8889fd808d4aa266c4610688ae6809d7 +size 5101 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en.png index 681f9cca80..726ff02d2e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b35af96336c40dd23545b1485beb8495040834f8a125ad64324b0f7ad7cf65a -size 4927 +oid sha256:b380a364d4b107066b3d8df1451ed1b5cdb98fe21f5f09d18bfc7011d1ec8b05 +size 4941 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en.png index 308a94e5f6..9d7bcadc5d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:311dbf956d2503473960fcb74050594155fcc1f9b84af7aab42c87b51a88e0d1 -size 6150 +oid sha256:c27118cb6cc0e21220afcd6c53ad6fadc506c7e78f9df86d0b47a7fa5dd07045 +size 6161 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en.png index 5e363f4a9e..61ee15396c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:126b3cd3424cef7d4fe72626930d535700c34403542f75f49c0c94dd5998e521 -size 5069 +oid sha256:671526beaabddd50f4a7cbf17172ab25f787537794764037f6e5ef0cf0c1746d +size 5065 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en.png index dd0a71477f..01f2ea53a5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineEventTimestampView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a57aa648095a9ffe23df184be7fbf627105049660c73b36765c1cc88d055d573 -size 5038 +oid sha256:066da313f50d67e697adabdbedc975e5935e517e5c145cefda65ff68426a5ee9 +size 5041 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en.png index 08c6376813..3b73f5d5c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8579548611cd0fc2c30f518c5fc5c84686d78797bcdffff51f1341c7d0368b44 -size 38239 +oid sha256:8ad78c0b4824f806e7985410ae57ef0381e8cc90396be3b6db89921e5a6995dd +size 38244 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en.png index fb712aea1c..ae89b6a2f3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aec78d5011f5aaa1ccb3ffef430869a86d328e2dead1653ad70c9225d41cf9f8 -size 38043 +oid sha256:c85ba7b40f5cc624f9406e4808d4479ed1a6f7fa8bd5377efbee49b7c451e491 +size 38037 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en.png index 9eab999397..a970f199b4 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:400a051934074cb4744f717c8d1cfff85b2cf46190825fd5a9902e31080068ea -size 294695 +oid sha256:17922020f88e0a53150f6207b3ba8245cc244eeb46fb62c29d534949f9184458 +size 294699 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en.png index 1149dd576d..6ea638fc8e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowForDirectRoom_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f6d44bfe0eb3349a6c21b7cc5c3435bf3dcf0a0ed6e8b2b011111f458124b6c -size 293403 +oid sha256:4ba3a24a557f637607b9ddad97837964668289d8da7ecae3f7b0e2108f1ce277 +size 293377 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en.png index 54d147a2ec..7dcddc44bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowLongSenderName_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9af144716e5296735065c7c7541d7a526db3d6b0e2af05731695a317d7871dd6 -size 16215 +oid sha256:cc9d7541e981aaca0bc0cfd416391bd974cd4efd95536c73ed87d8d989fdbb6d +size 16220 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Day_0_en.png index a8dd191009..75f43f5634 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90ebfbb6b1dd2b97bf6622dd072fc64edae450b616318021f5e17234c4f83956 -size 377916 +oid sha256:c69d83be858492a74c63c1503a964ccfd2467648293d9f71d54a87c045a079ac +size 377918 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Night_0_en.png index 991809f68d..86c4b2d2f0 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowShield_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81bb625d2d230493531fd781254c5af49a4a73306def0d7392ccef5e9f91668d -size 375656 +oid sha256:3151d2189c772b19f1bd917bcfbf156853c6af4965af0b08a47a4d3775ad614f +size 375662 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en.png index 93e7d71774..593d35940e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6700000e63a4b56d591179a28dae85f32d3062f6e99305e2e03c73d91d74a33b -size 31208 +oid sha256:be859b78a35b5b97ad69c04f87a190ee7efc7833f55f674ba6bc945c81bec3f7 +size 31201 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en.png index 3f213a35eb..4ef05b15fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58328bb4b0f8f14ca7dd21c3f68f9fc3dd04228239e3a5a427df659285479613 -size 30212 +oid sha256:4ef570b6f6b312163ec145d93330de3f092e60e2498c2a1df463dd5a7c09aac7 +size 30228 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en.png index 146e1b032c..71a5e4df76 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:082947ae7c370d96cb722c34d6c81c71afb3f15b0e166d53c60ddec0528faea0 -size 33842 +oid sha256:3d0fd97ccac99ded4769450e76fc82f52938621d16f3b82dfbdb3e1ac145838d +size 33867 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en.png index 32728e0994..fb98d320b9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:208835ca0ec478762fb103b1c41273c3a02f80be516ffb116a76bcaf4479e562 -size 30680 +oid sha256:c92021d8818f41f33aa3815005df32538f661543116a8f1c0e6bda430a99fb48 +size 30677 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en.png index 0090a15484..900855440b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23745b22ca04866aca6eef805f89765b9e7a8da9c79e313085f1d39b45e2088b -size 30551 +oid sha256:7b36370e4d6d5c0cbb2288b69ecdcc67084f6e37b78a1623c131015255193db6 +size 30554 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en.png index af497d7a37..7c07bb74fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:584c8d63428129a47dbde137d9c6a163f5ccca8806de8738b18c23676ecbd0d4 -size 11411 +oid sha256:f8537fbadfb33780b28ca974442f32ff242f6fbb299029dd4bf500a0fa89fe04 +size 11408 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en.png index acafe4e291..e19e3003a7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abdf0e03ada3b74dcfd37215a35846a6447dd7d4c1685c5dc0697b98e6d1b8d7 -size 31797 +oid sha256:ed72056f9383bddc3cdc1782fe96fb20ccf1a43021b8f3d139b0ae54e5bc1439 +size 31785 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en.png index 63f9da8e03..de5c198355 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bef19cca7cf2e50af904e9221b1b79debb3754bdb6cf91c334cf7d46b52e725 -size 30542 +oid sha256:f3200c60893618ade644792fba016f68f73ed5c1e5f35eccd3bbfde965d7eeff +size 30545 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en.png index c597e038f5..dcbc8f88bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c04c53d5b803c778481903b444f15c9d9ce7a2a949de608c97e498c1cc456739 -size 33910 +oid sha256:8577bf88cf106d0569cd6695dedbdb9b14f0a31b5b9b2d33bc13842d5c767f97 +size 33892 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en.png index e20405f39b..ed490806a3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9472765d11e4b589e76f363a1a6b2f61aaa839e11298362fe1ec151b3f0b828a -size 31091 +oid sha256:f69442f65f80d62800272354109687e076e243339fed5f544e71997cd0e953a3 +size 31087 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en.png index 9cb9c5e62e..5787e9fd31 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5a247a0df2df64367017dfc7f21ad82a08ff45de249d0935c9a85022c54713d -size 30865 +oid sha256:21e79ccc4f03264835064619178909a11dc7e0a036ee5b7e061bb5345394471a +size 30875 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en.png index cfb15d0f0c..df00c8fd21 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8b49f6d33ed58cb3c113e1ae9266ccde1e44f3dd19521e2875b7b6609bad16e -size 11209 +oid sha256:af4c4ae1efe9797f8db800a1647b2e5445b3f99070bc5b2fd6a9f244e08ffd27 +size 11205 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en.png index 51e638d95a..d6ec1b836f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e9bb04efef5ed47057f66846cc2f73db5e6667b67105cbb1c1493c5857cf262 -size 30127 +oid sha256:dcf5d7e78a4d9985129c10ca0691eea85d3efddb9561a85c154bda1c18addca1 +size 30141 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en.png index 5ffacec9c5..53be5bc74f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e3d72a2a320ee6d241236df99f9707bdef11d20b3eaf5f968a9398b1aa92604 -size 29509 +oid sha256:7ea44dda5a5aa3979d3775cfad27b9d943b42d3e14e470d2767e3ba713e4e744 +size 29500 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en.png index 8d3356568e..d73dc4b77f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:272b8f8271d1a76aaa72d3e6212545262e09ad564d7188f816b1d4a05b8bdac5 -size 82420 +oid sha256:e9a677af8993154893877312466387bff6d873e129219f1e411e2ce61d034b0b +size 82424 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en.png index 76f9c44c6c..68de7c7f64 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70965e0c46e61730330e846c2d5a04482e8b34cdb610e828f9c0f9ee74d30aac -size 82812 +oid sha256:eee3eaed85266b6b68d793ee928d10ed443f0e8463db00b27b443bcb4b39bd23 +size 82808 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en.png index b36344fc58..83ec0ca10a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a91405a5348ce43701b1de8f0c3ef92ce181fffc1f26ce70a8aa8fda93d021cb -size 25779 +oid sha256:1d17b225e5333305335a0a40d38a10d49203923b1513b990214c651c181968d4 +size 25776 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en.png index 52474bd8e2..ff40fd3989 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d86669ea45792cd180bf2098bed85b1064fa9119d30b17b72bd84a3eec96c7f5 -size 25221 +oid sha256:a0da965de89e5de92cc965a141054255e5744fb7aa9dc8be759e161f02db7ec2 +size 25239 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en.png index 4cffc6d6bf..a03c70b4fb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:397676b7d14e21deb2c45fdfd9e357d66b6e0b6d9799733294809ea2d3694ac0 -size 25014 +oid sha256:d98b55a47db62f317d33d8369cf754db2d8867a20b640f035206987e29d0a932 +size 25005 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en.png index 165dbad704..2df586d1e8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithRR_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a14853b95fc9bb52ed1f867c52057b86283adbda8c18d24bf2891a663b88001c -size 24450 +oid sha256:32031f85f2f8084ddc2620817499847e1afc9bb7f0f2bf54b5b58677c984c96c +size 24458 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en.png index c71e73eb42..4dcd174908 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e72d6a15e6d21c5b51614df61362c00c2e03ae0cce98618a31f03a7764b622de -size 364949 +oid sha256:0dfc5205d51fe54d92f1586da5b084789639908ffba9cab9f4a9a527441b4de2 +size 364950 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en.png index 67cf94c2c0..8128a86192 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e49d0338d23e6f44a52a7167e2495f5f5d1b5c2d6d8c4e144f952ac2b3c381f2 -size 370062 +oid sha256:8ed58942c843877fbc757a37489fe538a504410382c87cde2bdf8f3b54d3b417 +size 370053 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en.png index 79e319d8f8..a40fcca299 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f979d79b9e4fd01201af33e767af0b28ad9d6abca5b240d06d3e068ec2cd9940 -size 363007 +oid sha256:7e866c721980fe3f6c3ffb740e6f2262f68c80a76f7f4ab648d54d0e81dc603a +size 363008 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en.png index 0b7db4f3d3..22af9825a8 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3032f865eb8c46280359f047e4d3c7ab16d92cddc892b8d5493dfcd3aac42329 -size 368148 +oid sha256:74eb06d02b477a325f50f1618ae549e43d2b72444072b28c0287bd551410e080 +size 368151 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_11_en.png index 197e68d532..d3a1958dfe 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50b674cbd6cb517194e3e43b33b5415452c4f39370adf3fe318cf46ab841f7f1 -size 367912 +oid sha256:824bb76f7f23573a9bf429a7c46336a5066c9c80c39203be09de17036cf901a1 +size 367900 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en.png index 3286d23c1c..54be2d70d9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0491d664d748ded2a77f037040e35ab7c304958abff962981b2c5fa88ff54032 -size 357524 +oid sha256:eca32f762418e4b7e3828f5dd0cb839d7020d6cfab308b0727885195b00c3c01 +size 357521 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en.png index e2d37bbd98..46926bcb25 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ac74139d7cef830ebc68051502d09886e85efac2a36667f90a66c6eecd58188 -size 364486 +oid sha256:80b986470b115a047156c2d63c026ed5f887cfa4af0488cbb477722a43b57980 +size 364488 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en.png index 3bfad7a881..a2c24e47cd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:920302e0281bbf779730f8ec779307cd8f034f181440fa694530c4a70990b599 -size 357719 +oid sha256:11ae7ffda287e87638c639f6357615e25978d663a5c6e66e699323f352a003ec +size 357733 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_11_en.png index 77d8418afa..a333a03c2f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3decddd5064c5c31cbf5eef3313d7ae2d12b660dd7f31dd1348d0e2ea070f5e7 -size 366058 +oid sha256:8b26ac3162c11d5ec150548b8e57c60c8be81da5e3360b06fce254a41d6bd46f +size 366046 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en.png index 2fb70bebb2..74f6213244 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25b1a108b671c115a137fed5634ea523f2fc6a9ab02ed1124b047b27cda36e18 -size 355749 +oid sha256:9896599ce680aedd483223ce1a83736545b792e61bdf2b8d231eaf76cb3f23d5 +size 355727 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en.png index fce164367b..1b17e5f9a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07bb43aec17278100888d9ac7e4eff976eaa5bfd872324b5e62bd34f2d1164a6 -size 362576 +oid sha256:ef2b2583e788c1d802d81ead131f67f17d83b5a7e8f8d44f7c5bc9a042b76722 +size 362581 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en.png index bff4c1f4d0..3485c722e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe07f621efff1fcf6f50d446ed55129af35cec6af5de32ac62c4d7dc9d0b643d -size 356021 +oid sha256:091ea9b69b86dbd001ef78d018fc4f273db1323b999aa3c591c38f8d214812ad +size 356033 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en.png index 5695ab7dc3..6b04b74ff7 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b51cd7375e0d9be97786632eb1dfc16b5023784ed0de616f029d782ca56aa07b -size 68221 +oid sha256:2f37fa6b14e11126a7cee60f333b2cfabd4b540b548d13467115533f58b7b333 +size 68208 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en.png index a9b8b7cfc5..690f541b9a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cb184afd2b1afff7b2f5f24f555e8278e20bbc98fe8b67a25a005771c7105b0 -size 66908 +oid sha256:c3b4dc78e6ac7b6296d7b24c0a0f28faf90b4dfb983cf0c970f41157b7ca469b +size 66907 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en.png index 0a020e7a54..2e950ada68 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eaaf7a49b9468ce255bac466604eaa1af64719069df4c8cab8ad0ae311f7731e -size 413015 +oid sha256:e913bb6286715abfc85d22febf5b9778b9d28748c027ae603030737a44661979 +size 413010 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en.png index 0c0f7ed3fe..a9cc8f014b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventRow_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0b290536f8e72365eff4afe412dff40afddb9285083f420f5a7e11bd0367633 -size 410181 +oid sha256:7479677833a912d187bd21c46d94df2320a553938b8db24bf22f4b9baeafd091 +size 410167 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en.png index 6953adfe33..b48f401fbd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:438370c9300d7e815c2f7be3e660eeab7be87dc901b2b4344cc71072b52acba0 -size 55166 +oid sha256:388db7c306774d706f07e1d51e95f1c35ab9bede01c94437854295579c98e908 +size 55232 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en.png index d1d74601b9..e6897ddb89 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea51d4279b379da23ee22768b6eb294224756cf595bd4453a46a8b0d47a5c087 -size 7981 +oid sha256:03f93ad92263521f9841675d4da798ffedfececc006dc6b13c457bcf2b16f17d +size 7983 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en.png index 3c0b0a0126..a648aea536 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7ea29c3873535d506c4146537b0207157769361fcb22f398af05a5bd3297b0f -size 7865 +oid sha256:3d76c555f808459136e8da85818eb9d12b5475b4ec0dec5f5d4338ba20414d7b +size 7857 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en.png index 668957c751..c10d175bbb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:877442f63f493e78a89cffaeb1906521f9ecc7aaf60014b583846e8077d558dd -size 17426 +oid sha256:157a289e788a480d0882edcfff4b11f0c223db8dc306e71ba29386f5596ba5fd +size 17425 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en.png index 8195de116e..1c52cdfa12 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a86c9b54cb095414dc0176c06b5ab0a4f4f43bcff4cfa5407334c97ebaae519f -size 15939 +oid sha256:eaf5c6c191f73b07fac8ba1fafd44184db6f1c39a00050679ddda0ed5d527c54 +size 15942 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en.png index 1c40c0fd4c..a2410404c4 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8ff2b03ca60d876ddac1e95d64503e9764bdd7a2be08a783ed66dcd29e41687 -size 26371 +oid sha256:2a2a0bc419b45f3d9ec637a6234469b3c4a93d6fc567beb1574b8da53b30f70a +size 26359 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en.png index 03868ce12c..6d7871f233 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53de15baecc53594e618961bcba590e5f2311211456f41f48394ce5c18bb400e -size 27432 +oid sha256:e00999d45264da7cd576f635d24eadc986387c14f7064c4f30736abc09f2bff1 +size 27434 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en.png index 689de69529..a84115808a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9211a9acbd53701bc7c4e3588a0188b1e57a1daa8bc299df5fa7a5a8fbd71fa +oid sha256:9dbdefb01f48ce2cbe0e681889269593eaa5c408db5a7a99601bd0a0d5e61cdc size 10648 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en.png index 1f0ff922a7..2fa6c064ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewFew_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b7c2b3a4e5ea77cc82ff1dce6d5bcaebfe7d7bd7bcf0a59b9b3471bf0663c10 -size 11165 +oid sha256:ead477235ddacdd12040addd28b386d530ffc484c917cd3c484129a56d547bda +size 11164 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en.png index ee5a4ccd41..f362d9d96c 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8888f660050d1c1de48d56e81a376471c8526a3928aaa1b71a07260d673a0b47 -size 25282 +oid sha256:a33a195eb20f10bc915c84230682bf1ef7ef74060090a20dbcd48db844e81f6c +size 25288 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en.png index a8150b4658..79c3173bf5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:827d6a784aef5dfef7a88ee7cfbe0755fba9af4e1d8fcf7e9dbcaac61d184dcf -size 26258 +oid sha256:ce7c8b42daf4ec0a9925c084cfff72580407983f31c43ce3feb12d6ec6de5bcc +size 26254 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en.png index f11faac4f7..e91b0d04b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37a8d8a6b3bfc3fcb527acb569c7348082a1b75e6f86945f1e0d393fd2128e83 -size 25263 +oid sha256:ca3542307e311f2445cbae555b7b84e4eb6ed1c77280cf3af1bed9f6d55da569 +size 25262 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en.png index 4062c204e7..af00f0d361 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5f89259f5cdf75d495ba1539c605b4a2bba6ef2bf6484ac98d5ad1cc993c805 -size 26052 +oid sha256:74a25917175035c4c5538954e330214b0e2b11a3b2669269fd5098e012a7ac24 +size 26056 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en.png index 0bc2ce3c5a..5ed1b95340 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc8f573cfca1ae072e311c04e1ff6dee98660869209b8215b6027a54fb39dae7 -size 6447 +oid sha256:209a8b8dc03e224db3315910ea8638bb6c54a09b6c6e1d6c9194fc3d9f139cb0 +size 6443 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en.png index fb753bb2f8..02e145e8a4 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_TimelineItemReactionsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aaa7e99c96d751f829f2b7e84f1d685b9c011d92017b99398dbcc3619eb75bb -size 6787 +oid sha256:ea7bae9978f947b345eb1b0eeb2d79e22fb42b932ca1924589013e80238e60df +size 6776 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en.png index 5936485e73..cda7ce1a8b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46be84795dbfdf1323bacd5182d2aefae96567172cc95d884fa853e1c8e04fcb -size 32875 +oid sha256:02d4e59d56510ceb9fc3f0c003133adeddf6c170f9dc6a345068f31d3ec0e0bc +size 32890 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en.png index 5c12aa938b..0caffc92f2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.debug_EventDebugInfoView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c697ece14c19e09e7a227b8274586a86510175d5e78782196c1d7a1bc7e10626 -size 31421 +oid sha256:8aed802656027d4074652c9fbc507ed2ca3f307a9439f22ac853b5c1b318e66b +size 31413 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en.png index 6ab1382b21..aff3ac9598 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57204b870fcaf8c536a7dbc16e61d54e402955320899065dd7b6c79a792bc22b -size 37969 +oid sha256:1d2336bff0be56dfb7f57e47796a6670bf30a5ab91784ab8b808b854822d450a +size 37974 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en.png index 99a6bbf194..5f4d96ecff 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e376cce36b4beed32d9a893a436fe59a1a9d2058e3fa28f6eb1298aa0d779ad9 -size 35876 +oid sha256:474df95186d2ef14749f89455133f657228e87d3ee4c749b24a9c9c264eff03e +size 35887 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_0_en.png index 7317dc9104..0d7637f311 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0ef56f95273ed17ff477adfe75f6f1f3c215ee729b0c77d02064beaa5e5f844 -size 51094 +oid sha256:9846a2de1a011007042ecb59ccefa772f5a9b5fcd83c7e26969f6cf06050f83a +size 51122 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_10_en.png index c62df509b5..045158309e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae4de0c30432b201fc4d46504ad88fff970851c4e5a95cab3dcc09e6dd599472 -size 333040 +oid sha256:a7cc766f85fc50781e2405f408b92c11d2c256137e26783487c9891091bcbd6f +size 333054 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_11_en.png index 2c874a691e..61e4e2e89f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2be33818a19d5e430dfed21b07072b831f6ed2d7b1099d6bbedd33dfe4ade71 -size 89475 +oid sha256:f59f0edf9f8bc8a0274695cdb69760a09c737d9f8e1fdda68808eca0d38ab8f1 +size 89518 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_12_en.png index c4ecf526aa..83a2d9ac62 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6209a5ea20082e681f706be0e4127d363d93c71a68a0e4fed0db1afa5187596 -size 52545 +oid sha256:eda29dd71cbe93b30325107a47be6d4984d1bdec34efaf2cba9749899b262203 +size 52587 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_13_en.png index 0733081702..f75517d9bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3736958f500d301e25806abc29b096120024cff7e1cb74c0c5cd0d7e22e4adcb -size 64556 +oid sha256:e8a60d12346d31d5b8563a05247800742aa1ef9f3e7edd0b06e4377f4c9cc7b0 +size 64576 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_14_en.png index 8f7a40a344..12bd863d23 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b702720155c493f25721182f068e13e90f6bdbf7b3447b43a4903181cbac0dfd -size 49023 +oid sha256:29cc96ed2e31ec8036b895780233155628bb2b2dd05e8d66aec0bcd57111c539 +size 49073 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_15_en.png index b861a15514..4ddcffdaa5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bca6f73b30d8663617aa76729c112c2c78e25cf67f7eecdea8c8d2744def8f4c -size 65822 +oid sha256:b4904ef464b4f163312a32edd94b0f9f58ec327d62b90de0f494149ccda9aa71 +size 65810 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_16_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_16_en.png index 006b68abbf..c33aafcb3d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d462b090b7dcd089227682dccb2f35c9ad71af3a401f424104e69cd6eb539842 -size 56008 +oid sha256:623cbc6f3792c1f56344e3af1d55ef2f550918b2349fc57bda608ac3fa7697af +size 56068 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_17_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_17_en.png index 517b4c6e39..95a5920f58 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c6ac4f266879f8f2e188ba7931ca231ca62161788f3bd9950eaa9be174a254e -size 65636 +oid sha256:742570ff0a1421533e72e4fb3ee9f61ddcf0a06caef598bd1e030736ed8eee80 +size 65684 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_1_en.png index 240a65ea77..bb5b2450d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36de55af40a1b82ae0860b1398b1350109bcf1b3721fbacc569a26dd78d5c036 -size 72331 +oid sha256:105b7e7dcb5951bf6ac7636a3dbf3028b11066953fa344d690dedc806f30c28a +size 72342 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_2_en.png index 904a0bb834..00f24364ed 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c251d40b6c2df1e4e3477f5b7e7929b7ea6fd797f30a494530f7bf5a11b2ace -size 493802 +oid sha256:06a703b4fc807b3548b9a89ecf4c503f854cc272629140e4a3ff28e5ba358cdc +size 493816 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_3_en.png index fe9093482f..86758ffaee 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6c5286cc1bfde8b6a4bee105fa03ae2073da0d968868d93883e4729188a868f -size 489016 +oid sha256:8ca41c6c1ce931edac589c4693110a797b92d5a98cf64becf1a08d3d8754a158 +size 489029 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_4_en.png index 8094011dd2..8973cba951 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75e327c42acf84261af1994fecf4392c2c8b9d0ff60ba5f1f8cdfe63efde8907 -size 71464 +oid sha256:35ab2522ef90c9d048b0187e53925c3dcec8044bde0c4383f321a04434daf4b6 +size 71466 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_5_en.png index d6249f1c0f..cc2a832277 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02c9dd8a7c1875d22ab962fcaa94500358e96f8d7999538755b0b589207268a3 -size 86062 +oid sha256:ba70f79803fab4ca87cc38aa2ee12377e6f0fc4c17915989af499aed3a3107a6 +size 86077 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_6_en.png index 5a1fcd14ed..cf132ed54a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:771a41cc113525545efd210882a772f0025db53accfbcf47c528ca0f515ded91 -size 74568 +oid sha256:a250f6ef758435740a70f3a1e3da9189be0619bf507d11183a1b43c3e9327d4b +size 74582 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_7_en.png index 1cc136f4aa..1192e59c94 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:323eab083e3b99d672baa9cae4cfc026942c58c5a10221c2a28a16634c555957 -size 104305 +oid sha256:61428931fac94b149b567cdf0cc63178d898a6542e838e35aa56c14168230ee5 +size 104312 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_8_en.png index 405421460a..0264fd4296 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99221c9ddc1c9a69f21491e4b4a2bfc788c00bfcea9cd4b9cf5051fb611c200c -size 54661 +oid sha256:7a908b65efa9cfa89d121f3e23a0bfad0926d269d9600fe6e58455e2e70a4fac +size 54687 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_9_en.png index 9e454e8a0b..2b1a942b14 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b370743779b2c18ab10e0e47df57281eea2714202fdb0d525b52b49d1103640c -size 375282 +oid sha256:30a73e27dbfc8d0f1793d02deeefcf097a22ea8e0e8bca42a9024fe944a18020 +size 375289 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_0_en.png index 1938b07cd9..ff45b26ce3 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff124b5e689f5955453037cb4a44896936b03375781fb71981972a4c7ab11251 -size 49212 +oid sha256:025e498b1b8067f57f11c037165910fa5a7c1522691fabfb17990f855cf456a8 +size 49214 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_10_en.png index 6b24c3aabb..5e11c904ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1a74f223d6826bb6e058a792b8b0aca4a41dd297425cd40a3b70e62ae514467 -size 147867 +oid sha256:0a6232e5dd97c947c19fc9806b92302dec1797f7be70a3f836246911d842f4d7 +size 147848 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_11_en.png index d4c907f16e..d57eec2ddb 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:42629b96d4cb0b5be5ca59cf7636d0a027dc41e35ac38a2c7ff78cc5bb091b8f -size 84580 +oid sha256:c91f272cfb53a78a6693ba27f899f1c1658b5dede247c7a5b69cfe5202a80cf4 +size 84553 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_12_en.png index c1126e95e1..f00f45fb68 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ded3238e294984300c32e7a2b5ffd501424385946cd74827f50fb7a4d89d317 -size 50722 +oid sha256:fd5b544afe4221325e86ec43c8b128abd062ec6880cc8b743cd69108de928d59 +size 50725 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_13_en.png index 8218e720d4..1124f67f6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b92db79552b6e6b19a444c994e7f26f0fa1159e1d96a88ebbca7068b75ea39d -size 61907 +oid sha256:1cd6430fed7e147f084f844fb38f172cdf843012a5a6f472d69603a8936a755c +size 61913 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_14_en.png index d9f5e07c69..706aa95e00 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9133338254dd482c96a1d6530d922a7d4e0a8ac437dd92eacd9934c374aa7aca -size 47251 +oid sha256:39b88e56a540ce883440080d328e46d81a957c74f9c40fc22b07e84582891c5f +size 47229 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_15_en.png index 5289812ce3..af75244d55 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3eb896a78edab7f0d38d4701a46499405373a005569336b69a6ad59f419e2073 -size 63157 +oid sha256:01a8f765a56e4753241a47b104c267ad38afc407ffb2a0729bdd3c3df34f0806 +size 63166 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_16_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_16_en.png index 740ec863f2..4de86fb4da 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dca58a71794536828a9cee8d13c919e11fe3c33530be5360560277b606483b88 -size 53791 +oid sha256:3a00b7b4a5a9ebd9f391e2a119cbd8d60bfcc287d1e42579d1585e6e2981a241 +size 53780 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_17_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_17_en.png index 82e935dc50..a53e8671ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1590d8590f0b1d2960e5cd2a8d544e72a109128b969aa94279e9961c61e0982d -size 64558 +oid sha256:dde9e1fc9a3ec8f49f352cc05bf625bcb244d81882c6a1bb5116cbcfea03eb31 +size 64545 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_1_en.png index f69ede883b..7fd4927b7e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:938750182bce81a79887f6091a81e6fcaff131630811a24407a0acbc3f57e42f -size 69128 +oid sha256:c28bb504c14faabc9d3251ae50a40527745689df332d22defbc154a9833df684 +size 69161 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_2_en.png index 57864d409b..0393d0e13a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f8174942858ce33e00f2a43d31643cf73a8c8d33432b48ab7432ddd22a5840e -size 486269 +oid sha256:bb655618e86e725e2f2cda7c350b94e1f780f94bb8551a6002dfb1527c7f1ee8 +size 486270 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_3_en.png index 49f1b79423..cd2c53d50a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:374999c13eada99283fd41d57985427cd1c7ee7295af99a35c65094758a7c3ec -size 481495 +oid sha256:99d614e17be2d57e33027b58b82d86aff047b9ed626c71dc99b35f93ab8ea013 +size 481491 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_4_en.png index c74b11b376..c7101d1a29 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd3bf28cda93d3a6587a0b0e8f71d5a3bd91081365209cefecf316141e765bb9 -size 68669 +oid sha256:a01ac3984e4b1808bfb05ea403ab296df367ed74417788c1c14e5c97dec2c7ff +size 68675 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_5_en.png index 4cdb114dac..cf8d8d9d9b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ce03462b8c2468f83ef2a08e61f118b35c4abc6cbb610d61472acdded8a8dc5 -size 82775 +oid sha256:cb0628bd397e42f37c2a6e0713e6e08100c3c6cd0aa52481e06532d204613fc7 +size 82768 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_6_en.png index 67c77bdc6b..3d85fd4a7a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4203d7d13ae995ae566c24cdffcf3e5373bc9839788303711076992e65c5a05c -size 71912 +oid sha256:a0fabb6646814d797b06c90e941db64be8586d13a0cf542ca754ee4ea22b69a3 +size 71904 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_7_en.png index 259af254b6..dfa083d28f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebb22fa7ff55969cbb5d1c59cba6599a804a14dd86df1e3fe72b610a9c4f3850 -size 100704 +oid sha256:5433403ede0c48c4776f10d5e407a79b14bb1730894bd9609ce1d5fab38a0cef +size 100697 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_8_en.png index 7d30edfb49..8708028b79 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebed33ac426575ad36ffe7edb087f3fa2d81a8eb4bab7d1eff2c6808c44ea492 -size 52580 +oid sha256:c40bba2d435777c6d990b8cb699c19a2384b64c4c27e65d8baee6ef3dfd8b86f +size 52591 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_9_en.png index 7a662372de..f8879bdc6e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline_TimelineView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb6fb5916261a0114027c0c575f0f3836e2f9a84a0391ac05466491a1d962d5c -size 152736 +oid sha256:81c65890017a860e1d5a35f45adcbc8dd529837eb81eba4ca757ef20016d6c11 +size 152740 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Day_0_en.png index 1d0d580c56..2a6f08c058 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c74cd385b81f7f101159b0ab3adb0c3493a8ce98b4b8cd944a166e9d0a30f8a2 -size 39803 +oid sha256:f6600eeaad127d1412992dd34c5cf296ba727202fdfd38a2b8d53430b5094f42 +size 39793 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Night_0_en.png index dd62e04e2e..b86d43a9e5 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_MessagesViewTopBar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b59fcb83f0d291b658efc88ce311a108655af03ca8382339c2a0d0c3a5bcdf43 -size 38201 +oid sha256:8c5269f87f27b629f5689a743d25765fce10d755110d1cbbc0ba4d56e7759e14 +size 38167 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Day_0_en.png index 47891dd5a9..80c46197cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:757f2a92a384f2084a1a1ea475e2a6743a55ce5ad7758bdf1597435ca29151e1 -size 32879 +oid sha256:010e299c5714b614b17b884796e93114f16537b7429c2845e37992ed4a5fcbef +size 32915 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Night_0_en.png index 4ad9eae262..9865b90d13 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl.topbars_ThreadTopBar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f56bfe0e59c767102a8e079c31e90cbc10c00a31b35614cbb188e1d5008b041 -size 32114 +oid sha256:b03ff12ed758736e0fcd440a95d5d1a864fbdb3a77e9c566d1d2a2089924ef15 +size 32125 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_0_en.png index c0bfea95d1..0b3faac395 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc3e55d5775c0579f1275c1bf6ca97c9aa38806a6f72579cc023b9f2eda91575 -size 58510 +oid sha256:1fc7a370898df938b61cee850234b867d6a74087e1475280f177cc6c9e2e1d1f +size 58529 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png index 11b3313094..6fe7bf12f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9571176fb73b9871b6db3c30679a46c776badb56d4e1919ea882b391d893b8c4 -size 53144 +oid sha256:67981be91a4736680a69b9d2dfe11cab3a69e0d375cf2589e38bed3630b9fc12 +size 53199 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png index 1877049a86..6cdba980f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68c975f99548d73b2d52875ed78b7681c9da841c0e84fd9dc37f8beed1a1b72d -size 57577 +oid sha256:4dd9bacf4f467ac0f2b1050fcf5a4246e520674009471c05d2e32eb5d1d1f7bf +size 57599 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png index 6f84a18e27..eb74b4c697 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbc82a548ff49bd4bab0e3e07234668499338ab7379813a21599056e3b13faf2 -size 39442 +oid sha256:3917d9d2d5c67e840e613cc8dfc39212e11853ac8710e87af554e20dea31d34d +size 39439 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png index 9f59634b1d..e65e33d743 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f681fa626a2c352c2e9503bab72947e912fb17e4cbf61e730a937d023eea659d -size 60820 +oid sha256:432fae13ece80f287afc16411ca162c2ea0b19d66b148adcb13c7710ac442b5d +size 60866 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png index 9c66b44c35..97b59cf5bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d00f9f7b4e09f6fc24126220354ff097805b2623bb34338a1ae6203aff949189 -size 56886 +oid sha256:cc380e2b1c75c5b38ac410a271ddb9c02d41ebf9ff037fc59f20d23d87241590 +size 56864 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png index 657dc6d2ac..7873d95d66 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6a08f9b69ec278f8706c8de459fd6d2747cef7ed51da32eb7239667d0805e58 -size 55311 +oid sha256:0cb2168ef240a788416f0f7d5cf949b282b9c4cf76338c4d547562b15ff3dba1 +size 55322 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png index 3d2d2949ab..648fa50528 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b298a6432190f54fdb824c7edc2f8cda30a746d2a13322793c84a5a3d42f5ea -size 59985 +oid sha256:17ec77b5053bff9057d6b122140f53c5384abac7998bbc8d770db95a04bc0062 +size 59963 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png index e3b8e08ac7..571a7c532a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61add48c03d1f4df4bc9010826c4a6f5adaa312ef5f910bc0b3a77211a377f66 -size 50651 +oid sha256:4d80066ecad50390fbd0529d4e0f25462ac91d9e168817ecfdbf472129b95410 +size 50641 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png index 4ab2179c6b..c784b566db 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:983db5846ee050f682b895ef0ce54362b1214c5bee48ef94139ef825e0ecbab6 -size 61678 +oid sha256:2831b5841aac7cdec50829002aa46fabf530163e0600185f32da0793c3637fb5 +size 61695 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png index 22fda1dd27..7f20ff552d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fd783aa6c219e5bdc3c03579bd823a286e6048581728a6786ee724ef458050c -size 63807 +oid sha256:ac8dd9bc435999370adc7b3d4a0eb96c7eeedcb500818b44e05aafe759b720ba +size 63860 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_0_en.png index f1c7ebe44c..dfeefd3b9b 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:375fd7fcf7206f3803518dca0076e3212a91eb9a31db89e16ba2b243c60f2b17 -size 56287 +oid sha256:dda638a1229118141f342bcd297aee99ef196e997e2b58b4806c6a9d08dba7ec +size 56301 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png index 7d33111f68..e2f96c870f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6ea6d7eb98c546dbee109d160e2adbbbd4d22d4844835667bfbab1de2060115 -size 52351 +oid sha256:7fb56dba32bfc9db1ddf201d118c580b21143f1f74575bda95ff43fa0914b2a3 +size 52344 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png index b3739cf0ae..ac950f3c88 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b2a927fb47b12ddfc0df658ac675f9b338556e4e7706d08bd701a74a70f780d -size 55082 +oid sha256:3e64f40aac075bd075f92cf98ffa864ced12b3a43a874d72cd5f293202859623 +size 55090 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png index d052afe886..9530e558ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e6fd782de40571f627aa20635b26d9355a7716abe05b5f102b85433d7e5bc64 -size 37422 +oid sha256:beb8fc32a4b048ba5c5053ad5d62da55aac8072234af59a2a1af6dd3b03be74c +size 37401 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png index 17c988f175..bc8637095e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f69008b2f070e36f4b61ef6a53a66793894e2d0cfe32873adeb01c59d706a59f -size 58477 +oid sha256:d654cda7c0f4df547ccf00fc3a8121d0c5bd2b337be17b71f7b95e5987833032 +size 58473 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png index 9e9118e2c9..6078d81cbf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0471684872c45671b55e22108b44cb69944a25dc8740d054b7236306c31cb0d6 -size 51150 +oid sha256:794ef2d62ae364d456930dc7879741848c8f65696a5b7676b032da70e3ef7330 +size 51156 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png index c041fd7d11..aef3f70a89 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1534b9c3b6952c290ca20a2853e56be023e5c8129a10b9f3fd63c290c7ba9fb -size 52977 +oid sha256:96bdb7695db3a0476480e4e675dfc5d088d210b519a3f6b9592bbe6ec18f4ec6 +size 52985 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png index 7a6efabb58..d8299fa73a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b50e874595cfcb65cf2a4f7146ed7c99ee06899d6512024b900a64439748a6f -size 54078 +oid sha256:e12bc7c029daee03dc31bc889c37ebbd597ac61bf18bf13867a867983a79bb2b +size 54085 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png index 21888106d2..a564e03041 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aafdc477f090674d0473076071049bba77bc57025c602cb6bc1cdfada03a1937 -size 44740 +oid sha256:7d90b319d5b4fd3ec77fdfe15bed786e5acbc66b86da83f24efce313eb8d178b +size 44750 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png index 0ef6da37c9..255e8a62ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf12305ee99f199905e94e325743b1589f11d36815e16e86558691400e2991e3 -size 59022 +oid sha256:1ad3ae1b79bf30293e306ebac5806d328569f03b1370adb39c6dec143d8789c1 +size 59027 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png index 998c5ab138..542e857d5e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01ea3893df495012f2e417e81d2223696ee11efe2499c0c2a112f015c1f72f7a -size 64610 +oid sha256:83a7cce4a92980220d2afd24d895154d1a463e685c9f81ee91707ae78c12809d +size 64594 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png index 65dbbb0215..7201350ae2 100644 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:282ac2d6ed77717b1544641bf57e742849bc3f5c83e85a0e88529975b138d168 -size 5426 +oid sha256:7d7cbce14d66654ba69cd6a154eefecebacf1556f29c5ccefb1d6f1975270814 +size 5427 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png index 3fecc48b16..4cc90db554 100644 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d1efc9570c735cde4ee4711d0aa239a1d49019823086171a961373147f8acca -size 5374 +oid sha256:14927029a06e7f4f5346573d5020fa7582ff716dd552db969bb84304a879d4f0 +size 5384 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png index 65dbbb0215..7201350ae2 100644 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:282ac2d6ed77717b1544641bf57e742849bc3f5c83e85a0e88529975b138d168 -size 5426 +oid sha256:7d7cbce14d66654ba69cd6a154eefecebacf1556f29c5ccefb1d6f1975270814 +size 5427 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png index 3fecc48b16..4cc90db554 100644 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d1efc9570c735cde4ee4711d0aa239a1d49019823086171a961373147f8acca -size 5374 +oid sha256:14927029a06e7f4f5346573d5020fa7582ff716dd552db969bb84304a879d4f0 +size 5384 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en.png index 86c612c9c3..702bea6a79 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ad58bdea0b0c64570e83c4c9a4bf115a16b9ba11a5e6af7383668705aa5886b -size 22017 +oid sha256:984bb5f1a5ad22e9ef43b818e59a77da423540430ceb087f3fc9ab85ea5c2c5f +size 22027 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en.png index 765ba39e0e..78f356a0e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83848720631bfb2e7f277401632ca05bbbcbf2bc2b5736a7e99deddbcc4ef30f -size 21289 +oid sha256:01d5b4e7c4e69af90b0f8fc009a029cfa2ae9640550b6e79854fafd659b0b11d +size 21277 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en.png index 17854fb90a..722e3dd7e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b22aefb1f2382e38a35321149c56ab5cd3856e09909f10e6adf1594ebd16233 +oid sha256:4a68ddd8142b4bb10dbfa06a93b3b6f38d3f35f0436e2c6fd02a18606ae9d145 size 21752 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en.png index 152ca1078b..5b23a3c05a 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2116aaf24fdbdc1a6105da609e4ff0d4808ebaa83a04253b3900522836966cd8 -size 20921 +oid sha256:e073da56d076e649860ad2e2325979d922a5722289b5b9bd68254b6b1941d1c6 +size 20932 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en.png index f5a618d53d..1ee2b5a8b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bbca8a38f636100c734216a9330a196e88c798949693737e8c66888ba8753bb -size 21823 +oid sha256:f55f454fa78e828bed9e00355d3ca40a2fe62798e54d0eb66699f6c9ae0bac8f +size 21828 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en.png index c0d877764b..87ba952b00 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54256bb4a217a2f6b90b291559da5776ec80e35ec6d431a51d2c7c64bacfbe83 -size 21036 +oid sha256:f23029884185ca50f3ef9f1518b93edc288b10d729acc648e9dcb9b7bd95dad1 +size 21026 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en.png index 308490c845..f71dfc224c 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45c0b938693536b5193f810feb07e24e45553cf08a2b358becb5d1c787bf4a87 -size 22065 +oid sha256:6e090902557006abf4f90f57ad4c3c70593a5514fdf10edbe95164cc3bdd23ea +size 22062 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en.png index 03aaf57c36..bb52b4dab8 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49bab71d4fe716e832ec138f4e9357d1189dbe746c41db3c00d1921e5d51e1d7 -size 21159 +oid sha256:0ce7f173228f74729a2cd058dcdaee259fd0ebfb8c6fe84c4c9e34c94203b192 +size 21167 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en.png index 79d34d647a..a917c03cdd 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e445fdf2b0d32882c8673c521a736b56cf2d48ad1dc2d42186de2459cd0f90a8 -size 21926 +oid sha256:0c1d8324c7c948799ac646179eb62a58e1ee8abe940055ced5ba6c1fadae0807 +size 21939 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en.png index 0dd20495be..bc0794a16a 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fa61c8787e04149856489a2fd855c09a102e903f21db0c35d3590bb654de74a -size 21061 +oid sha256:f96868450d3b692273a2f012d4bfb22775469e7b9f754f5ffb36a0bd4d53e59c +size 21064 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en.png index 0c5c14f07c..6d16b49f4c 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5921f3f27a24e9f11b5f6fce5fcd1617e473778bbfa640245628e887c58ec3a5 -size 19975 +oid sha256:54d07dfa46881363e2ac9b3778bc31bc65ada2ee7ee8e861c30ef033449b68a1 +size 19986 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en.png index c589c4b42e..4e7f777340 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedNotSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f103b131eeb9ab8a6618a561f54da4e2e254a73011d48e20d43579f1b9362a8 -size 19403 +oid sha256:52f4af263f48dc6b71ff47eb900236dcc2e438491dbd6d18fdba9dc5c704fced +size 19390 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en.png index 2e2e0ee305..94ca449cef 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f95898a290694f5aa80de65d1db38d7ee2909ee4f93bb8278374cc36d6c204c4 +oid sha256:a9bf619cb5ae77754e26bd308cf8183573c5ce8ec3286165810f2ad04b218a55 size 19703 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en.png index 7e3439543e..a40351f68a 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollAnswerViewUndisclosedSelected_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96a9b36b8945346efd1036bd3f50507c45809fbbf49e212332f6080d90125322 -size 19039 +oid sha256:059356f2bc3c9d7969aefcf00af50db66432ceaf59d8897626ec5536fa4bab2a +size 19045 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en.png index e2f9f187cb..00c10a92eb 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4615e15410ee4ee94cbc6abf78da9d3a2788fc38502722075a01c5bac915c10f -size 49408 +oid sha256:63aa4b0bcfaebb22647873b54f23843d3549e4b273a85ce86c976e868edf72d4 +size 49394 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en.png index a6ef630f76..e4d145a9ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6178e68affe343d36aa336d9dd0c4b05991a9a49878925b74a64d2ac55c2664b -size 48042 +oid sha256:aa4bf33e628c1d953054c9c4d42e23739dbfe9efabef712e27ad7ffcb44d0e9c +size 48040 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en.png index 7a081eeb28..59814dcc19 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fca7b0b016cfbfac03cfa72492879c7e3987b8c16c3acbdd0c43d71f058c9d7 -size 47810 +oid sha256:c81f35a9fd4b9c5432833bbcd9b18bf021f6b5a3847b2057143a570f9e36faf9 +size 47795 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en.png index e57fc46f36..b118decb49 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2f4c8372224ca64569a384ec9f5133698470e594587097242b7c3446bb2deee -size 45931 +oid sha256:2350d3d410a7629b74aa9fc10ac179d258491853c8417f2318bab8973f559d71 +size 45957 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Day_0_en.png index 989fb9e247..fdb049d4cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d771112966c611b3417bfd14c83e3535c83a13182ca7f756e512a91c488bc33 -size 49308 +oid sha256:a0366b37b3371ff7d46dae9a569159618476d046b85ceaba523946539355ba46 +size 49304 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Night_0_en.png index 409f56d162..9ffae621b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewCreator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f09d6ab2eafaf87aff4d4af974632c803700ebbca5dc231adaa572227e8c4bd -size 47964 +oid sha256:9149b8dfd77717ef1716727860b3cac431a4d34aa9377160010dbeda13f566d9 +size 47971 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en.png index b8a5c94bc1..ddc0c5c9dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:895e0799a4d7c15218367042c5b6f3faf03b817d6f7c74c3236fa06e56f3d282 -size 47360 +oid sha256:55638e0bcad96a1aa5225d0cc01b32bca63c8dab1a7c284f8912fa63fea33973 +size 47363 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en.png index dcd18ffc85..2eece14b39 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55ae6865681d1a7b10e0093b2a901c1c1c994d547b33b82e574687ea513c8e41 -size 45774 +oid sha256:947baaeadbffcee1367d7e28e93135937c3a3243ca4b1afe3ffde35bc4281dda +size 45784 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Day_0_en.png index 7a081eeb28..59814dcc19 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fca7b0b016cfbfac03cfa72492879c7e3987b8c16c3acbdd0c43d71f058c9d7 -size 47810 +oid sha256:c81f35a9fd4b9c5432833bbcd9b18bf021f6b5a3847b2057143a570f9e36faf9 +size 47795 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Night_0_en.png index e57fc46f36..b118decb49 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewEnded_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2f4c8372224ca64569a384ec9f5133698470e594587097242b7c3446bb2deee -size 45931 +oid sha256:2350d3d410a7629b74aa9fc10ac179d258491853c8417f2318bab8973f559d71 +size 45957 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en.png index 7476e6f5be..70242c5437 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd8771d3d2f61bf8d3b5439a5a0e1a5c15374701ca0eba4b9f55a2641fa4ad87 -size 45200 +oid sha256:c8f9b4e4aec76f60b25d6d2c83ac4949fb3987ff15a70812f8c31f07b545c061 +size 45196 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en.png index 956438e886..62c185fc4d 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:297ca4420824fdf1b605e929c3d7fc4a58baf7a2b77008dec6405ed68b2f3ce3 -size 43542 +oid sha256:02f030c1163289e3793a808dd581198cb5e2d36fcc89f33c38e1b69a503c2976 +size 43543 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Day_0_en.png index b0e5754f88..6510fc759e 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:932e1d50fe32c1588355150da07f607d8e6c5a28264f0fdb206ce328ec3553a8 -size 9480 +oid sha256:dd6e857915a1f6ef04be705596cb365e43d0361b6cbd14ae92cf5a6161d8972f +size 9476 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Night_0_en.png index 944773716c..d3d2b60aab 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.api.pollcontent_PollTitleView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80c27066dcde47bd40c3ba922d09b0903dc3e31822415b20d958e2a5a161ac50 -size 9160 +oid sha256:06ffbabb8325cc6b6db82b6eb38a3c5ded830bc4ead3ecae3a164d3effd966a8 +size 9175 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_0_en.png index fec3f681ce..20de91a768 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a66b5d52835eb4f15f461435177c5a53910c5223ab8df096b1ba9cc4e493b6c -size 32176 +oid sha256:5346e39bb245733d70e60d05eed028b5da570361e86b764106d9a0b14b200a38 +size 32175 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_1_en.png index 5c075752e3..9aa736c0ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb4c9349ad6f7d754560ff0648bb26b261060bcee6baeb69a31c383362c29ad4 -size 36514 +oid sha256:658bbe46cde9b1c8cc7b5e67a21585e69d87ca4a09cf3dad352dda914b9d77b1 +size 36513 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png index 9379bdc505..4a2a7a2a97 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8dd830fca2d990cf1f297281ed83303b67af9f10ac7f12534d7c4646c73c157b -size 39286 +oid sha256:550ea0bbefea8fc1af9aed6bf9b8238547aba6d9bd670035b22c42e5e1788812 +size 39281 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_3_en.png index 2ad642b78e..54d431a158 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4830e55d7f18bd54d03c46c493e66d26f0978085223c06a493a628c58a4ca6a4 -size 44181 +oid sha256:b7a164b54d7573f663ec11d2337a334d7e346d219e33fe0b9ce0ffa18970c515 +size 44184 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_4_en.png index a2a8fe02f6..78d42c2f8b 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4de92c24dad984d58907083d39458bb375397100e492cadf81dd6b5030774ae0 -size 26839 +oid sha256:2398f3e0c75c799c45208ebfd54bfa935e00b43430c9748ff8fcfde461bb92d8 +size 26816 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_5_en.png index 2a5a5982b3..4be64aa744 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fe4823c3dd32331182f1ed056a3eb8d53e7d6eae63fc3e2734d5bceeb91416f -size 117492 +oid sha256:98d5e3889a33db8ac6e66c757032ed1567ee20c16c9feda6c052af6ae819fcc6 +size 117523 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_6_en.png index 6bc0ab2404..e5c556bd11 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2167f5856da8a41b89fd8b339fd5b8797d26ba37d436d4e7f18dda12f722633b -size 32865 +oid sha256:ec83f3bca6fcf2527ef953d8e8b4619ecfcc80b49389984be83a2bc1306bae73 +size 32853 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_7_en.png index 2c69a805bf..cd47ec1fb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98a326affbe41a26d515bb3ef083ff585508cf9fa86f15af4c81b8660cf56d53 -size 33934 +oid sha256:69aecf226870e7c1d28f80ee79b787186331fe1b43d53bc531641013f65402b4 +size 33917 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_0_en.png index fe19d7c16b..51c9bed9c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:957c49121ea249cf77c2f43af4a2231ef831fcc612fa6c678f413dc380befe52 -size 31225 +oid sha256:3d57b49dc51472cb215c8126cedd98daabe96bc45ca899911ef7045e3fcbe004 +size 31184 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_1_en.png index fe65eccaec..2d1faed58f 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88437962b85f28e7a8fc2812e47ceb98ae1896ba67f70f9c2325f0a70fd85099 -size 35396 +oid sha256:f73603bd9ed3b3acc7b969e77427df4f0913614334c699a09699edd3a501e7dd +size 35367 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png index 97a6fcb6c5..f1cbbadd81 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed95702bc733a11b296a251249a16c84101d1c44e1436b51fd7e03a64fe6b9ba -size 36695 +oid sha256:b511e657048cf668b48a135119ffce4449c99ea4c90065744d61a34502e75508 +size 36703 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_3_en.png index 44492ccc28..61140e2e07 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79c3b6b3c17860e34a8bf64a870392da2dd71383bd7a35ce3f7bb84eed35959c -size 42931 +oid sha256:05e3b1451c6b1b6d96821553367bf80ec7034ece41e92785412fc1685bcc3801 +size 42904 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_4_en.png index 670fc7988c..a5cf7fc5de 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a64aa5040685f122da49ad3471e8074a812b13d88172cfcfb6bb4abd5d64791 -size 26139 +oid sha256:02199f3679ed37b328122bd1a58fd593d5e74876341334c6374e017ce04c6418 +size 26117 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_5_en.png index 961106d315..79f123a4e9 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61f06595679171e77d98a12df63e102c32b4dda8f4c66a54d21beb8bf9e9a2cf -size 113730 +oid sha256:2406c1a73acb2a1cee255a4c2999087ede97228c5f85175e888732d0497f8cbb +size 113722 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_6_en.png index 86728e3524..e1b55bcfd3 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbe5f7cd26060605b1e7acbc62710aa8b28b3d0061c8668a56f1ed71072bc68d -size 31874 +oid sha256:f57072ce58c0e515e11038f93a324b9be762890e2817f2f52f76d1c17b95fac8 +size 31841 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_7_en.png index 2d8e9d2e12..24db20cf90 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cef968e64723ed7b746038e4e4d0f74d661a614221386936ac3f7e705be4dd5e -size 31264 +oid sha256:32b66f80f777ba829c39716b22511b3f4d89c787380d5d9a5e20cc6fb7c53151 +size 31287 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_0_en.png index 97953de36c..92909e8296 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cd50cd9ce91a7c5ef799c67dd2cd5a43f335fa52545ffa29afc5894b2a010ad -size 57268 +oid sha256:6cdba584d3ce13a1301169994b567153561b546cb46fe139b1ade61cfe0c1b79 +size 57256 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_1_en.png index 5a11e1374a..99e6845364 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc985d439b88712c736419264cc1771fb6de910f394638b774491a957f460481 -size 61250 +oid sha256:dafa4eeea4267bb0407ec1e563a1ae2dffea2e38a2ebf28579f0d2bc8c400b93 +size 61235 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_2_en.png index 11538d9831..80885c796f 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2038f319b6095e90eac43e90c5db46d082d0b729d6d828f76eb1e042ef5666c -size 14657 +oid sha256:39c9145548208f60f269c5be9495e118b624ebd8ce369be405781d044e425edf +size 14665 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_3_en.png index d909afdd26..5ecd5314c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4a35fc66742bb1d111b020cfc4b53e3f95a98965d8d7d84d599087b99690ef0 -size 14127 +oid sha256:7d50611e0281b6505b9297b14f50ffcf082cce117c9b97673651e7c22ea45f4a +size 14137 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_4_en.png index 6ef501117e..d1a9df36db 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65c922fe169e719dc4aaee64cde4ef5f26998956a4d67e977370d3d8b08d6277 -size 17593 +oid sha256:638265a66e41ac07d262c20966c654f435c13209698058e8ad3403b346c727d1 +size 17598 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_0_en.png index 5d54d82cae..897f24ca03 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eefefd52a3df2160c9462ddcc28445e4d84155e5a6934217e549b2f9ea72cba -size 55453 +oid sha256:d35d46ec512997f85640c86f7a00af9e9188386cf1f2a1e469a3663e83b9efd2 +size 55399 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_1_en.png index 3492a8bf17..ac6bbc7d52 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d26c41c5f2dfcd73d8c67e53dc01edd366b44365bc675ae97efb2998eb46c7c -size 59317 +oid sha256:b7242c1ebb8309cda64b36453479c23184fddc44a3f44980732cbfcde7bd8065 +size 59279 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_2_en.png index 3605a6d189..b34c92d2cc 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:713ef1f9e1be4fe9515bb53d8ccee517c8e707c4f881d81b497dade360f363be -size 14274 +oid sha256:8a2eb6cea5f2701b4d5602961e4d3f6c753952d3acf600beac3d3170c1d4e85f +size 14268 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_3_en.png index a4d2050293..180467b138 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d014ddb8025005f5a2d8d2fcfe5906e9711278276bbfa4a9c9fc68b960b3a7f -size 13748 +oid sha256:705c82e3ceed06cf422350aa44d704a01516bd9fd79216daf0bebe3499542bcb +size 13741 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_4_en.png index eea22747dc..5a3d6305a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.history_PollHistoryView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8827f46db0d9278320b94f0849df11df3704b696b5a2cec76dc07a2f48558c76 -size 17069 +oid sha256:9c50a74e8bf59d212d619acea3976fe0babdf291d15bb819cd0495b8e4261e9d +size 17062 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Day_0_en.png index 6e89270747..9bc942ff6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89b75db198bad6b10b92a80003a1cd499579b5352c7c981ba013533f1e2d86e4 -size 19740 +oid sha256:c1265e49887cb6e39f45f0beafb3595b90bbdd19cc3ed1fcb03058c60bfa8ea1 +size 19759 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Night_0_en.png index 0fdc681e87..4bd19f3b11 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.about_AboutView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ddbc5bad689bb28e2f876e69dbe5fef9907b640b955e6c6e5731cfc671f72ea -size 19269 +oid sha256:f6411dc370e2d0cb1c43d825435ccf3693e7eb0316c70c0c26a7740388499936 +size 19256 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png index b7e866f671..7bfb23035b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a8d515ad7c83e780970e78a6d38be45a16368a0d37b4199d52f977dbef8989a -size 47279 +oid sha256:d20f0962fb92b64b0e8a507f2c30428d0349c176d1453ed423a6c447d350459e +size 47267 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png index 323027d6d1..d76c93c920 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07ee23b4f4103e9f1df3d41baf2359db5e4d3fe6ca6d9073f47cb9d0654ce8af -size 47168 +oid sha256:d39dbdbed4a1260170fc1a148860533320413efb367a5d31bc4111086378529c +size 47157 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png index b0efe144ed..9915cd5435 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:495adb80ffb88ae25aef4d4a383253e1ae8e69e35c952fdce46a3e16e78ba6c1 -size 47157 +oid sha256:ed87edce4fc8ea22a2ba6d666bbaf21b14a359e2a3eec828e2edede23d5d1b1e +size 47146 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png index ec2aef80e4..49d0d774af 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1513df7f654441aef5faa92f291ad25469003fa1edcb9710b4c9a61043e1130 -size 47146 +oid sha256:d446944a0408921659ef954036211fe341e8b0529b6e0c7ecc315998e14b8f43 +size 47136 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png index d435435d4a..1f32e3cb20 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b44e7c8e765d23afe4040a70990dd67aa59cfbc812a919ac0a8a6481cd30047e -size 46990 +oid sha256:61706045ca364252d30d9a36d276b83aeee5e4be2552fbd7a97be9378ebc3a37 +size 46979 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png index 4c99a2753e..6a6f712306 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10d14c0673d4a985a407edda821a04049610e329cd2048c65697d49850192985 -size 47281 +oid sha256:23a53698059b50b46bcbb6cedd9434aaffa77db460d7495b9306c809d90d2126 +size 47270 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png index f43a1adcdc..0f40386837 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6021041c2d6be888738a46d071f5529eca37b960f5ba3595bad76e8b3b23348c -size 46936 +oid sha256:779879fc4b976584305eca916e42bd3cf1b6c08bf9e857bf842ec4cd537d7c3a +size 46924 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png index 477ecb6960..a1b6e813b0 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:42e6e3f54b18e3405d4a4604315562d6515c26ad19cc613b7d9af33355961dcf -size 46570 +oid sha256:2ec601dec7eb57e457ddb351fbe8f966b8f51e3dde12f3e7130e8229f4ed3079 +size 46559 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png index 0ebd5e5ce3..8934c11f27 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbb6c5180c9f72153f6c500f96bf65b90fc26f312bedd6dcd7f02a31ba452048 -size 53003 +oid sha256:c647eb273c63b6e28f91a87d9e85f00c83d7f0cb6748965cd0c1391cac7fe918 +size 52991 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png index f74c5d8f71..f7d1a84a24 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b8de7de515cbcefbd6d3b18ed575b8095bdae136c049011095774571a3af5c7 -size 48928 +oid sha256:6ec2983e926cff79f13fa0851c4c7dd6c4fd0433f19c774136cef5cdd0ea8b52 +size 48932 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png index df9d88ddcd..d742e90a11 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43d21b67f5bcb2bc71ae3a36e6f52059799c1273d9aea0e0533d40859f31f246 -size 48809 +oid sha256:c382988ddf0643e1c6e78aee175fed9232302a4bd6d10e078c3fdd74d471904b +size 48813 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png index bbee918059..eb2d20f165 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3955da5d214c9ba7f7c7d1e8b1e65e802f8bbe2e67044810051642c27cbf5bad -size 48825 +oid sha256:b68b299ef3917fb201712817b056a3c328d9f0c4cee5e0216de49d1ee962ebe5 +size 48830 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png index 142d6e2661..dc166a004a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2231410f1e636818c7034bf9b5fa4f5f7e10135618a718ff6cb239ebcb69e64c -size 48810 +oid sha256:26ef88a68a260fa9096651badadd93c4ce69d150add269cbdfd303b3289de629 +size 48814 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png index 3109ff7d41..319eb1d0b0 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e48575d3d3314102dd7f84464a9bc05d0245d8a815cb0e031e191d006ad10c84 -size 48731 +oid sha256:9c56cbb0fbc5aadecac6cdd23fee7ee93e18843c7923b0d73dbc90468c29a217 +size 48735 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png index 9224deb474..19460ca25f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:647e6e41cb9dde8e12e08569104619890ccab88334336c8ebdc700526bb7e95f -size 48929 +oid sha256:76c25bf891f2d649c3822448d288cc77a1f50626d58fe381268df89b346dee6a +size 48932 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png index b8f8375e2a..e992029a8b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f005c085cb32982d17e4a79a7412a65953d2476ed0d331befeb6becc7c25e85 -size 48750 +oid sha256:3314c594d699f376b5f06fd7da21ce318b5fee331c2e104ce04bbee59b5ba4fc +size 48753 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png index b8f0124f0c..5e995f6e3f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4a1b96cd65efc781261b0894c8c5fcb83de3b35f15d9b2302affdd82ef52a29 -size 48434 +oid sha256:97111fd3e96fc9007b271a9ecbb3571034ea79fc7998b12bc854fcc43b6d31b4 +size 48438 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png index 3f480561a4..6a161b9137 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1de9e83c5ac5192c55e9147a2704caf20ce9d8f2966ee89f90f4e89a1b49b4fb -size 55180 +oid sha256:704dba07bf3c49e8ba0f2cf62368c2ead4f27e6708572b4c38b5fffc89b89c26 +size 55181 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en.png index bfb1865f5e..4f17ed2473 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef12abaa1693e7c7ed48939f92ae27fab1e09e86353b226dde15559e118c0cb8 -size 24727 +oid sha256:bcf7f668a5eb1219174557bb87ecd103d4bb9ba5f16f868913e5e6963f3a38ec +size 24735 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en.png index cac6d8fd4e..925d0e4fb1 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef67156b56913f960373ec041e7461b1d5c923af1bf56d2392a368bef2fd37a1 -size 24120 +oid sha256:7db170b71d5aae1de161510a7752b5fe2f2ca0f4c5dc366cce48f5a8c5bf8e1c +size 24108 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png index 6909998647..076b23e094 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95c8e1971970a7a70466f1449148a1eb861100f88e81ef70a2b8beb0cb6a3170 -size 58901 +oid sha256:c9e3e250938e4dec52652a16f5457c005d9a112ee4ca169d6dcdcb0d8682987f +size 58911 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png index af5bbfd797..7ad29e0567 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7662f00b590d3b780105eb3381b8f66bef6443b578898f170bb0d3eb16d6110f -size 58618 +oid sha256:8f74e0fd4c913c895b3edfb6ee8b75f5034230d2462947e7cedcf13aa749ecd1 +size 58628 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en.png index d054d3381c..c90bd912c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b7af9e3dd7387ee78cf08a66186a6eba48e483556e4515585349678924405c0 -size 7673 +oid sha256:818258174e9b50108b303b05d444efaad32712aae144116c386ddac7adeb37f8 +size 7693 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png index e2b1efc9a9..a9dde01586 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0617306c6764d1100de98a80be3d4765e2b05f41d014beb551d440b175d36a87 -size 55280 +oid sha256:4084d378d7972223d258df063df13998b2fafae02bfc6f585472808dbf66955a +size 55264 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png index 3240f1e4e0..1b61c9177b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:782afbb5b70f327f05957fdf7768c564d89cb99fa55e792157a0024d83b1286a -size 61740 +oid sha256:7c57c0986de2480dee08b62b48ccbb8eab5fd3271d0d0c0b9e3d3d7b9cebd678 +size 61750 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png index e6a89d487b..f12c58ca40 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46a6bc3db1b7767017a63a5fe61916af956762275ad8ff3b8eb03750d37c51ce -size 61245 +oid sha256:912a4cc70e1385a661738ad8a44f6ef684079754b704b259ac2122f1d1370ed7 +size 61266 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png index 6909998647..076b23e094 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95c8e1971970a7a70466f1449148a1eb861100f88e81ef70a2b8beb0cb6a3170 -size 58901 +oid sha256:c9e3e250938e4dec52652a16f5457c005d9a112ee4ca169d6dcdcb0d8682987f +size 58911 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png index be44905f81..1aebfc1e25 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93cc377e9cb711c43bd541f5c86dcfd3386a2b5a16c32254f47b5f8f09d68a6a -size 60069 +oid sha256:08596a989d560562dcaf95bf822d437b54273c8b05e194bd876e41db8278960c +size 60062 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png index c62b4c98cc..1db31f192d 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8deb372b394a1a6c72eb3a0ece24ef91a57ee10f4908fbd4deb66ac40a1786ce -size 59305 +oid sha256:2b6b52039677271c7b20709734393061fe8ce2e3df07683cefb98d28f6f74aef +size 59297 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en.png index 980921b7d7..5f803fcf38 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d0ff437021acb868aaa252f857c3c0692d635d169c0216ee9bbd6e089dfc637 -size 7460 +oid sha256:db3103c669f69acb6e1b65e2991b8cecf81e02eb4a9287609f51c9c470118233 +size 7453 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png index 92003a7fe9..4df9e1a5de 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:111aba0b19696f83c4aab03969e3ae18903fa24c710c2f7327a3331c8ad6a373 -size 53051 +oid sha256:59758683e591affc670a7f738aea5e8e41a8743d32154611da0558e9c9290c35 +size 53072 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png index dfabe900db..b960fb2898 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2347642161ef1dcff757e10a428cba0709065e7a004595a3a2d7560ad86c749e -size 61779 +oid sha256:71c6926e36b400cc8842fae1029bf5240339ead2f49b31e06adcbc7cc43e1d96 +size 61757 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png index 95499daa72..322b173f32 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f5861e5e37ff5e812e19ee53b30572ee76468521894a23173f11b1b991970ef -size 61511 +oid sha256:22c9d278e5b933512a72b9af164e5e4b0385821d64d2b597d7e8655184c8ead0 +size 61501 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png index be44905f81..1aebfc1e25 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93cc377e9cb711c43bd541f5c86dcfd3386a2b5a16c32254f47b5f8f09d68a6a -size 60069 +oid sha256:08596a989d560562dcaf95bf822d437b54273c8b05e194bd876e41db8278960c +size 60062 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_0_en.png index 9da2df7e98..176ba2c9ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8c417f2c0b856499c3a1733ef6d7415097a324139621fbbfc8fb9d0fe6d1a82 -size 46108 +oid sha256:d4d03e543f38658338d7fedcc7f290ad973a68e1ec4a828d4651c188769e6769 +size 46130 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_1_en.png index 9da2df7e98..176ba2c9ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8c417f2c0b856499c3a1733ef6d7415097a324139621fbbfc8fb9d0fe6d1a82 -size 46108 +oid sha256:d4d03e543f38658338d7fedcc7f290ad973a68e1ec4a828d4651c188769e6769 +size 46130 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_2_en.png index 68c365da4c..63d37adb4f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9eda74b1b65aca54f03ed4a07230d49ff6495672747975c5efa1da1c60b29f56 -size 44657 +oid sha256:5224724026a75d42d76bec27d9db674c5b0aefbaea3518056351deccb58bcdf3 +size 44679 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_0_en.png index b442c94aa3..2f74fe63fc 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:657b03d76516c88bf748b70287b9270266b82064918463c71dab6df7eae23bd5 -size 44817 +oid sha256:c8b5df08672db5d6c6df1daba79166bb3251edc6e612b29eaad881a2b2dc44d3 +size 44788 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_1_en.png index b442c94aa3..2f74fe63fc 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:657b03d76516c88bf748b70287b9270266b82064918463c71dab6df7eae23bd5 -size 44817 +oid sha256:c8b5df08672db5d6c6df1daba79166bb3251edc6e612b29eaad881a2b2dc44d3 +size 44788 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_2_en.png index 02c1eb313e..4b95d5e70e 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38f81f8a388f31511ec4b6479e0f188e852d8c5556a38661f5f666e1b191d091 -size 43357 +oid sha256:af623a2080e8c067cc4deb182481557cc5165a590689d239cfc0399109b4d496 +size 43329 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_0_en.png index e6662e8213..d131a922fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8fc6f61ce73823af4b4edea7bb031fb15bd600b231df1173d33bfdbd09b5000 -size 43405 +oid sha256:f717db20299c7a563304a00e812810d30edf3a92090bdfd478b044689be90c3e +size 43422 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_1_en.png index 73fd95a516..adeaf23582 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1f3b861b5bdf266a4844248e54d36b7d47eb6b43aae2e877ef981b955b97b54 -size 37476 +oid sha256:219df263627e37e386f32a5516e94f812a9a49e8094a5da7ed8787e845b00ae6 +size 37457 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_0_en.png index 12fc2a9e3e..55a3c08314 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73a6573fa506af844b8327a6a0da53a9a1bf4e222baa1281a992290423b22c5f -size 42187 +oid sha256:a31f6f5ebfff32d770502a1469da23aea728693b4b03821f0747ced891307fcd +size 42188 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_1_en.png index 182e90be47..58f05833c3 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.labs_LabsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4f0d016343bce34896e7983877c9166ebe97e62423e177cacc0f67b467e5122 +oid sha256:c1aec8ef33c5f19e1de94a047b03f74ea98427e27f67c0425e87fc79384daaa5 size 35121 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en.png index 5ce358f5ce..21e745ffbb 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c90f923bc9cbdb3f795efc4e802efe1e86f5418bf299ed58986980784df3f26a -size 42738 +oid sha256:5aab43165121802dda77a416ed76f448dd2d0f63320e2999c1beba81292042b6 +size 42757 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en.png index aad7b52878..45e0ce3ea2 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeff7a440d4837cd15b9daf0516f4c26a34016ab521e41cc55549136532bf029 -size 42600 +oid sha256:64b8d1487a31a0790c85da538d8d72043ee2bbbdf9d2b776927d0f4fa02dad7d +size 42616 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en.png index 20a6b7af97..75fbb2449b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5e94c82e77af5a90406a6685279bccfc2930b5b8ff46b2e73ae962807a051a6 -size 35717 +oid sha256:c8a1db34ef6fc01501510eda11d084583ec0bffe77206999bbf373e48c3f4816 +size 35704 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en.png index 2ddbae1a82..08ae79cd61 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:466d51d09b3170e1adc752c69d44ea826172ee0e022157f2f07ce1ccbba48869 -size 38169 +oid sha256:30bf855229d3574761b06db3ea6f6501c82150e6b08ffd94a5502d091d02fcca +size 38158 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en.png index 7ca9785147..b9dddc5660 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92cb291de76e3b46db7140b99aa13428b37fa24c85fd32da3ed26b97d1e76621 -size 56162 +oid sha256:dd6fb2e51cbb3219898874f42f79443f55a4dd963e7fd75a57e7b06671147809 +size 56179 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en.png index 408862f76d..a70ddf4eeb 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f692da502b966ee6799f727b7432943991899098a142b98b92adceaa812ccfb -size 42252 +oid sha256:4adf25480b5d29c16d66f893becd1555886c4ecd938e05e72af60164b96e3050 +size 42227 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en.png index 73851cfe62..6ea0fb44a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f463bbfc39e96d10c1fe134d17aff582f856ec412874eaa3d806b9b947b09a52 -size 42112 +oid sha256:0228e650ea2fc2318e3ed901b1d135fea916475a251ff3b0d5acf0da62ed02ae +size 42100 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en.png index 2901480252..dc474b013a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c2c0716ec20b57d6a5f5e40276839ab564675f9cd7ce4a5b6ae8606f940a7a7 -size 34445 +oid sha256:67de04f81757f61758ec507e5521ef5b125c6ab7d1212856ef46e7113a80dfbe +size 34462 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en.png index abdafa90bb..4a7895e76b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d9270a4cfc152cdc1e4898802c1e037a60e0b9b4d00072997c350e170f6c9a5 -size 35486 +oid sha256:a28fbef95dc2a1775ac83f95a4e1d60bc06a6ac166827764334e5b9e033c2b09 +size 35498 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en.png index 0f18221b9c..e4e333404d 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb0fa467e51ec5c66d1e0aa29d5f5043cb0f16624baec677f0e52c44de2d83c0 -size 55384 +oid sha256:22fe53fee1c78e3f86d5a3f27e71eb92d99ebf6c1f13ddc437f56820cdd68ba0 +size 55356 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_0_en.png index 6efc2e8a77..28e58d6e09 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9af6b6c981957b7db15f3a08061dc8205d5203cd2e5223b63c441e5192048ec9 -size 54739 +oid sha256:ab9b62e2d898807b6ca72248b3e257d17589b9284fcccfdda44e860eb54584d6 +size 54745 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_10_en.png index 1de4c91611..4b4f94c46a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32a709c7b494f0420bbd3557607f3cf96a695ad1f6ed0bbed1df7594870eab2c -size 45291 +oid sha256:04b51cf6a696ce9e0d4ec596d7a575101f3d6a5a6846a65d7d13a41eb2cada79 +size 45305 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_11_en.png index 4d6d6a5977..1c821e440d 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd974eacc5625082c6ef669d6c3611d6e22728a64c0ed0143c78f28c44e9162f -size 42371 +oid sha256:5859892a39f1f86b49f1808e83a94766b1fb7cbd2df144a255b38dc7630c30f3 +size 42347 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_12_en.png index eae3939727..d4a6cf8141 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15dea48acfac85a0b3d7871cbb6adbec55bd859a20e37a7bc879fba8edd67423 -size 59389 +oid sha256:38dfe9806ed44684abcea02aace2fa273301ca4120d1575ed46feec6bdae78b5 +size 59406 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_13_en.png index fca474391b..130cec7e14 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c88c4c9e103b31dc4f3f07a26dd11a54d851671c47fc71355e85e2521d238c84 -size 15297 +oid sha256:3949cdcb874749bea6187e2529bd1ef2df9eadd4592513ebec4e134d10e962f6 +size 15313 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_1_en.png index d33a9b5ad2..fa828c4227 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92c8883623af497b326d5aab8ba962540b0929c74c5a56fed2a443e527f0a058 -size 43882 +oid sha256:a1c102f844a70e9b7571a412b192474c2d68de2d5f4009c2f76ee4d37f9e0a9e +size 43896 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_2_en.png index 592779005e..b6be00fe50 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee9e411ab9ca61fce88039c0629d7d8bb61753a0d44ff52c69d1476b0349a58a -size 40472 +oid sha256:fcee98a749aec37864bf37045f2764efadb1dd76af07b04ca57d921f4457cd0f +size 40442 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_3_en.png index 0321051c22..a11f38740b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:caf5b5da3be29b02a3a390f4475f22eecba6e6833f7401f735663a1953b92257 -size 39885 +oid sha256:829be44b8cdfe094fc1065f220356d440f8f989c6020bac6ff77e0e9882a5d94 +size 39847 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_4_en.png index 0321051c22..a11f38740b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:caf5b5da3be29b02a3a390f4475f22eecba6e6833f7401f735663a1953b92257 -size 39885 +oid sha256:829be44b8cdfe094fc1065f220356d440f8f989c6020bac6ff77e0e9882a5d94 +size 39847 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_5_en.png index d33a9b5ad2..fa828c4227 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92c8883623af497b326d5aab8ba962540b0929c74c5a56fed2a443e527f0a058 -size 43882 +oid sha256:a1c102f844a70e9b7571a412b192474c2d68de2d5f4009c2f76ee4d37f9e0a9e +size 43896 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_6_en.png index d79f995fa3..0d733f0e03 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a049311411b2e8bb777d2fefc74c06e943c36931e24419c1b9155472643a6f90 -size 39868 +oid sha256:1700ad425b71773f0129fa255a8d596a844c30c47c43397d50d05ba518f8becb +size 39835 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_7_en.png index ab1af1559f..95e0f695bb 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6a577b1e7047237c485fbcf49d238478f638e471e5f637721c7766eacc89799 -size 44275 +oid sha256:424f8cf78bf0e21424d73072976793e20c0939bf62ba117616dc14d78e714b1b +size 44243 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_8_en.png index d33a9b5ad2..fa828c4227 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92c8883623af497b326d5aab8ba962540b0929c74c5a56fed2a443e527f0a058 -size 43882 +oid sha256:a1c102f844a70e9b7571a412b192474c2d68de2d5f4009c2f76ee4d37f9e0a9e +size 43896 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_9_en.png index d33a9b5ad2..fa828c4227 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92c8883623af497b326d5aab8ba962540b0929c74c5a56fed2a443e527f0a058 -size 43882 +oid sha256:a1c102f844a70e9b7571a412b192474c2d68de2d5f4009c2f76ee4d37f9e0a9e +size 43896 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_0_en.png index 68425b3ce1..bcb5ca4703 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9db0d49441c613c91da5d167942242f7860234988dd201efde07e865e8f34698 -size 53149 +oid sha256:355c7c01ab17708570deef9e6dd076d6912abf9dad98499362e8f1ef2e22148d +size 53116 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_10_en.png index 87bd37830c..84c9bc0976 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f41f0ec66a13468368b968f8d7508a69827612c61115c19136db14eb2be3e542 -size 42666 +oid sha256:8bb78cae481c682f466edb3423395794755252f9148c81d92d0254a88d0e8868 +size 42644 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_11_en.png index 0629292f5a..5818185a45 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0221cb8f774a2edb4cd312ecc9088aa2d802fd5db8660c835fcb25c196e62241 -size 40023 +oid sha256:029af74627492ef13fa3a2e1f29a849c7b994595497b4f034ec21b985828fc5e +size 40040 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_12_en.png index 60c5f43eb8..92fb373c3b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c206b528b993f7ecdb15b34a018c0256f1ad4fe39c2ba249a7a6c7c0546ed6c2 -size 57757 +oid sha256:95b5c3d3d6b419704ee7edbc3f9e596e5da09291e625efb66c21163fb12c234e +size 57735 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_13_en.png index b4e57fa998..465fe2d62e 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60b2d81deecb0c895ba5b544ba4265a62458bdbb4e7c0a0abf6a15872572931d -size 14807 +oid sha256:41e14856de72417deb09f439467c9692f288e3bae9513cc674f5c29fbe17e780 +size 14781 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_1_en.png index cf362c6ede..2042ba0459 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:964649d787a482caa519abcca2086335bc4d78d9b3a26ff9d5e13bb9e4f0aa96 -size 42184 +oid sha256:e2b401419199a4e28801552a939a658f50f4d0d142cad0a435fcbdedfd4f344f +size 42159 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_2_en.png index 91ea58263c..443a6dab69 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:317f4ee0abfc315841b571aacfb78ce714fff00b3915bb77272dcae17134d8a1 -size 38444 +oid sha256:f3ea2e6bea4d39455554ee4c0c37a9121f5af9483a6c32bd376c686aa211394a +size 38460 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_3_en.png index 600fba9697..6b438562bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39cfd2f56c72171b0fa68e98d99bb4120a35c8869ac987775b48d55ba530738c -size 36921 +oid sha256:6f46c05a31cc5971285119cb9d07f4903280bfbeaff6ccc2fb56d9d6a59be04c +size 36938 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_4_en.png index 600fba9697..6b438562bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39cfd2f56c72171b0fa68e98d99bb4120a35c8869ac987775b48d55ba530738c -size 36921 +oid sha256:6f46c05a31cc5971285119cb9d07f4903280bfbeaff6ccc2fb56d9d6a59be04c +size 36938 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_5_en.png index cf362c6ede..2042ba0459 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:964649d787a482caa519abcca2086335bc4d78d9b3a26ff9d5e13bb9e4f0aa96 -size 42184 +oid sha256:e2b401419199a4e28801552a939a658f50f4d0d142cad0a435fcbdedfd4f344f +size 42159 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_6_en.png index b515219e5c..28b6274f76 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d1b3e8eabbbd4ebfb3dd14e67aa0944d7d291688d458423c4bb45c47056c028 -size 37280 +oid sha256:cd1192d34fcb0885ed1ebbd9bf61d0fab01c27708c58dc5a01ed740348fa7cc6 +size 37294 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_7_en.png index 0c6d1d86c3..0e99bfaf6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff548b1c9c9d4fc8b376ae12be6c8468483715726bc0deecf4fc4f5854d727ad -size 41418 +oid sha256:77d8a6214d737881b2d5ac890835176a9567059c5b200dba9ae5592da356c848 +size 41434 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_8_en.png index cf362c6ede..2042ba0459 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:964649d787a482caa519abcca2086335bc4d78d9b3a26ff9d5e13bb9e4f0aa96 -size 42184 +oid sha256:e2b401419199a4e28801552a939a658f50f4d0d142cad0a435fcbdedfd4f344f +size 42159 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_9_en.png index cf362c6ede..2042ba0459 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.notifications_NotificationSettingsView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:964649d787a482caa519abcca2086335bc4d78d9b3a26ff9d5e13bb9e4f0aa96 -size 42184 +oid sha256:e2b401419199a4e28801552a939a658f50f4d0d142cad0a435fcbdedfd4f344f +size 42159 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Day_0_en.png index caa492261c..62de6e4458 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b77e3ce009dcfac0e41e7f28e5beb934ce39ade1ca85115912a5029b46f47f0 -size 58278 +oid sha256:5c806de6d6f7c84f87ebadab6606d3d6352a8094a17cf02ee897072e3918ebdd +size 58279 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Night_0_en.png index 06ecd42cb4..8e49010186 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_MultiAccountSection_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4228cd39352d4efcee45866839ff4b1c63426bfd45af083af7b2f57286c2181f -size 59227 +oid sha256:e9c4bb59ec7ba0ed437f6fd19d96ed50328fecde7d1aa026e1a076bdf34376db +size 59229 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png index cec26474b3..4dfe012539 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0e3bbf4ad7201f993d8ddc280046d770812a969bba407e729a4726eda04072c -size 39369 +oid sha256:defcbf960501cd0f7ad34a340c72834e317e662573019a72f26df3e83ac68393 +size 39318 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png index 9c5abc5b8c..32f87b189c 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90094980761bdcb3ecd10666af31f45be487cd06b81fd46710a6012610d25329 -size 39204 +oid sha256:3912aaca2e36211f4d799d9b8aa3fdebcae17ef1fa01c70de6a59e77561dd539 +size 39163 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png index 6d1b50bbe0..af13bb583f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f98bbf43c73a0b79c7113180e117e8a7b391d4e4f1cb358aba8d1865bec5bba7 -size 40281 +oid sha256:871ce6a6581c7e7d5cbf4616055ea6bb3b27db28c6cb6f7ab4ed2f5a3b9dd588 +size 40276 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png index 22b46ce794..6c8c320105 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.root_PreferencesRootViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:597ba7fae13fd3bc634aca0ef93e2e3626f552225b6848a5f7cff70fa04749de -size 40327 +oid sha256:6e8f8c4afe5ea44d4e2b54d453c4e3a671eb107d4056518a43cdadcbba13ae0b +size 40324 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png index 85de939c48..47721b005c 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63d0cc780cde0d6ed57cde9a15a397940a56912656a796ab467c5ca887f4efd9 -size 20086 +oid sha256:e036fd006454f8dad5ca62109e047e33ded820b23ba1338e90489cc6af194256 +size 20122 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en.png index 70a7a53c8c..8287d9ec5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8123501391e84366cf6d9d7521819ee05afc5189851a3c10a8a132d7f3fa04c -size 68357 +oid sha256:23c48ba14e151edf2669cd8a7804517bd4282b0b86e0482ed16c351c8d5da61e +size 68392 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png index 9ee3d8a1b0..11d25d9f8b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59fd76b6c7027c3da91adaf37046325a291be0dc96adf46c70ed3fa5674d4d45 -size 20268 +oid sha256:cba22353e2689d211508e5b2726d751a31109c490e242708fbdf0bab2b31870c +size 20257 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en.png index 3e4841e5ee..f4458fc6f8 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a984c6eec2f2c80fb0b6671d17e829f9241c6384872336017c94e5fb86d8c67c -size 67359 +oid sha256:8ac052ff95c121119d5dd99d07b41b0f78f83ce59b6644aeb596f45e673f1b03 +size 67341 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png index d15018df6e..98aeade96c 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f4b40d4054fe07381e4fab8f8aaa7b7117877b604320368391ad1110446a7a9 -size 69516 +oid sha256:c56f65335dcc9cda18ed7f647bf1dc9428ee07762ea3d40e7d28731a81ca8f2e +size 69552 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png index bde6b53c5b..954d1ed9f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dd6a1108f431d55cda82bc3e407b061a0856b0a9540ae52e2b05a60129782d3 -size 108785 +oid sha256:12d9e6e297bbb3429a4fe6dd3ac16847280e479fe89e96ec78f35159a51d01f0 +size 108813 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png index a165cc983c..8f24a727e6 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b554048c436741d34b22497e3826b36426f21d54f15490b9cd597260c258de57 -size 66328 +oid sha256:9b9e42889c2b31dfee71a644b2da66c0b7cf4f4f475030d7aab3a7d500e7246a +size 66366 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png index d15018df6e..98aeade96c 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f4b40d4054fe07381e4fab8f8aaa7b7117877b604320368391ad1110446a7a9 -size 69516 +oid sha256:c56f65335dcc9cda18ed7f647bf1dc9428ee07762ea3d40e7d28731a81ca8f2e +size 69552 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png index a8bd00637d..a477999b9e 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c24a31b7edafd60ab0f12c82047a61a7164e5aa4098de8cb658400a286ad7b85 -size 49587 +oid sha256:57402ade9b70c2124b6764edbaac71d30b89c49eea8175c448cbe7520867a42f +size 49569 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png index 54603c98b3..12f80074b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e9ae25d8136e8bbbb3f25e09914e530ff826431d5f97f47ee7a669948fcbc5e -size 67629 +oid sha256:38b5fb1099f10dae154270b5df1f52f4018d355d04e0040ba9c06ebe57f259c6 +size 67628 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png index 3d4b4cc46d..ff52e5e80b 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d82c13029a56ec62c01125f567020a95dea4d1396a88347cb64605f5df7fd79d -size 106480 +oid sha256:1a5920a102082f35d0f0a7171687998f568da5e2d68a9f9d9b5884c55c832bd2 +size 106479 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png index f940027da0..cd533fbb73 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70b5abb97021c685bf1f766db4b10d6436e3129ff558bd2c6e2b3dfd919d4dc6 -size 63682 +oid sha256:5035c2ffa678e1c761030fbac56dfb3afd043c25a3df0cd6fb7c83b2b311c2ae +size 63678 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png index 54603c98b3..12f80074b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e9ae25d8136e8bbbb3f25e09914e530ff826431d5f97f47ee7a669948fcbc5e -size 67629 +oid sha256:38b5fb1099f10dae154270b5df1f52f4018d355d04e0040ba9c06ebe57f259c6 +size 67628 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png index 86e76becb5..d7be6c5994 100644 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1838c753a7c55d31fae0e16b2211fa0af893525ed269461da5637654f3c7c8ae -size 46388 +oid sha256:946751ac246e3e833ec39da86b25d80766daed29449b1d0fcebe33c5079b724a +size 46418 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_0_en.png index 53db951021..8f57e2e4ed 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be58d7d4b0d23e2494c0ab210740d8929c8418272e06f9724df970cca7e432d7 -size 30484 +oid sha256:5a1114e981f63a95dfc3d0c8a450fce82873e1d98fa80d8c9201711bc4a285ad +size 30499 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_1_en.png index eb3093d4ef..e46c025e39 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82c69e8716b6f9e82d345b4fe8f426eab98b5e13b14172ffe514bf3aa3764aa0 -size 29991 +oid sha256:c8b7be3ef9e6fb215885ef8a5b28bd7a6ff6ffe361e30dfef14df57ca14eedee +size 30000 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_2_en.png index 4d85dbf9dd..bfc3f748d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ba6720620c0e54acdba9e696eb4e2e11f2c340249f8b4ef72318baa89fc6e48 -size 30151 +oid sha256:d87ce452ed7ef4f488e55a5fc1d93d77ca78339b34727304684bae94aa111334 +size 30167 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_3_en.png index f7fcfafe6a..6dab87ff8f 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e886c5d31391cb69db81fb134269f0b1b1eb3d2cbaacf199b8ed432a80eb05c1 -size 27416 +oid sha256:cb48b7efd78a16d7adb7d5cd17a788be229bd62b02a6a721e2a91de3abceae79 +size 27394 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_4_en.png index b0605f4f83..e4500fb2ca 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81b480562188e94a7efa60a7a6c6a1ca0e57fe641798bdefa950a402a3b3b4f1 -size 33264 +oid sha256:0f02f8336cb26b1c3efbc07462f1096d630f311117ef0ffaa5037acfcff00bbc +size 33241 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_0_en.png index 86cc6c2312..64c0190924 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c4d05bdae61fbf6d9be269cadb7b837696cd774e71546672d88e9165515673a -size 29598 +oid sha256:7288b1bd11a6b9fcc1a516fabee4abfaad3f3ceb886d777514dfc6b5ec911109 +size 29596 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_1_en.png index 05c65aafc2..aa60522823 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d63a1f46b5e8af83a70e4c1c66b25d00091e16e0f2b8d9d80d7286b08300920 -size 29140 +oid sha256:286f17b508268decb84f1769478d2e468b4884bf556aee3f7962ef5554d7e4ad +size 29135 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_2_en.png index 3be4bef5ed..dff927f2e3 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c729c11242f95a81609fe29dc430398b73b4235d7854a712296bef6f53274f7a -size 29142 +oid sha256:d73f40ab897587380598d3c433ba891b3ef2743b8d45c6bea0ca4d8f0a9905e4 +size 29135 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_3_en.png index 651fa44f2e..1e28b59bf0 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4ab1cae16b2e22ad7078c16f29bfd8b02b45d7fb1f9cf91b08d9f73f72ba515 -size 25634 +oid sha256:36ebc9cac8de0e3683b2af3c886e20824b6dfff4c44915832f0f3dd5f18c4a73 +size 25652 diff --git a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_4_en.png index c15adcd8ab..af71ab9c02 100644 --- a/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.reportroom.impl_ReportRoomView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a567b452dd99226aef065b82496cff19f0a3e37d3c89a7d351432e72e5acd403 -size 30761 +oid sha256:89341188c1f6774fb660a95138d776a502b86b86a5696defdbddc78606eea13c +size 30783 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en.png index 31eb958563..536e74db6e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d4663e9c2c439b05d6d1abe7ae7098539f5263461e9051b0b97305a31b5aa33 -size 8395 +oid sha256:0e9ced8663df865c6bdce2e2c05bdf11a48f7b8273a0d34ed7da775bce87568a +size 8428 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en.png index 947b0607e5..0cb402b1d7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5365eb3dd7e10fde8591e6d5ee6dfadef88a9fa25339309ce08445f89af88789 -size 29187 +oid sha256:56c9ac5e7b9d851e662e4544f961ca82685e1f4c93b3df84f44426e4ab40ac73 +size 29166 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en.png index 6faf40fe01..119a2bf6a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c66ca10f770fa2f29716f7c737be0acef03e364e9a27a85b81e4ef63e768b6f -size 24012 +oid sha256:97a73b393c4aa2eaebc39809cc2cbc368dec4baf1d95f08b118b586a60aca841 +size 23997 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en.png index 26a56fec35..c0269290cd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5b7cb8b7ef8b58a5fa77b7c1c6a911798940337ea9646383ee0cb082dc68f7e -size 8263 +oid sha256:38b209ff4fe8aca1f46b3ce1d140c1a83ca1620affec81909eb2916528d9974c +size 8250 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en.png index a6bed8f351..4c6ee1e461 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c02fa02a7f5787d375ffa6e9bb69cde0b23ca87512ee8120d318becd6de13bef -size 26763 +oid sha256:44492987b98ee92ddc9901ed766fdbecc346bccb7c10e0ee942b7ea79bd481da +size 26789 diff --git a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en.png index a0b5cf90f0..90e9f99470 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5852e500de1f27083f033726a89d2dda594497d2af7fbe843091cdbd06ddd975 -size 21628 +oid sha256:8217409aaf7e1b3960f0af4491b71db2f7fd59fdb58488c366e8d6f485955fe0 +size 21653 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en.png index c391aef711..91dd74fcc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b953eac8ade925a0f9c316c8b47dd5e471063f70897916bb3d36f34d625ed96b -size 27826 +oid sha256:e740571ad92eb9d9bd9b220c6f8414011cf8697b15297646d34d8320cfa3b186 +size 27845 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en.png index e05a2d7ad0..e87ce577a6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:370f116fe43e9ed2aa4e2b29b6d50a8b62201a36b62b71dcefd42629f6774edd -size 21676 +oid sha256:535db8802b3ff61d4035fe3b7b3fd6d29715b14c63c13d56dda7b5dab262c943 +size 21692 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en.png index 76fa94d404..1d0091db37 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f849c7983a0c67dd26874b4a595a665b781f58e857b41eaa12190aa78949fb2a -size 29308 +oid sha256:6efa5f5dc8fd105d887132dbcde87faf5c0b50bd5bdf425e920d746d9c5f1b80 +size 29325 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en.png index 10df941a67..82c334e1d8 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89a58ecd610f46c4ff0d9c366ce3d51a7eef9821931271920a8a685843f58af6 -size 53536 +oid sha256:563e58e22f9cbff6c3260de572c0dfd138e5a3c65009956ed77e33bfa31945ea +size 53548 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en.png index 0bb33b1d3a..5a4a83cec4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89b4dcfc85081c180afca7be96971ff8758ef5aed6588ae68e65f920ebdebee5 -size 27788 +oid sha256:c238a63e1ac7d0701be3c7bb79c1a2d4ac376b7a7e552067d0c6ceacc76631da +size 27812 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en.png index 7e5333af49..90537d860d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eba4aed9a79fc9dc3dddd3b89fbed11924e6d620eec8ec56c4e373b98641722e -size 27871 +oid sha256:24c372a30269d20c1bbbcd586a95c117c95bc72a609b081807897125f732027b +size 27894 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en.png index df512f936b..e73eeb783a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4f6ffe8f3d1e0287f706eb6be1d67597296f0ec52ff9f2e258442c1eea461db -size 26287 +oid sha256:8a8d5dcfd98726469a269d221e811fd122f4e3873e7e8def081c76fe1518f4e0 +size 26283 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en.png index cefbec4147..65f1f76213 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0de2b1fab6431b6454406ccfb29f3b781eb70da590e57a0ef7f556dbcb303fd4 -size 24680 +oid sha256:71e73605cccdc12e51dea23dd146d34523ec2c37721b1cda27b1acdd847912e0 +size 24674 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en.png index c035a934a8..9efcea53b8 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1e1bd10d3cc215bb66b0bdbfc932773dbbb8c2e0f5c14daf82432f4ffb70e34 -size 27309 +oid sha256:3c4eb6a1a237605407df331b5c3cbb4e0fc9351a16c108dbe5c8cb9747be63e5 +size 27290 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en.png index 992f7a9ed2..19ac9f2282 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17874964eaf6a8b6bb5fd2a6cdd727223c3def32f06a31538a9ffe2d54d860f1 -size 21441 +oid sha256:ab808194cbf656986c225d9590af7e34a54dc3ea8b2e5a06ea5d8552f12e0511 +size 21426 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en.png index 130b2cb3f3..c177becd79 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e40ce72965b5d76e538743f7cc032f864b91da50b0d1587cce737c323200ee6d -size 28841 +oid sha256:1ba6371454ba613dfca2e1080b1b3be5de994bc74e122f287f1fee61c1120039 +size 28823 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en.png index d4dd19eff3..14f0dc6e08 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b06ff504b5a01f78ee92b4cdefbcd368dbd3512ec0749a1352c1b09f3de5d37d -size 52506 +oid sha256:e00376afd771efa4c8c3d8e23fabb7a3d0df2a077a5b3124b1b8eb2927971f82 +size 52486 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en.png index f5ae14ddc3..17fd1f5166 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:549e3c54026e650c0cf4be79ab3e00df9b74d4d65a5d12b782d022b4f08fd096 -size 27290 +oid sha256:b5a65f83b95adb8cca9dd32652c658c85bc11084352d188304927cc747482ba9 +size 27272 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en.png index b4b7604fef..d19caec601 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5afc5518c3f26f262ddd3e5d176bc1dd22f1a049e55f1971d00a141bca3bccd2 -size 27279 +oid sha256:c7285bf5fbd6323002e27e699ac040db701b7fb0e86837b43cbfbd1f62f37686 +size 27258 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en.png index b8bc29fe27..2341505208 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7ef530d55af619805d70ecdd851d25fb13b421f76b6d953e42e248f7c76fc79 -size 25361 +oid sha256:cf628408d32c25abcb7a481cf8ba07bc4e9ef11d2ad1922a5f22fcd10e22e527 +size 25385 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en.png index 8f07770e74..ad45c54235 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b7bcf2b275a3f8cb01fe703331922573930addd4f515660df89f1aeaed6fd23 -size 22827 +oid sha256:8916de065959c06ce12558f5aeef37df421bdeba7d13d27029be9d95f3a91a50 +size 22853 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en.png index 4149be807b..eff3bc9eb4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:611314345ea0f68062800755783e790ad452adec1f1dd01fcae1eec4cc5322fc -size 8188 +oid sha256:f1c287b3f7f10a4e30b9ba4250b2637ace26106ad14a9a2f972c12bfa1bab4b2 +size 8200 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en.png index 39ff3000da..749a9ddfc4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86a07a08b2bd2b6672da54bec6183ccdc860740a24cf43e88d3e40c0b50138ed -size 8110 +oid sha256:961e47e8858c58198d4d227126fc470d2a33c7d14868d62cf0bfa5284392d8d8 +size 8127 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en.png index 4149be807b..eff3bc9eb4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:611314345ea0f68062800755783e790ad452adec1f1dd01fcae1eec4cc5322fc -size 8188 +oid sha256:f1c287b3f7f10a4e30b9ba4250b2637ace26106ad14a9a2f972c12bfa1bab4b2 +size 8200 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en.png index 1f179c4be8..08659cd742 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a809a8792d519f93df9a15c57c06d3fd4f3cb7c84245e80cf61ff07ab1c5d620 -size 20363 +oid sha256:5b23a3efa28a37800b1b040ad41aad470c4dca1d74a9c5ffe080bdac279f2b78 +size 20339 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en.png index b27727ee2b..18fede63fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ba9d3cb9a5a601b28ad9ff508c3179921cf26fcee86194c582092b1d7bf79d3 -size 7992 +oid sha256:3cae1f39c2e725d90b00d03bd6f7ff94187f568d3295e20744248f60d65a4049 +size 7973 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en.png index 3f5cacc2d0..2152a5adeb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cb292850354b8b6ba5ca36334d1664dccd617e7a6b9b55ecf3ac7d1b9729d90 -size 7872 +oid sha256:ae4ddaaf7d0dc35db82d816b26c5f8f1e0729f8f288b37028cc50379ac4c81d9 +size 7862 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en.png index b27727ee2b..18fede63fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ba9d3cb9a5a601b28ad9ff508c3179921cf26fcee86194c582092b1d7bf79d3 -size 7992 +oid sha256:3cae1f39c2e725d90b00d03bd6f7ff94187f568d3295e20744248f60d65a4049 +size 7973 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en.png index f326451237..fe39284230 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:433e3467cfa0c0f4e737ec15a1c41d6bbc36d4d2c2dd9f2f7f22bb457208f280 -size 19180 +oid sha256:2c9c97d8a3c0dd11e1d1e8b138e9d7c9828a728692a637457d5ddf84110b2d09 +size 19189 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png index 3cbbc49f07..eeca901e19 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d1216938fedaeff20ce66ccaf07aa58d40a78af9687a9cae8a1cd384810c525 -size 11519 +oid sha256:5070188463df330ea8f7969228f436dba0db5dd9eb9280f5b4484296176bf3e9 +size 11503 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png index 16e835b343..f2cf45bfff 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f1e2c79a442466832e20d8a3a46c56c54e2e665c98ce99857cd2cf5715049e2 -size 11754 +oid sha256:4f544e2018c0cd221e6bba338e61af4f306809d10d37bd5b20c33e0fa67cbabb +size 11741 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en.png index 3cbbc49f07..eeca901e19 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d1216938fedaeff20ce66ccaf07aa58d40a78af9687a9cae8a1cd384810c525 -size 11519 +oid sha256:5070188463df330ea8f7969228f436dba0db5dd9eb9280f5b4484296176bf3e9 +size 11503 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png index 3609e34598..1a42b8c5b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be6e6a6e80ea81318c599ec2493c50cf09dc6abbd39e708a495f818a92ffc90f -size 10857 +oid sha256:07dc1c12e55e3eb3ce6ee01582535641a08d62d4b059bdd581af6c58063ca70c +size 10849 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png index ddb20de451..05a92bcc05 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce1af21f57c6b7a1f7851ee82595e745252b4d2c4d8cff989b3323dbb8d3d039 -size 11070 +oid sha256:1fe0b9379ed8bd9a3c19c7cff5eb6085657e1453e4f8d6ebe88a3338e738236c +size 11067 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en.png index 3609e34598..1a42b8c5b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be6e6a6e80ea81318c599ec2493c50cf09dc6abbd39e708a495f818a92ffc90f -size 10857 +oid sha256:07dc1c12e55e3eb3ce6ee01582535641a08d62d4b059bdd581af6c58063ca70c +size 10849 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png index 318f89b756..a88b62fba0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:300940add78756d5c26ea23c9c2b18136fdcf50faf89da15e829f4a3a15d89de -size 44275 +oid sha256:2f9bce15f8c83865c215539629270f233b00aa6f313433d4a4d5bae74e6584c4 +size 44262 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png index 38e6f71394..459b225859 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a5d4752df6c97093232e64e23d7c834bd4d565d4b84a345a9e6054626dba1ec -size 45514 +oid sha256:37940d14ca14d65256ea220cfd7f0685ba2d100425f65af4d4cffe35be4b69fb +size 45485 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_2_en.png index 16e835b343..f2cf45bfff 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f1e2c79a442466832e20d8a3a46c56c54e2e665c98ce99857cd2cf5715049e2 -size 11754 +oid sha256:4f544e2018c0cd221e6bba338e61af4f306809d10d37bd5b20c33e0fa67cbabb +size 11741 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_3_en.png index fd34fc3e24..129f9d3f0d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92446c1396217fa0684aa9e8897885ca5287ed7fdf74850f1762c2359eecabd7 -size 12692 +oid sha256:cad1aae139861f1ba83d3b03a6d78916c2ced5f19e6e99b935b4a49c1b5d12bb +size 12686 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_4_en.png index 16e835b343..f2cf45bfff 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f1e2c79a442466832e20d8a3a46c56c54e2e665c98ce99857cd2cf5715049e2 -size 11754 +oid sha256:4f544e2018c0cd221e6bba338e61af4f306809d10d37bd5b20c33e0fa67cbabb +size 11741 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_5_en.png index e411b6af24..f653c35d7b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d4b9de6435fd95ce140bc0d7f2318c280fa7ed17e702e3b90a3afcc23d7db99 -size 7616 +oid sha256:fd50f1d35f872ee93bd6b2aff1feaffcc2314b11fae60302351f738bd86d735c +size 7630 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png index 87c4379585..afa0af99d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644abccc89e0f92874cbfad066c4584dba3337050653c99faebf5e04990ab809 -size 6512 +oid sha256:8c0c23f8cb90609cc1f6107f4d34efbc044de92286cb237487993953f5497e5e +size 6521 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_7_en.png index f59492b8f7..601d893545 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31285b06f39a76722344c3636e9b048df4f959cf4cfd0c01c94128fac7e4e3c0 -size 24524 +oid sha256:56ade704db88b09b1952df179e21c939779d7e7835424745971f16b87fc607f3 +size 24515 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_8_en.png index 1e5b7d9b97..9df1642c6b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e9b1bad8ed601e1511517b63915ca814822b0b9ea07c679bdf0a0d229514fcd -size 10982 +oid sha256:58d4c3e636f71ac1408189c3c14da3b0dd1e700a1be02a02f373adbcb5604b48 +size 10976 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_9_en.png index 71269db327..42bcea1374 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6ad8efbd1ad71e063097a9a4598a42a9d7050acceaa44688d232360d0f7d9bf -size 18246 +oid sha256:cba49da736f96c2dd8ca3822e796930f4bd6ff3497b72f394d034147178906ce +size 18239 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png index 4bd09bdc1c..ed4e6f7c84 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8887fa18291d5c3e68a7ad68738dc5db924231c7b80303dfafc4e4556c120fdd -size 44282 +oid sha256:5ffd537ca46c6008cb186af649c2d83744d40d7c55bdc93a510373b85f2831e2 +size 44279 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png index a4401002ff..b063a6d741 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ea957bf883ed74f0fba1f6b5ea7835d0a0c18a14ba10ab51c35abd426c9205a -size 45391 +oid sha256:4c45c582fb6698e70b376f832b9564946a2271a6b3532886239dfd75d8bb9755 +size 45409 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_2_en.png index ddb20de451..05a92bcc05 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce1af21f57c6b7a1f7851ee82595e745252b4d2c4d8cff989b3323dbb8d3d039 -size 11070 +oid sha256:1fe0b9379ed8bd9a3c19c7cff5eb6085657e1453e4f8d6ebe88a3338e738236c +size 11067 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_3_en.png index be6f41ac15..31ebaceceb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98fd6be6b52e03e81ba5257336ddd304ff7b5e6eaa51b8949d92058cd7e23030 -size 11926 +oid sha256:34198a1ba6c0f6385eb8732d36622ee0d6f865c72085d95d378d82ed7afe9486 +size 11936 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_4_en.png index ddb20de451..05a92bcc05 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce1af21f57c6b7a1f7851ee82595e745252b4d2c4d8cff989b3323dbb8d3d039 -size 11070 +oid sha256:1fe0b9379ed8bd9a3c19c7cff5eb6085657e1453e4f8d6ebe88a3338e738236c +size 11067 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_5_en.png index 1af7879624..c002b74577 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbc2c5cde5338fa40ec6867d1e2a4a509a5628d8a023f5d817ef2e5fb02b4661 -size 7536 +oid sha256:11c23632578610a78a6700f9d103ff6b4b3da03887cfb1918b10f2c6052e6820 +size 7549 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png index fead205ccd..775f637648 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66be6948d1a617e3862da5c34ec98e872bfdb7361a7b393975d05497aef7b76c -size 6323 +oid sha256:b838359a59cdc357f0ef80d701f6093ea45875c7915ba438901748f43ce9106b +size 6316 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_7_en.png index a893745106..50b7d88a03 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:475d12058c5f70f34c36fe9e5d4742da4f2a2386aac1d92408562c6fdb1db2a5 -size 24480 +oid sha256:93df87720426e598912ff2715b440503124fa3b7703ebe5c58c86d816e2632a7 +size 24476 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_8_en.png index e34c2e6570..8aa1b22c1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:291d3d607a2cc36ddea86de2309cb5da81c69da426db714337ceb4bfa25154e1 -size 10663 +oid sha256:ced65352d0aee02e92f19fc890a8fa92efabfb8255a9a58e36dc539e2d4d6009 +size 10664 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_9_en.png index 7790be4225..083ca54d13 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f416065ca537b104746b138f4108cfb76e77cda5a5499353122b4ba0abcd0fc8 +oid sha256:d9f910e14188c705d993201bdebab2f818badc71272195aa4cce31728315beea size 17207 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en.png index e67fca7833..ab2db27752 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:675c0c02e42a3cb754993218f11513fea3353fb2090b93e5a22c4d31542f7c11 -size 31900 +oid sha256:3c17a487ae8929396f0df8d93b0171abdfa5ae963b4de9ed377a3bfc22c63e4e +size 31915 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en.png index f7611ee8ba..5a300dbf11 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c45717a6e3d80735df1e6b59b1bc33647c98f07d1a9acd69cae53a3e7176d371 -size 36129 +oid sha256:0947cff89e840ac34939474e1b450c8de4615f8853120162a66f3728310fed15 +size 36152 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en.png index d406ec9330..cae7ba1845 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f401360a58bcb6a62a6579f809bf3da2646161188b19d634353d5f7e51c8851a -size 30236 +oid sha256:c259c1bc40cec6a789e36bbc96cc36a3dde072100928ce579da0f9900a3c7f33 +size 30209 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en.png index b6850ad21a..e06aa838e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d448497b30a07b42b14a34ea557242fba2f5377840b24cf2ce1afa422f7dbd -size 31776 +oid sha256:ad6442bb6e6c71dd5b3e206ce22fda4ea546f3439f0e1d5ad06696e4fe44a059 +size 31743 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en.png index d406ec9330..cae7ba1845 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f401360a58bcb6a62a6579f809bf3da2646161188b19d634353d5f7e51c8851a -size 30236 +oid sha256:c259c1bc40cec6a789e36bbc96cc36a3dde072100928ce579da0f9900a3c7f33 +size 30209 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en.png index b6850ad21a..e06aa838e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d448497b30a07b42b14a34ea557242fba2f5377840b24cf2ce1afa422f7dbd -size 31776 +oid sha256:ad6442bb6e6c71dd5b3e206ce22fda4ea546f3439f0e1d5ad06696e4fe44a059 +size 31743 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en.png index e67fca7833..ab2db27752 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:675c0c02e42a3cb754993218f11513fea3353fb2090b93e5a22c4d31542f7c11 -size 31900 +oid sha256:3c17a487ae8929396f0df8d93b0171abdfa5ae963b4de9ed377a3bfc22c63e4e +size 31915 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en.png index 5993268497..4430ff2572 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c272f1da79452611b1d34d847c6f3418ecf54c96808f347ef81db40b0b429d50 -size 30946 +oid sha256:84299116e3c3dd76c2772bdb8d9a10252a0fc41dab1f55895ce0ce2aaa776939 +size 30924 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en.png index a16743badd..461023a30c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62e8101f166dbddf64cde8abdd7dd4e8a5e1c76ab4b7ad4d9c8b8f0487fb3524 -size 34688 +oid sha256:107bcd40822d1d93d15e9c26075e9c86e6efabf9177a73b35236e7e64f1de507 +size 34664 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en.png index c9efcc5a24..cbdcb3699e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9762161747dafe345c793a5b8f6f14ed48ff7d27a3e2d95ed80bb785d4a93511 -size 28548 +oid sha256:5138bd2e888ca8ce54c2c4111a2db368379588628e76a78c8329fbc2765454db +size 28563 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en.png index 7128ba05ae..6dd5511fb4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53d08bd318b5336cb7de1a309299f1778f9ba1ef9c173139ad5d81e9358a91b6 -size 29391 +oid sha256:764499d413b3fd4e5bdfaeea3f45565c82b9635859285ebf2b31210656e7f5a1 +size 29407 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en.png index c9efcc5a24..cbdcb3699e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9762161747dafe345c793a5b8f6f14ed48ff7d27a3e2d95ed80bb785d4a93511 -size 28548 +oid sha256:5138bd2e888ca8ce54c2c4111a2db368379588628e76a78c8329fbc2765454db +size 28563 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en.png index 7128ba05ae..6dd5511fb4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53d08bd318b5336cb7de1a309299f1778f9ba1ef9c173139ad5d81e9358a91b6 -size 29391 +oid sha256:764499d413b3fd4e5bdfaeea3f45565c82b9635859285ebf2b31210656e7f5a1 +size 29407 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en.png index 5993268497..4430ff2572 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c272f1da79452611b1d34d847c6f3418ecf54c96808f347ef81db40b0b429d50 -size 30946 +oid sha256:84299116e3c3dd76c2772bdb8d9a10252a0fc41dab1f55895ce0ce2aaa776939 +size 30924 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en.png index ff9859841a..e8a8539cb2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c642b85f3ca9bc75fdbe185d672f34ca1fc62ca1ddd3d8e67c696c872da5d35c -size 22754 +oid sha256:819698bc798a3921c8cfba9af3c85a6f7e0f083ce0f2b1e01603f702793fcbd5 +size 22765 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en.png index 63b9d46751..8bb7bafebb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79dcc8a5cb2ff0151fbfa02c2e3ffe5397f2bb2beb539576d331d10fd9d4096c -size 22096 +oid sha256:a371a90d88a5f2324a6a6c73224eabdf3acb275c199ae5a30f8e67ac2f469683 +size 22094 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png index 02207c2e1e..de3f3a93b9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9494f872a46ad3be37b4a4f87dfd2608e85abb3f7d2a0ce981c9f4950111e7df -size 39928 +oid sha256:80f4f24de2db8c0b1462a6dd77cb138132dc37aa1cc000508d0cf66129fa486f +size 39962 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png index 8824aeebae..9762549b31 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e756efb16edb27b2c96d53b517b9b856dd14493ec7b2a74af1d7455539cf5e7b -size 36243 +oid sha256:80b6d0cef1f4709ab0f519c3168d9e0f9b7a7ffff8f7d4a8fbc5b10653b33042 +size 36279 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png index a8e10247e9..863e6bdf1c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:074ad5504ff8c83fb8045bc0b634a778590802716e4e6cd7f9dc399a8b90a4ff -size 46644 +oid sha256:13095117980b3b3dde8df1b2404bad43187d17cdcaf51805cf45baa684bb5086 +size 46677 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png index f9ffbd372d..d07b5f214e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2701328f6f8a5842caf5e50e87b5e244b4ee747e7258e71616274555da67a1dd -size 39832 +oid sha256:0e32a7a1ec92aa005734e877ff995bc40420710e80eea350ffbc1530095ad48c +size 39857 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png index 7ce673b174..42da0d9e8c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddf83a5648af44f9578684e37008d04e9ba92858bef9e0d05ec96e3f303dbbb6 -size 36309 +oid sha256:3e89506e845b0a9d80831b1f65fa3793aee784d5a02ab69241a26384d9d43251 +size 36292 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png index 009cafb636..df10b8c6e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c73dec8a0f078964d83edbadb9a0891925553951c2488a845d0b1258c5202ed -size 37226 +oid sha256:79b02cbdef9a555911ba7e775642b08473f271a92e045d4f7c141ccfe63170ca +size 37204 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png index e2f67353d2..6107455bd9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:146e40d680e33105cc06cda3a113432f29b42bf7f3b539b4ea17fd6ff9a9265e -size 44093 +oid sha256:785820fd67e137c5347060cf4d07dda5dc24e2349c8bb2a418895fc6ce9069b1 +size 44079 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png index 520f9abda5..f2691ad84f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb8cae34d06c27c533ac17f9532f42461b3cd9874130686e2e9f99606ccdfa76 -size 38710 +oid sha256:61e3c25edb23657021113a1201408200f85f0b2dcba9e96208a7125027cf642f +size 38699 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png index 27040e8feb..5e779061e0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c19aecd9ef2a74f6422578cc14ad493c793d95e0cce8f77215cfb567a899ca01 -size 35198 +oid sha256:11738c6de6751b37430db66d377478d38b7ac241c14d7bb2ab8b48206908fbda +size 35175 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png index 54cf5c061d..58226e7852 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab1f7dc6952d2107931123de039ca51499dd30857bea4e4f4ad0599c15260efd -size 45065 +oid sha256:8a15405c5998265da00876bac43ab2d70fca74fab916d2014207b46997b0fed5 +size 45030 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png index 15a62d4f1a..2d15a73061 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:868eb921ac33a4ef54b57413700f6e55dd06c8c7f69bfc9385dd899be5b8ab10 -size 38570 +oid sha256:f524740b14ffe3b5a70983b42c308cdcd1d7bfe7dbd0738aed3e79dba4673bbe +size 38559 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png index 0aa7a210c6..2fc07b3421 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f2e0a488a65838ed88398cdf03fae590755fba60f42e83de70a810f4dd54107 -size 35180 +oid sha256:c25628ffa6457a573b8678ab95ee7bb80315ba8a43d20a16e3d7c03baab7ea9f +size 35201 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png index 3dc1c56477..56520adc2a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e6dd87ec7efb2236890b1966c2ae2bd7f51ee9962b48c977623d782ae3fdfe6 -size 35422 +oid sha256:ab0970def368ef59ecfbc1b7cec7e0dcdd8156a6f642701acf9dd54527080568 +size 35440 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png index f6dad027b0..7faaed8c07 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49f72fe1ede6eb11c2e1572af27086df4f9c7eec45cf3ea3cfe6235ea89f12cf -size 42150 +oid sha256:742d98c87eaff31e460614f15ec4a5f03797669378099b5be3e0785320d0a0d1 +size 42171 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png index dce329ba42..1acc4da150 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3dc2312f75755a78f421e3762bc9e8b2855245e98f6a86301c55d5f211c9ffbe -size 41002 +oid sha256:f1129fe5ebc6cebbba907ca15e92b33d5ee645c431d0022758bfc5d6e28bf69e +size 41003 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png index 82e8596a02..e906d843c7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f6e5ef63d398d1bde49db96a040060965c0c2f04e5876591975c4a6f54e98e3 -size 42772 +oid sha256:fe1c01cc7c9ea9f50a0413505b516a86831416416c82488a9339785c89b3e0d3 +size 42769 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png index 5082c3ba55..cf46f94231 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d97b503413d8d9407021525019ed2804be3db79fe52d6e7ebc7dcb7b86568027 -size 59067 +oid sha256:d08941b66dd884cb3eb73fea0ccbf535ab2b42a46fb1ac83d220832e42b486a6 +size 59083 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png index cfcdf2f7cf..dccc6a1f32 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de22311362e553395b8378efe46a0b0806acef5ac2b58047d6edb0eac47f2a9f -size 39573 +oid sha256:09ca684dc0f03aa68e658c4f1c780dde6d8c1739255899936f320595098c2c80 +size 39542 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png index 11c1a0a413..97b5326743 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4d1322fbbae882c76d799f17a6727b940ff8989ff33e7a64234ad5591170553 -size 38427 +oid sha256:e71878e1dd445a58b3d79db5863ec4449729bf0bb1549c09848923fb9bf052d9 +size 38390 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png index 083c6db26f..d25877daf2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c017878fb3cf2428e1f4a36aa56e3b6a230e0f527f4e67300264c3969f7d37f -size 48477 +oid sha256:558ba83131a9d79e32e0c5566a170e1c62b5bccbb4ad23f9bc58e271ea3f89e9 +size 48462 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png index cfcdf2f7cf..dccc6a1f32 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de22311362e553395b8378efe46a0b0806acef5ac2b58047d6edb0eac47f2a9f -size 39573 +oid sha256:09ca684dc0f03aa68e658c4f1c780dde6d8c1739255899936f320595098c2c80 +size 39542 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png index 11d28447f7..b1912920cb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57fb7a950245881975dff356a879b20c2d8c7de3d2ab3fb713bfb5881ee5529b -size 38748 +oid sha256:77f4b8e6ec426104ebe81308b2cf0ad111e3fbfa07c2086a2199ab8e9e952e8a +size 38719 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png index 2c02ac8913..4793c85c21 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e9e858c64c40b71fe33178f16b092a2d324028481ba99120c023b6c0a965405 -size 39122 +oid sha256:9000726c2e4e6115bb18f09193d84d4ab1948e70e35f27d0bfa514be96584510 +size 39123 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png index 8874ab64e2..aee278ece4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36cb3f8f39258371255c0ad9bf9435103bd1a41101a0208bb200326682792637 -size 39761 +oid sha256:d009d8ede606e8cd4bc150a292aac5c58c38195b188412a55df686ef74738e08 +size 39747 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png index b059c0ab70..62e2a03cf7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfae932428e12791f76fcef42b3d2cc652ab3b4dcb779080623fc8310822b400 -size 41506 +oid sha256:fa618f575a11ed7c8521d754f54f41745ede3f2f9f95b242d9f04f641446c581 +size 41500 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png index a9a3a69e6c..e6fe537947 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ab4fc64b904eee3314f8bdbdd1be88abcf4b74913fc601c1b0f3c9f0d4dfa81 -size 56674 +oid sha256:b0063c4f776093e3c53beb164bd21d5ca0c32a865b10e848826a6f7859267f00 +size 56716 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png index ce788b7ccd..147635d0f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8aaf6b4ebe4d5f6271fbece71ff719ac2167c39a752387d29cf1a4107002479 -size 37783 +oid sha256:e47c40c3173a80230c88f7e242f0236e6de3ed255552eed2d54a71fb136aa842 +size 37809 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png index 7165c72842..98e04f83fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff2c50c0d2a83e1a4f35e7c5bbb4fef7c60d986e2a27cdf0f2c49bbbbd8ed02b -size 35854 +oid sha256:0ae08d2f3f6bc8b5364d3b9ea3584c21efe3180001d0babf209c6ef3fbf41e9a +size 35871 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png index e35736c376..5a7c8850fd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59e1ee6d1313c208b1a0e50d961f1b849d3276c0ea55625ef08f5e6e3f2f7f0f -size 45344 +oid sha256:01fe728028fd86ccaf8ff7b08eb0b1b1e21ad336da97f39d818304e769cd65aa +size 45374 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png index ce788b7ccd..147635d0f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8aaf6b4ebe4d5f6271fbece71ff719ac2167c39a752387d29cf1a4107002479 -size 37783 +oid sha256:e47c40c3173a80230c88f7e242f0236e6de3ed255552eed2d54a71fb136aa842 +size 37809 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png index 740211ddc7..c2c1b2c9f2 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2944e3753374e258ad8650cc32ccab4818b1d64d5337792d886ec78f0716f579 -size 36191 +oid sha256:a7ae5371560ae6a92f0fb6537d8359c1bc40a6c43e3f12fd365019cbb2debe72 +size 36210 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png index 505d5cefff..1d42c39f20 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0735f16bcd68d771337948c837a41d3090232ffd09ca589702beb9fc50f3ac2 -size 38032 +oid sha256:a5c945af810f3bde63d99284b97b127a10b7ec222a560a406284b4dac2b0e3f9 +size 38022 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en.png index 82712a63e8..bf2f08135f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51ac5873e21b8ea93e20c6ff81040ee3fc93e2b02baf22ef6335db44bb591039 -size 24597 +oid sha256:5f07bbd371ffe7a3e5ef1aff630d253e258ba9295749db62abc60ecb2b76c824 +size 24617 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en.png index cc7743e207..3885619305 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eab7f2a2a63ced77b87380bedbd146b2bdbe2a4fb1d2b987d13834b5281a87c -size 28595 +oid sha256:c52537723aba188a7e0d50b155cdb1565623a243a705da86348a23441c603007 +size 28615 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en.png index a380ef7ea9..4e86c38cab 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:540fe5b04694b81b0315ee551008bb72645e977538668f8aeebca83a921a5084 -size 30943 +oid sha256:abffdaca312ea90b633ed6a5b9c55dfde0e3d3acef927300e6a3562fb4de4c42 +size 30947 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en.png index 6795b2c0d3..8575894899 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00de9807d1c6d93ff17614422f9e9784e59f83ea00306c6c79b7f30ae8049e3f -size 24476 +oid sha256:65dbb0b50d20b043c24c547ad29801933aebc85cb57ac2ffd4df5a2ebb7f39f7 +size 24495 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en.png index 4b9a05718b..6b5d420e0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd13e2ba20eb7dd3f8b19554b959720d8ba9a9a0fd6d5060fc53dc2f5307b03d -size 26621 +oid sha256:71f28fcef2704a8f292f73a86463fe5a6daab24c4d1fecd1334a8a0036aa7ca7 +size 26606 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en.png index 5e99f812fe..0cef1a020d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0407ca38ceda0c4554ed4ef578165129793337377fef1fee72c9bd2ba0143f2 -size 24214 +oid sha256:99f46b2a56dcc7598585ce30f4806d29a243f53936932a65de8203b77af99698 +size 24218 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en.png index e99e557fc6..4f2e461c7e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f0c39b5b8c03298d94d5937f9a062da1d06be572644190942ae7961ae492c09 -size 28024 +oid sha256:80da7a11bef036431f1f122e5f08041ffc3c22b4ed30e8fe534843fa170db5d9 +size 28033 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en.png index 54233f9b70..23331d8aeb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8eb6739926a528c63fb4f734c5fda9912cbb6a2022ac16c3a25fe17b2c9fc29 -size 29785 +oid sha256:f362394417e9cddb3a8f409e3f4ed7a26610c6423625dc739d0ae8a7e1997091 +size 29801 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en.png index 7623622fc7..36166efe89 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f431a0f41ec54c87703a786d1e79bc84e69aa1b091cc6993fcf156a35ec1cf5 -size 24115 +oid sha256:ffda93965e6011a5112e104e2d1910bc0e8a2fb5331495f26914176c886bdae4 +size 24124 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en.png index 618fbc6e79..cf4bf2cef3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a1ae81a4538889344d3ad43646b81063fac320c1b25ee2e5b513b758bedc948 -size 25148 +oid sha256:a9e0900bace12a3eeb12d3b3b1c7c500ae267895704637b90e56270fb77b3a38 +size 25163 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en.png index 400ad9ba6e..ff89a38e82 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:657c8d384a535024a7aaa0e2d56e4e4e576c954c5f44570206ab967681a28a86 -size 40682 +oid sha256:bffa895f019ac97406fb2dc3a38c836f18b77c3808ec37e2eb4f0594b27da470 +size 40672 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en.png index bce7c956c2..0099a02115 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29fb77cd6d4321fee7580f88ac5b83e755ec74754faee10de88f835bcd7f034e -size 62990 +oid sha256:968f4b2c59cc3acf168abe967032f6d1d6e96a82808b43b63ebe52c77292e30c +size 62978 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en.png index 8b82c8a06b..72ba2ee159 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36cf813b498734d339af50f008a30b48f54f9de0128b3c3d15ac2ad9371ac6e7 -size 63119 +oid sha256:1d76119c0b07916ff1c11efdbf46475081a37ae8b0ff755ab5d4bf993a340e6a +size 63109 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en.png index 05c7cc64ed..8b30aa7bf4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:275eed3f32278ad8c777c2d49700ee9d5cf0af2be9c1440a41a743f9bc10d968 -size 61407 +oid sha256:d627cd374fe0746d2fc84fffecf6a1636fb68784ed5edae3b830fe4ee2b3751a +size 61398 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en.png index d27a67ad5d..538366fe4c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df53ff0386360e547b04ea549cfcbef8fe3a4d5438f9d9c1955ad86855a9d316 -size 63153 +oid sha256:c9346c727733e35eed57232efd6a2adbdb5de6a05cc35e2baa44086c2141f2bc +size 63142 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en.png index 9b4dd9113f..ac0a0de743 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5db1860ad7cd0214558f9a95e94e30ddb06cd5da64e47bd8c55aedc3e59e671 -size 40524 +oid sha256:9751383e4b057651f0eed314aabf1aabf032174b484a581085d42c4c3d41cc86 +size 40512 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en.png index 9b4dd9113f..ac0a0de743 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5db1860ad7cd0214558f9a95e94e30ddb06cd5da64e47bd8c55aedc3e59e671 -size 40524 +oid sha256:9751383e4b057651f0eed314aabf1aabf032174b484a581085d42c4c3d41cc86 +size 40512 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en.png index 5d92595fd1..1b41ecfc83 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7a16f107a2eac551046e9de5dbecd126c92466562f4c0d2fea2c1688248f680 -size 44197 +oid sha256:c528eb7da3892d63bf9a9432ef68bc5da6980733e9c66782cd821a75fcb6553d +size 44214 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en.png index f7f9ab0c97..2fff484b90 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc952470726800a34a70a733b8d34b7c895acc2e52dda54f807d93851adb2e8b -size 34852 +oid sha256:25776a7fd632dec45a0ec406f2087702673ba7361a3f012bf7d623407ebadee8 +size 34872 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en.png index 019a516f02..cf5d5d4894 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59998acbf3f43492ea6cc8a5f25e03c80adb8f877ca391a7a0712999d00804f9 -size 42303 +oid sha256:5ab409731c2bc717af322a3eb72fe2baf7431e9eb283568a12261f7d3a3ab065 +size 42305 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en.png index 9d377a453a..77e26857aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68009b47c0a6c8f19f96d0f11c7c5e4951a52b60d32593db0507d26c8deb6e87 -size 65067 +oid sha256:339ae2d028ae21ee1c2f74816798030490ff093160f4948317f3b646a6612f03 +size 65066 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en.png index 6dc230f625..0303edf347 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83a26996eef8512df6baa81966ae545ee4ff59a372315e18950d556c685a373e -size 65304 +oid sha256:d6b4d4ded68802acdf929f4ec1079a49551d2f826799350f975adeda91ed1d2f +size 65300 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en.png index 445ff7e514..bf00730127 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56f2830c724bafc8fbf88249b6072f5716a86a0dc91735f06ec6a5a609576829 -size 63314 +oid sha256:70979d3b81a521b6208da2f3a95187bc7b3ae0ea52e3dd35e2bbd91df14c007f +size 63318 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en.png index 42db3ee942..34ab667702 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f3ef5fa7449e8461bc5cf15e48200376ea381f02b771b3ea436a66e7bc5f314 -size 65218 +oid sha256:d2119aa5f65263f661aefae152485082b1031c40a12769694d49491c4a7e832b +size 65214 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en.png index 17a6532b50..bf5cb22f60 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f023c57456630ffc1ce232858e1560a094b6b2085f6951d96e83a13c05a1b07 -size 42137 +oid sha256:7a87c3fe49473af3ac17672177fa678bf0eb79d52711363fe262f55020cd0ed8 +size 42134 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en.png index 17a6532b50..bf5cb22f60 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f023c57456630ffc1ce232858e1560a094b6b2085f6951d96e83a13c05a1b07 -size 42137 +oid sha256:7a87c3fe49473af3ac17672177fa678bf0eb79d52711363fe262f55020cd0ed8 +size 42134 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en.png index 357404e2c4..78045454c3 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18aa3763f9f69ea3852038310237c44a35687b633af1c2caba8438be87b8cddd -size 46320 +oid sha256:4c80237938be8f87a9498a31022b55f3e6357f9669c7d9ce4c4df42db5a56c15 +size 46310 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en.png index 0ccb4cd215..34e7aa6a6e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bbda7179f96cfac0acfcda43217cd1a593e408bd18c3a668f09e890a58ee79e -size 36361 +oid sha256:51098d9966e6c978677caa0b71ddbe52262005252da72664670c9097d6c0ac83 +size 36352 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_0_en.png index f30caf1a06..1573ce81a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04beccf40a5578814d4b66171f2b310451bfd988fb4ced126ee2b748744e8d5b -size 43047 +oid sha256:b30c1a6fd9db94e5e1de924d74f34dc8a1621b54a5723ec64718f6a784ac51a8 +size 43033 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_10_en.png index 12eb61a007..ab862d3e1b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58a36534f86bfdea1d7be42d12fb796dade4fafdfb8273a41dd88646fbea8e68 -size 41966 +oid sha256:d0650642de63c69978d9665a78fa12095d4bb4c4d6cb226dd8de00e1f60376b6 +size 41965 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_11_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_11_en.png index 40e3a84f30..ba95ff1e8a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbb670d7f0a664e2b953dc97ca57ff39d0e3484e27790b4628eb669ccf8b074b -size 40782 +oid sha256:0a6f32c806782b4766acd278fa7c7c6b80f3a2f31d6ccff49c01dec6a4463120 +size 40796 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_12_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_12_en.png index 58e1299cd6..74998495a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75ac80012ecc16c11b4e6267d7570e141060b01991aee50a6bb26316f328703e -size 42304 +oid sha256:e63194ac849e271a3df7994f6b2ad11baa95f071b319b21bb37e2875b99201cd +size 42305 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_13_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_13_en.png index 0dd451fcc0..f79dda0606 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a36a0f925a192549574d48ee893a4f4c3148fc82ea8e89a68d83633783f898a -size 42206 +oid sha256:b84c9b52ed4d1845af6fd73a5a965fe872a898e097c45db17656021c00b47f2a +size 42210 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_14_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_14_en.png index 9561e24565..5deb2e11c5 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a987a565fb7e27f99ff19a36f0105d4e737125eedb0ec0e2f811bb3cedd035f -size 42749 +oid sha256:7374624c5ee056dd1a5ae4078f883dd844ceeb03715075d0edaa577eadca1a21 +size 42737 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_15_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_15_en.png index ae59ce6f56..2080442169 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ab3bafbfd5b40b2f00acb2e1cc4efacdad4106fa112683d1cf10f748754090e -size 43282 +oid sha256:86e732f7d44146add5b8a74c62942a1d67794a617115357326bcfd63fbef8a9c +size 43270 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_16_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_16_en.png index c704367fe3..f0352b8831 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17c1be5dec283dd583a2a104d48ab424d584ee06edf8f8e6fc8939307d602922 -size 42532 +oid sha256:9d1c6c551215f28d3fea257bd8bf696958d2ce9cd165834c451c856b7ede7103 +size 42540 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_17_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_17_en.png index 5c931d6dc7..24b1842b43 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c6a55a403270091155d998f317e1bd1d892dacf49a95c7d94497a4e0eef88e4 -size 41813 +oid sha256:bffb85f5e586cf33e0ff91592e52595ea534771d41ae9ed44cdf37dc8982b749 +size 41812 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_18_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_18_en.png index 48e9970c26..b2ea0e926c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_18_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_18_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfde38ad1545892cf9bc74c09ed880ca6059b18e77cb324742c14a65c4979731 -size 38977 +oid sha256:577e76d3079fcf609615983a2925506d8b19618d8cc19f9018f0a693ea9a7f4d +size 38944 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_19_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_19_en.png index 25b3613a26..109f7191c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_19_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_19_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29ef6b8dcd6bf370193253a97c5d0b773ba1f2c0391fb2314f34fe626b03c4fd -size 38911 +oid sha256:cdd0f9ba41246283eea26da43d55363e20e7ac341d4579c7ba5f99f50674b820 +size 38901 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_1_en.png index 9abdb7168c..03faf49046 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88aeef28b15094c2758a01d565e03de8126d0e065d858e9962f2a7208863eaf3 -size 38170 +oid sha256:a27a7a44360c29a54875e0c9bad4090802eab311adfe92b454537bec1c63c33d +size 38145 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_2_en.png index 6d47e2a520..4c500d4520 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17323d4ac977f6546cb44b572b50cad6d4271bba5427734c64e3c59d12b03144 -size 36657 +oid sha256:ce59a6f27ae108aefaeac5f174ecaca7f45f47578d67b06ec90f19ae5f0857c4 +size 36663 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_3_en.png index 53ac64270a..71e939e51d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc0e466e6ea864cf800db4e2f52a2fb8c1006d210df9bad9e5c78b2651a284f1 -size 42560 +oid sha256:45078434e33023bb2f7fc5e5632c39f6f289e14a74a922bafbb5be5d69c59662 +size 42578 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_4_en.png index 6fbed96841..09a3661a75 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78915e2318b404c27836fb02e15a3ead1280f2bb19157cfb76f076573ad0c983 -size 41451 +oid sha256:43c9bb289d3649f3fb645a6ba148714745ae360fdca19547db26c6a856c3e0be +size 41471 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png index 83cabb24cc..178191874d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e2c423bc8f2cf0cdd554e24ddfb54995f4fe79cec3eee6bb2d9d22ea7e145a9 -size 38608 +oid sha256:726292bbf99af55d7b8f3c9ee64a5ce5a263ff51112cb12e6bf15834d8c7cb97 +size 38592 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png index a5979ea4b4..d8a3991f39 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:539a040a601e19596bedbdca4390c95b34d13df206ab798d5fc8bd7145015698 -size 42040 +oid sha256:0756ec085e3d48d62d9bf5a65ffa88608bfadc7a085032e8371a5c628956eeb6 +size 42036 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_7_en.png index fe20c9dade..3efcf95bc6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:949a711d11b34c7c9ea7c5fc4d0532718a3ebe735fefb27d5bdff61b46722355 -size 43222 +oid sha256:23a551837f3170f0f788c6def95c3cc25788d523b5bd0c5065d7e667fc222717 +size 43203 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_8_en.png index c7ed35b8bc..63478b34f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55b02613bc0d8de924c2ed2f660290d8d477bb73bbe9a941bc953d0b33ae1d1a -size 42250 +oid sha256:6cb318d9310aca5ac9909e61407091d6d19719702eb90134e69f95a7f888f0b8 +size 42251 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_9_en.png index 8eb4b60382..b9a5cfd98b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetailsDark_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24a95da5916ac94ff5db6cbf2a67123024f2c25ecff9d4c1969a27e7b0c1f6dd -size 42328 +oid sha256:2d0db82cf51a6c11a4076b0b059cab83fb3972f1f2fd198fc7d88473f3d71468 +size 42322 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_0_en.png index 8e8f37b5a6..e9f1ef2d13 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2112b6bdb53b62cfff5eecebabe11ce6f4de26c42204a8e2b4b386a0f165125 -size 44037 +oid sha256:27eca558ec22b8614866d25cb20852dcf0f7404b4dd9a4379dae2362434c2b5d +size 44028 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_10_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_10_en.png index 142c5fd6a6..41658f0d04 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22010e05151e11e93148c36a8262bd7b008aeadbc8e54071b741da3cf2678e63 -size 42962 +oid sha256:b807776a9fc45a7e3e0269e3c49e3d254a0c352ad2fe5cc4a992eabc003bc009 +size 42957 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_11_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_11_en.png index 96fb29ebbd..6fb32137ed 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c00b05d81ca0dd04b9150dbef2ce5121e4bd20313c1acdb4523ed4522ac1b4fa -size 41769 +oid sha256:bb10e358f851007b69049cb402f1bcb96187ace186d0388ceca159df470c98aa +size 41745 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_12_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_12_en.png index 1058100bcb..e50e4828d6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d60c7c0e5a7926142ecd2da8166708174240045a5814545114ab8e3fea5aa871 -size 43317 +oid sha256:84903a3f98030ff665fadfc33f652f90f7f7218b0cfed1d2aeda28a841d8eae9 +size 43286 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_13_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_13_en.png index 22a2a7557a..facd9bf8ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed6f5afe68ab3f184214e638ca96be6355ad56c39275b6b24868eadb7eeabc95 -size 43208 +oid sha256:df98b09223ecccf3f31916e206542e1dd4cabd17164afbaf5146308a35191c98 +size 43176 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_14_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_14_en.png index 3a2f2d4da6..6e91a419fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1232df1d97d4141d82a099a221d6a64c056f5cbebc73c49213b759a471fa6a63 -size 43701 +oid sha256:6fe0960d489628e9de6d456ef1fb87f7e84612ecc017175e0064f9ca2a3f0ef5 +size 43677 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_15_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_15_en.png index e6d6597974..4404a8104b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba1bf0e4cd8cf0400e7288bf450338614ef06d44c903900bc4592a2fe0a4210c -size 44307 +oid sha256:3bd079d0f8c7a9f6f51ab19eff354e160bdd595afa35a2b0fa4f850ed324fc83 +size 44285 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_16_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_16_en.png index 0771de5c1a..8944270170 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aad944166bdb4b48390e10589a6b9b413a37e670f927c225336343a5f2a2c5c4 -size 43558 +oid sha256:6e01dc9e4f2bbe0e828fc989316c4c1273de8ddd63c51597d14b9d82d4eeb37e +size 43526 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_17_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_17_en.png index b2cedec0bc..71cc58dc7a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b01db94766971472a61c9d95f1e5152291ef0eccedc37623241528502a6dfe2 -size 43060 +oid sha256:20dcb59412950d80583dff0d5bac8fa1380a5cad9dac8e6ed32272fc7be39e8c +size 43033 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_18_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_18_en.png index 8af5e349de..abafac6652 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_18_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_18_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22c8289c0c40e5416156fe132917a4b15c56c567459d30ad25edfd31ce155528 -size 39828 +oid sha256:4423c2b99ca7270ea2a9496c71742117a6b5a63f4d053810cde5b724cf309827 +size 39819 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_19_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_19_en.png index d78bff04bb..eec52148c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_19_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_19_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff1ce38779f6bc3297b37c599bcbbb06c4bfd02efd6ebc88ea79a76fcc71650a +oid sha256:630106a8a6373edb3ea61ebe9004d1e842185e16fa67c5103e9207f12388197d size 39702 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_1_en.png index 9f5186d1ed..af4b7e3e4b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3eaf5ee08264b0c12852ed2ca3b6a5e271d4f8b855d8e56608045d6a44d3089 -size 39309 +oid sha256:666d69adf97dc13817ec64204ba36f77837bc58593233c6988a9410737e17f0d +size 39243 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_2_en.png index a5a0edc6c8..898001307a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38b13288d896a437a147c9711c80316939816645b19c289d9402d7dd46ef44a5 -size 37714 +oid sha256:a782c4d02d209fcd9625f24dc7008c9d0bd0862646ed518cd5855e015d444cb1 +size 37680 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_3_en.png index f5fac04061..4b5827b560 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00066e6bc8aca01a5306119b1c284ae2b36f45895bd32d6a1617c8b1d068746f -size 43494 +oid sha256:f6bb45bd7efc53d3f7db74f5ed5801a4448d39cb231404c4655b0c9e91f246d4 +size 43446 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_4_en.png index 256505e8b9..e47ac6ab05 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17a14837ffab9a1c1f94d7a98ff65ad52fa2abf52ec0dfaba0f585e9ad7085da -size 42388 +oid sha256:eac86b6ff6d16de49e2cd063983e06bf144d796e86ef00e992cd3f1f0d248b47 +size 42371 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png index e7bcae276e..546f29bed7 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:158a782a5771f817e02024f58e704e7e43618e17b46d992b226d64153b3dd30e -size 39367 +oid sha256:b4e5f3b38e510ebb3bf3e72a3eb28597933b438eb466fd4a5405f61b7d8c199c +size 39363 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png index 3a64f007ae..30dd8c4ed6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0af41becbdb1261f9cc546bd5072aeba50a3235c2c47c1a8e8882c2c140f93d0 -size 42941 +oid sha256:bb1c8acabcb77021ed8dec07dc0bcf8537342da4b99030ad6bcb07f97d48c30b +size 42948 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_7_en.png index ab79373e91..239eeea47d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6276d4ed1b35aa80b4de5ad155cd8d764388c7fa5821aa3b4a268280382e8355 -size 44381 +oid sha256:07c72b2af77dd3d9b096b800c035ebc9e5e256dafb351232b67aba1cbe8e6d2b +size 44390 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_8_en.png index 15001817fc..44be14ec52 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a93c5cb2446a3610b13b1fcd7cdc21ae6d8072a18abcdb8dbd73fbe9bc6a89bd -size 43328 +oid sha256:aab42df4fed8f0dc7696f7b871a7d24db2db0d07014131f682c18b3a25a65f45 +size 43295 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_9_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_9_en.png index ff9d178c54..2c12e4ece6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl_RoomDetails_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23459c1bfe29eaea2373687c2dbcf8afbbc1a7e1bf4e817385804e6a5f3f14e0 -size 43336 +oid sha256:5b4ef80cebe6c2edd5c7a66fc77e7360ffd845936a1984a917dc8f50c66ef89e +size 43307 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en.png index 093528f94e..3d22946557 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:518809c2c701e60901926344906438d2577911fbdb478e28205f4b236d0a5421 -size 12124 +oid sha256:018d40955120e99b4d8327dce82241851a38f84143b3e48f3366f8bae34bfef6 +size 12135 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en.png index 9751377b25..54906bc4f6 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:810c83411d4715117f055d0a6b8b585249cc7d392141e798989f7260755bd183 -size 28230 +oid sha256:1c5697f72f801bbb96f92ee653e5e539f5fb33fbdc41433b9812e75af72fc480 +size 28219 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en.png index b179718f1c..2878e41efd 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12d54664b7bb9019d3bdd874ce01c594d9c0463a25a75214d48cea8da8f4d209 -size 29854 +oid sha256:b02c8b878a856d4b197c7123bb924cf4e4b2736ec0fcb2fb8fb19ebf5a959e2e +size 29845 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en.png index c3097241d3..5331d1cc42 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df87cd1659f6a7168ee798cd005535917f13e7a8b5eb9020d5d474b23128dc95 -size 11852 +oid sha256:3cf6437e4f8bda1019bc382d83e6f4130f0f0bb74a02ed2fc7966b7ba99673e2 +size 11835 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en.png index 6418a2af69..99144d2d27 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65470060e8a48d9afd3fc08c0fe45fcdb20f473ea1bc26058fd6c4a4bb9844d6 -size 28049 +oid sha256:6f9a6acf3d5bdb55a353b779f088fc1a522afe44f26e3ad0318fc31c2526d56d +size 28040 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en.png index 6c3a5a7e5a..f715f3b7eb 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc072224e72efae4e7381112ccfe6fee836b46d9f06014ed55d5552d003bfd1b -size 29657 +oid sha256:e5ea57d521df7b96c6a1a57d0eca576ad4b734e4f3a7682ff168e0b6ede4ac8a +size 29648 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en.png index 5a4cc461cc..8c46960350 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0cbc9cd3e34e04dd02193c95a4d456d7a4dea35c9e8b8f9224e30e0acf6b90f -size 17079 +oid sha256:54e526b8ab19ec121349dfc61f751b4d301c61ec47f1c1ec1c02d120b1f4faaf +size 17064 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png index 8cc551af5c..441787f12b 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e6a0bb41a7bc84b0c56c7b7094e4bc9f0012b407d0f15b913d9d6001cb5ec0b -size 21100 +oid sha256:839cdb6ca2bbfdf17caa4a04255dc31f1362f21a9b2fc9e16773a16462ac7067 +size 21079 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png index 96b4790efd..b34e445d49 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd631ba5358bb05d69fe15079a4e75a494a61107fe31bb38abc42244b96a1260 -size 24136 +oid sha256:f0aff129c4f3d08a440d253de20e15a362adf9d32b3ef31ec163b15b8ad9ff40 +size 24081 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png index e3422de664..65e7dc7d4f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93ee3b0275f1a023b0faf4bfdb25414fcd234f216bb450a46e6da373da5e2ebc -size 24249 +oid sha256:fd602e1e409c937dd2a3dc9483b3d0a9351bc8e0ecd1cc3e1d1f35e08aed294f +size 24205 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en.png index ea9890c817..bdfffdde8c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e29951458d851a03eb63da0d3eba66d59534449efbf14d561b94c5e40ae7e9ae -size 15981 +oid sha256:6db6ff988fd128f537764e5a3fcaa94e67db3057fc7030698adabe70f962c1b4 +size 15991 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png index b71ac5dc73..8985b69ef1 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90dee18c6b1efe1661fd072f0a088d3a44830297d3f6ce04ace847c1e91adaaa -size 19723 +oid sha256:fcf23c5b6a8277c6496ee0e465a707f1abc1eb3eca12e99f8b6ab03caa6c4ffe +size 19712 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png index 5adfda727a..7f6408be7e 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17199b76b91cdeba19015e2a4b4a718a6609e64ea48bca8e6dce8bba58b916f3 -size 22675 +oid sha256:a4ddf81180edc9af59ab29c9340523b4629584fc91073608393e678bb617edd3 +size 22673 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png index f941baf571..33a233982c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65348c064a11dd0e85cb9daf4a87de0333f29684a60f73098cb3d6fffa9fef04 -size 22752 +oid sha256:d8ca755d7249aafc9e67973da212ae06f8e4dfdebbb631a33546a2c75b046748 +size 22749 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en.png index b72abd5ef5..19fd814600 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:993a8a37ba1897641b63bc2c7964ceee5c233b9513c9f377e91cc40afc84ffe5 -size 66284 +oid sha256:9bc73020479304a8fa8acef0e1664f7eee8e38b086c5d5cfe20ad6035721b069 +size 66314 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en.png index b72abd5ef5..19fd814600 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:993a8a37ba1897641b63bc2c7964ceee5c233b9513c9f377e91cc40afc84ffe5 -size 66284 +oid sha256:9bc73020479304a8fa8acef0e1664f7eee8e38b086c5d5cfe20ad6035721b069 +size 66314 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en.png index 13ad9c0ae7..b554c702e0 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce8747cb90012a771a3bdfa009df8abad6bf6565aad43a9a06fbf8e26ea892ed -size 66832 +oid sha256:92b1f9d0386689b8121fbc2a30fff8f52a8e0eeb31d9575b58bd5f52e7d51a4f +size 66861 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en.png index eaf56ed56b..8ebc592381 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b24e0468ef7198719df874e697f788fcb4cb89d6b683bc607b2b749fc399e33 -size 40132 +oid sha256:be8fb8421c794fd8265d6ac12ab8c268eb626965e58b5ac4272f971701023745 +size 40123 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en.png index 7fde7dca83..9dc02d6a44 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1450b718fbec30cbb9f26a4d3eaddee81a6519f002547db31ad1396562e2a4ee -size 63902 +oid sha256:197c5e077b172ff2363a87a426d238ce707b292cf1b653a165856af65ce32d2c +size 63863 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en.png index 7fde7dca83..9dc02d6a44 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1450b718fbec30cbb9f26a4d3eaddee81a6519f002547db31ad1396562e2a4ee -size 63902 +oid sha256:197c5e077b172ff2363a87a426d238ce707b292cf1b653a165856af65ce32d2c +size 63863 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en.png index fde8d75d65..fd88b5997a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a42fa98119396e545abb8fa8c6ebbf99955258aea778b8ea4a255d9aeb4ba8f -size 64465 +oid sha256:78164033218f14940820f6729f34d3420b18a8aab2ef6e18ae53a2548fd9d88e +size 64428 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en.png index cc4e4425e3..1a2399e975 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dc88d3fa9a858fe9f60885fc5fe1546b8935d546f4a18c6ac1a8d10f425eae1 -size 37450 +oid sha256:9c868cce3e1604e50e1a667a16c94117e448b808e4406805ac2aad8edf4f140f +size 37466 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en.png index d38568103a..edc3552892 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3518f4ff808d3e61047834161935aa3603e3f8161288be14b87a1ea48c5e25f -size 31968 +oid sha256:d076cb6d47c7ff6e4b7d84741be4df03de15a9d0e6152d69abfadf8f2c524f6f +size 31994 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en.png index 97a4fb8c5c..3b9a82c110 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bdd192ae952875c6c6882ec6b02ef4855e4862431c78cf29842e25700dd3d0e -size 42791 +oid sha256:16830a73c3d7bf313b2c23f800e73a4167f539a573fd2f45d0d4e0a6c84674c2 +size 42834 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en.png index 07477ce1d8..e4d9d86634 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23dce3fae5178c45a70171f762333a3e0f16e26b9b6c585ba7943a519de6e0dc -size 42771 +oid sha256:e1ae2140f8fe60f91cfcc09a499f2a698c892e61eba5862c28d8611c72827244 +size 42802 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en.png index 30a1a4772b..39f613779c 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4cea381806f7903d56640938ccf8c6d3312c8d27cd768629209db4f8a4b2fb75 -size 34891 +oid sha256:13fe904a23814a5d75517bf287b4ce2e7513484f353a220024084c7bcebe9218 +size 34870 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en.png index b58662de25..fe002dfb48 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7e9ad9b6fe78b5028209f9f9683553fb6db2d2fc2e64f215c6abc02b19baecc -size 35633 +oid sha256:2cf8010c36a9e0b1cb941aa0f224fe53813cd7692194850118ed1a5c39ccaa88 +size 35650 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en.png index 2c25983f1e..a16335d4ba 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5e0e27543c3247402719dfe0bb0bcb2152b0d3aef7dc006cc55b36746c2fd67 -size 30923 +oid sha256:e5b89d9834f3748333a2dab0cf9db6778fb1002827762d80c2c5cc46521fa208 +size 30937 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en.png index ea9f5b8b82..6b8f776d86 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a081e06078ac0ef89e3c9f643766bc9c48474168227fbf011a92e31517344d8b -size 41374 +oid sha256:9f055974b566dc053fc0a0052670a4198f82078172689c2702d9b7566d499b23 +size 41381 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en.png index 6f83ccca30..770f07a013 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2cb1156bd56a8602d17d6db4e7e7089e244e6afbaf129d9ea02ba625d8a944c -size 41173 +oid sha256:b66869c93c4e93dcfeca01182b34742e85540e0d8c8aa67a5d1c847d8c7eeb0f +size 41163 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en.png index f661545528..d0a685a194 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a8e1b4d80a8144e92f047259047104c39e3e03ddb9f49ce8b643f5ee074b772 -size 32384 +oid sha256:f5b0dc05abe24c73a97d76530b357a7d9f2f7323a242a6f2f50e5ca503de7b01 +size 32396 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en.png index 954236de8b..b695f7001e 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69d2b8e9f30b06110a735161faf6e20b505ec9395c57349fb19144f07489a03c -size 34700 +oid sha256:38b112e77bc37697456731f633e2b2ea6e25f4f62a5e5a0563ae9b43129ba088 +size 34685 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en.png index 59befc3cc6..3e8cfcbcf2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:385012bf5f912f5b99c56f75cb77dab3dafb7d097778ddb324a2e8c9e5deb0b6 -size 27850 +oid sha256:345b4bbdd52a378af6200113e72a1896e02db11e0ddcca64dee2b8d0b1551361 +size 27860 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en.png index 35402913dc..87fd6ee3b6 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a88348451e2392613f2726180aa1459a1aa6ac71c0396b68cb36606438a422a -size 27115 +oid sha256:7be12c4331e60d39fe224e2cc7ebcc6fac27a96113c4ddf54766e9c81c4855de +size 27096 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en.png index 35402913dc..87fd6ee3b6 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a88348451e2392613f2726180aa1459a1aa6ac71c0396b68cb36606438a422a -size 27115 +oid sha256:7be12c4331e60d39fe224e2cc7ebcc6fac27a96113c4ddf54766e9c81c4855de +size 27096 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en.png index dec226073c..41bfac8fac 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae1b03acfdaeaee18d2383f099117fb8ea2fb79b3d2a83a8926f07ef2b4abea5 -size 39593 +oid sha256:1bcdc96f75e0cde1f87fa43b0f6812676ec27136c49998855efd344c0f7eeda3 +size 39606 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en.png index d89e764d51..cfca989695 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bd5858afdc11c54e730e8767a11c609be1ec5302180d8a7271e8c8d51f7d651 -size 26907 +oid sha256:d382fd339495c3b019fb3d993c02938f754e336e17e553e78602697795977af9 +size 26870 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en.png index b05863eb7b..0192caac72 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bec1a67878c03a8e0dfa833e34d738eab85fe11e51483e8018bd3daac357af9c -size 25067 +oid sha256:f2a25e68685bcd850c28f23791d19117d424ed52e73f96b1e37c90927f888b43 +size 25095 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en.png index b05863eb7b..0192caac72 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bec1a67878c03a8e0dfa833e34d738eab85fe11e51483e8018bd3daac357af9c -size 25067 +oid sha256:f2a25e68685bcd850c28f23791d19117d424ed52e73f96b1e37c90927f888b43 +size 25095 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en.png index 9fda3205d5..4871806397 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:060c5920610518f1a66a3e808c15bd897a4acd7d0cad441046ba08839e474277 -size 37776 +oid sha256:6ec548da47b2c6e0d8c61ef6746a26dd4a45492fceefa21c260c62bd0adefbdc +size 37722 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png index 6fca58fc06..75aaaa0358 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e92789e9aa616c2100b55ddc06e400efb7225999da012d4c59306f734dab5e10 -size 63640 +oid sha256:dd4137b1e05eec7c660e2897701e64086cde8e5ea74bf3d5cd05d3851614f950 +size 63659 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png index e999349e08..14bf90552c 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b50f2f588c835adb9d2025fd904e8cd9462fb5b5f6952249b3b1fc0098e7dd2 -size 54688 +oid sha256:e614d0f658060959a35ad93464372df4d0148f32c1f850f22d9aa96d1d2a0f26 +size 54668 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png index 740847c503..ebcf54cd11 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a917a1b7dc4eec1c5f3ee890ac43b217e6b077381c53490c52140d408dc2b3c7 -size 62388 +oid sha256:4d28b346407eb06b2632d81036de4bdc57101c7dd67871cd8965137f0039f1a0 +size 62378 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png index 790641766b..da1f35dbe4 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2584a9ff1ae31f50e2c7902e2a04995c7c96d8085328e262d50be8a2395f71f9 -size 52541 +oid sha256:71b89c010e401ba246ac904e8569f8b8541cc882d796a208d0ff41537d57a72a +size 52557 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_0_en.png index 6bbdc26481..8da60ac87b 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21dcf430dc6b3236796a9a4d2795a539efb51db9e18c71d5cfb8c82faabd3aa6 -size 34786 +oid sha256:8bdb2e07212a22c382fe74ce45004c869934d79c14bf17f760ab4ef8a1edef46 +size 34788 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_10_en.png index 6bbdc26481..8da60ac87b 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21dcf430dc6b3236796a9a4d2795a539efb51db9e18c71d5cfb8c82faabd3aa6 -size 34786 +oid sha256:8bdb2e07212a22c382fe74ce45004c869934d79c14bf17f760ab4ef8a1edef46 +size 34788 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_11_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_12_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_13_en.png index 2fcb79869f..b4197c1ad6 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:029f206afa4d885bf03b6366ed352ff46853fb82db25e2989339b92a272bcee2 -size 55664 +oid sha256:5e97f6537620dd6a11a9d99ceab2e3ce42d4c7235c592ef7a67534ece9da0d68 +size 55665 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_14_en.png index ed2007c789..15c7da3026 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3c2fb44c142e52cc760a9649e6599951476f832b09b65a4cee3294026548c17 -size 54036 +oid sha256:fe50fba9db07c85e01f2ec725303480efe81632620ae7a46d9396b1d6add0cae +size 54037 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_15_en.png index a5efbbd241..ea5787009d 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13fdad735702c063d825b1a19cd57342631111fa0ef9222774b3414180d51cfa -size 45377 +oid sha256:2bee96b713aeee00a5e6bdfd3fa66012c5cb62099a3785f6e4d5ccffe9b1bd63 +size 45378 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_16_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_16_en.png index efe228fb28..0ebc4a38e4 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5657553aadda5f61c86e868586a928ebbc3a8552e23c4058c55a72ec535cfd0f -size 54627 +oid sha256:a1a38cb0c353026c933ed18babc6b3e6c7e8f89c96364af8b141288707c8cd39 +size 54628 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_17_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_17_en.png index 8cc53adfab..75f0088b1f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:196cb2de4ded6abb8c2dd3e41421be3f8d70817d2db9a1596e6323e1f5171d19 -size 41226 +oid sha256:a1b3737b433faab393002f8b80257a5ee86b68e4d6673cbb5192a71fe88c0381 +size 41206 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_1_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_2_en.png index fbdd44a002..907016b1db 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a108ebec4f8ba340a9539ecc44625efb6114b6a7ce8ecdd2f9c42d054a826f5 -size 36089 +oid sha256:48e69632c223ac3953a1d1fd5e4f8cafda7468908b98325b34f973b898560c47 +size 36090 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_3_en.png index 2da84bc438..a560c53410 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfec11907f34b008eb30ce7cd744d318ec2f0d794c8d90534002c9206a439c43 -size 34893 +oid sha256:2d7886e4c24a42cf0e2f04486a82d87fb10e8d869d1e305f1c3d9c0d65cf1002 +size 34894 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_4_en.png index 6bbdc26481..8da60ac87b 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21dcf430dc6b3236796a9a4d2795a539efb51db9e18c71d5cfb8c82faabd3aa6 -size 34786 +oid sha256:8bdb2e07212a22c382fe74ce45004c869934d79c14bf17f760ab4ef8a1edef46 +size 34788 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_5_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_6_en.png index 4bc853021c..dd839b2672 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0417dd04abbd875d48c9df3cf534a61be3626d2bd821f3d68989d4461e5d24ca -size 35116 +oid sha256:8180802ed8ca16cfab0c07a390281c6d0f91e7b470bc3d6a31a2a3c8ab546546 +size 35094 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_7_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_8_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_9_en.png index 0b324e417b..1bc0ab8a5f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891afd09df2c761801b159ace76f1d6c6323d44cbd654629ba0e2cf6da28e54d -size 35668 +oid sha256:1e271d61a7dab4d1ac8b696734f1965225c4508ab7238e32f72b31310d810ad4 +size 35669 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_0_en.png index df5d55c54f..03b949df70 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc4ffebd3cbbea60724def0b7259765ff994da004ff133bb60e401afb4ebb848 -size 34229 +oid sha256:8996b740806d301bca7d9cedf156baead7c088646c31c88bebf050ca0be9d0e5 +size 34221 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_10_en.png index df5d55c54f..03b949df70 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc4ffebd3cbbea60724def0b7259765ff994da004ff133bb60e401afb4ebb848 -size 34229 +oid sha256:8996b740806d301bca7d9cedf156baead7c088646c31c88bebf050ca0be9d0e5 +size 34221 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_11_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_12_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_13_en.png index 02f80c42f6..8672b27940 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:240202255059f7e086cc903789a6689c324fced1484c53096d29fd04c1d1ff76 -size 54686 +oid sha256:95f4b8af3495480887ab1134f6bbf3289f57585d5a5c2b9ac934ccc5785588bd +size 54678 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_14_en.png index 94cecbb1d9..a8540a5258 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd7e07db0e2b20ce2edb7bef0663e73c1269fd967bd902af5f101c0bb404e527 -size 53252 +oid sha256:326c4bef98e2ba16be03866a4ec93c50dee4f386826634a15d030ea1db249fa5 +size 53243 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_15_en.png index 7ca7ded836..8006c6a2c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92055d910f357811c6dd7a1193637b568986192dce08e6f0e692092840ce2dd6 -size 44325 +oid sha256:86d3d340a2f948c74ef229f5d2d651d60e4c003642f1d0589e44e7a52edc3b25 +size 44315 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_16_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_16_en.png index e3ead7a6fd..4ee88d54cb 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_16_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aea2552a7fd3a920e50c2b167b470df4f596bdc5c6f1bb2d5d870d47d5145b7e -size 53634 +oid sha256:e9763278611839601d4fb52ba3ed3e4b7b02b86e4c3d199c759caf12d9ff4fd7 +size 53630 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_17_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_17_en.png index ede7b8c389..5064ba6410 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_17_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_17_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb7b02b683c290672be4603de6d57f28d4bff253a51b9f97871ebbaada92501f -size 38791 +oid sha256:4ad5e8fffba2a3329b7b170b1a18f05bb0486d6f25467e1c2e95d2e1959f3896 +size 38809 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_1_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_2_en.png index 2ec8d7f9b0..a6601a4657 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37cbec2b0f84f410d2151a393264e0b89e4a12855841db70789277545a8fdd3a -size 35400 +oid sha256:add40967c221905131d9ee73d67ad3deaaa4b429366242fb6062dcfb519d92f7 +size 35395 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_3_en.png index ef79fd74f3..b4076ccd71 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fa35eaff3e8fc6ad0fda9ceeb4a455e6f1be65e2a2d552269cd49c085efbed7 -size 34293 +oid sha256:9e60b97a0843db11e2df0eee4db8e5795df8c57de2640ad41446cee4428811a2 +size 34284 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_4_en.png index df5d55c54f..03b949df70 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc4ffebd3cbbea60724def0b7259765ff994da004ff133bb60e401afb4ebb848 -size 34229 +oid sha256:8996b740806d301bca7d9cedf156baead7c088646c31c88bebf050ca0be9d0e5 +size 34221 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_5_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_6_en.png index a2aa264e08..f6409fdd3c 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6e8ca592dc7c22f639b5a0f8d573c723cef114fc3f046d00197c65dde43b636 -size 32836 +oid sha256:04657ed054e2400c8982f4a4e21dce33c2baab6e23db5bc2eb2a93ee7f75cd97 +size 32853 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_7_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_8_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_9_en.png index 2e3c01b6c1..0433bcd074 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.root_SecureBackupRootView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dcee5fbd606926bfd4455fd02965c4035cba66750d9c767f3b50fe8c5e3031e -size 34876 +oid sha256:c5caf158c1e78bbb4be3d19a7f539f41b18cb2c80a484d45d97c0bf9d1cc220c +size 34867 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en.png index d2a3e728ea..464e78818d 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac0bb1a0a9d500f89d20bed5190f7d4e442fec7cb8bd6710f21657ef0c298fe2 -size 26672 +oid sha256:a4755d2bbef946e868b55354878abf65ae16d27250574537fd41f9c4caf26057 +size 26674 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en.png index 03fdd554b3..05736c8f0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:910264e17c8737b5ee4efdca0853450524f21db7e7dd5a45424bfb87d221347b -size 25796 +oid sha256:9a1860bd2fdd78f44aa53fd5360e9d32ed4a4c2b7db90ca58e789a10fca399f9 +size 25792 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en.png index d2a3e728ea..464e78818d 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac0bb1a0a9d500f89d20bed5190f7d4e442fec7cb8bd6710f21657ef0c298fe2 -size 26672 +oid sha256:a4755d2bbef946e868b55354878abf65ae16d27250574537fd41f9c4caf26057 +size 26674 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en.png index 711a3afc79..1a1f3a77bb 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fc08c8fa05f681d48ff886883aba32d71a74aa3db52e92964ad69f7fb367fd5 -size 21717 +oid sha256:b2e1fee1506f383feb048d14a38f004f68914cdf019b71806ab6efeba21c1fe3 +size 21714 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en.png index 46a653d8c3..699bcf83f2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1347518095b2a8abdd67a0843b3f4d06bc685dd37ef113035864e3d74cc28740 -size 18955 +oid sha256:1f34ba5041e128bdb21045e8697e3c84b9f7c29d21df8da25a3e1c0ecede2d0d +size 18963 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en.png index 8599592e32..2130940ca5 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fd5183e7442a8e5945b8ffd8585204ede5b69b91ffb8944585678b4d88dcbeb -size 16528 +oid sha256:d56ffb3eb3d88ac71be62e72f807499d6c81daff0e7cbfb9b852fe3a3c205a7f +size 16526 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en.png index 0a536f441b..824ca8e47e 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2b2f513d4523c1e00f8508c5531f300a71b7a7f2396d1d4e40fc605e4075e6c -size 16235 +oid sha256:a88380c3d811291d2c13fe8934a6388d2027c271d34560bc061f2df9a06082e8 +size 16239 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en.png index a1364f2599..1291bcb046 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c908fe1b613b28a3d12d49f98f2363e361f2cab4b8c35c89482802525c5ef34 -size 25773 +oid sha256:6a76057ecb66ea72f9f9ef34f3a2f17e3af8310870ce26540b3f7d92b2666f50 +size 25776 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en.png index 92ee9a1542..e8211294a2 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fb8568e2cd07f9c856b1e3beac52a1e6979878fd8c6fdb6b57b4faecaa2c3e1 -size 24961 +oid sha256:e985247f0494f9f7776c2e9020e28e3fa7f3dea2b11c04c964c35543244f18e1 +size 24955 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en.png index a1364f2599..1291bcb046 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c908fe1b613b28a3d12d49f98f2363e361f2cab4b8c35c89482802525c5ef34 -size 25773 +oid sha256:6a76057ecb66ea72f9f9ef34f3a2f17e3af8310870ce26540b3f7d92b2666f50 +size 25776 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en.png index 2eddd67b9a..791097a921 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3465fcc599b8fea97ad6347abd9525b983df5d2f4a28c0ce4a3b9743ef85c65 -size 20600 +oid sha256:524bc8970068d265fca5585bc4cde5306435fc64955379d538a9e7cc187809ab +size 20610 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en.png index 241824a45e..362b5fc24a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba81a7ac256c647460e5661ec36f78a4abb592fa98f9a5e472590d7234154dd7 -size 18101 +oid sha256:de594ca9a6e605acd2ede0a9f0267d4467d6b3b5a64379467602bf8744eeadc9 +size 18100 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en.png index bedad0a35c..fbf6464434 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:963c535c88475dd6f659ce4f22494314f29401b70b2a407a689bdccfb3b062c1 -size 15723 +oid sha256:f67a022b7bb931e8e9ed8b3ea03480b832289a04e390c7c3d839c250304a252e +size 15728 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en.png index f58c42a999..1443e74654 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:985b5897ba1ae81ff8de6ac90daec70584f1586f0c5ff762ec154a9fd50e2cae -size 15664 +oid sha256:0b337dedbbfabb7a75510443f47b3ceb11513096afff2cd06c5481d77eab37d7 +size 15658 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en.png index 5039993db6..9f39808f7a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ec3cf271a8b012c03fea17dc176e377958d97355a43d04fae1f00989e4c9bf2 -size 42564 +oid sha256:9fa2dfe5463ed01906ee8548f43847433164d404ab6ab43071bbe30fdfbfc7fb +size 42596 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en.png index da66fc3d46..7050a52d4f 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:418b6106a186341e627ad739fbcb435f5b86ba05d8a97488a013aab2d871a8c7 -size 40123 +oid sha256:aaa07b0a497cf9c90f18ed37f243bb51b986e17b0694a7ef6430d8b589361fe6 +size 40151 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png index a53b841520..0509e9c2bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88a372d1c98f2978c2d70907553a5d0de0022ee205bcac492b635bd9f2e859e7 -size 54331 +oid sha256:db46848dee7a332c80f57a001b8a53782a548c5f246a982432285181b299c6fa +size 54327 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png index a53b841520..0509e9c2bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88a372d1c98f2978c2d70907553a5d0de0022ee205bcac492b635bd9f2e859e7 -size 54331 +oid sha256:db46848dee7a332c80f57a001b8a53782a548c5f246a982432285181b299c6fa +size 54327 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png index b7b6ca3318..fba4e205a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a8cf71b7c7ac794bf6f0fd71fe477cb0dd651ff86ad649fe4eaa9e8df83b1cf -size 48594 +oid sha256:4786dcb6c8c2afef0d6bee12d801e36a59a1b4cb7a39bae3dd0beeaa5a41f5dd +size 48603 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en.png index 0d260a0a24..f51d82eb66 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:098b7a3b50e1bca8c03c55c8b118694339b6cc9033f4f94847c66a59e0629743 -size 35835 +oid sha256:97a3e8b57ae642e36e8b8c68d77838bce6dca0e20f81c54079998532cd610c1d +size 35818 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en.png index 52b5a523be..281894f4aa 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b628fae11fc7d0d1b3f5e7331158fc5c878d5c9b3751c1b80d7f28fd8db45214 -size 41415 +oid sha256:6b134d3fb4eb2adaa379a2855b0e312862d89c71351aa39fcdcf3ad08aad59f6 +size 41412 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en.png index aa6e1cc81c..1330db6ffd 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea9242a1fd83eda9dfbc8d0dde70e0893a1ba1e748e1dd1e73bc2773c4143f76 -size 39043 +oid sha256:6fc5e8da50002259f94ef17ab431dfb8fd463427c46f0a89ea364e20f1892231 +size 39037 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png index 0edcd3d7de..1f5a51748a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af52db2ba874608c5c905d6deb102664f1e4101714a52945808ea35660ed51b7 -size 52411 +oid sha256:d8e2afc7cebe08b5ab070d34f2aa1b54ce509c24c0444394fe5a7963253e8775 +size 52416 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png index 0edcd3d7de..1f5a51748a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af52db2ba874608c5c905d6deb102664f1e4101714a52945808ea35660ed51b7 -size 52411 +oid sha256:d8e2afc7cebe08b5ab070d34f2aa1b54ce509c24c0444394fe5a7963253e8775 +size 52416 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png index 8e3198caa9..6d31adaa22 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a31fc85a97482f83147f8db4b3dc95ac5c96d16fbcc849ab44588bc2462377d7 -size 45963 +oid sha256:adeb68f1d2adce6625ab6cca4f590764d0c550f3d61abd5ee248f5625241b4ce +size 45953 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en.png index e1c6673840..c0a94b5a07 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01d4b4598591373cbb507fd4074aafc7a0c04d84bf89ff1bc7e4eaa7bde71a7a -size 32880 +oid sha256:e4dbe58894a6f22992b10f31650aeb2252857866b01917dc50391dd46c1104bf +size 32901 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en.png index 43fb24a248..e7d2f47891 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b77c8dd93e0d9807714168fcb5b993cbd6008a72857c62f292abe6a0753511d -size 44135 +oid sha256:efd3f69bf092cf19e58f616fa2b2a4a32da1976af1fc5dc23fcb4fcf4c961f4e +size 44171 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en.png index 6345788a81..97a5cad21b 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db95e2a67a0cf47f0cde4731016a2e64952a8c40817334bf683d44c673165f37 -size 41853 +oid sha256:d46fc4a4c699f9178da3feab20b3e6af1922131c697ebae818acf53de7d49433 +size 41886 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png index a53b841520..0509e9c2bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88a372d1c98f2978c2d70907553a5d0de0022ee205bcac492b635bd9f2e859e7 -size 54331 +oid sha256:db46848dee7a332c80f57a001b8a53782a548c5f246a982432285181b299c6fa +size 54327 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png index a53b841520..0509e9c2bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88a372d1c98f2978c2d70907553a5d0de0022ee205bcac492b635bd9f2e859e7 -size 54331 +oid sha256:db46848dee7a332c80f57a001b8a53782a548c5f246a982432285181b299c6fa +size 54327 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png index b7b6ca3318..fba4e205a0 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a8cf71b7c7ac794bf6f0fd71fe477cb0dd651ff86ad649fe4eaa9e8df83b1cf -size 48594 +oid sha256:4786dcb6c8c2afef0d6bee12d801e36a59a1b4cb7a39bae3dd0beeaa5a41f5dd +size 48603 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en.png index da055ab499..61583dcbf1 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4317eb9258f74756d4ecf3aa430dad3ee93cf446588d6fac9bbc6cc12c2c3b0 -size 34467 +oid sha256:7b614fbd391330b8e6972020ca01c7471f95091d17c21f325c80182625888547 +size 34450 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en.png index 759d8d8cba..6906076e20 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbcc542568df1f3b78a579bf0cefa6573c10b04c0dcc83182b3e8011e73bfcde -size 42951 +oid sha256:6efecc2dde978426d33a0b287b15e39de27ad936591fbe449183a7f8ac859899 +size 42942 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en.png index 1a9af013dc..8342bcd823 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9924fba7287a153c5be0b370a1e406cf5323409d27464a10f873e22977516a8d -size 40747 +oid sha256:8bc8b0f00e875228aa3624de652a33baaa5ddb3555878fde36c9439c763534e4 +size 40738 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png index 0edcd3d7de..1f5a51748a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af52db2ba874608c5c905d6deb102664f1e4101714a52945808ea35660ed51b7 -size 52411 +oid sha256:d8e2afc7cebe08b5ab070d34f2aa1b54ce509c24c0444394fe5a7963253e8775 +size 52416 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png index 0edcd3d7de..1f5a51748a 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af52db2ba874608c5c905d6deb102664f1e4101714a52945808ea35660ed51b7 -size 52411 +oid sha256:d8e2afc7cebe08b5ab070d34f2aa1b54ce509c24c0444394fe5a7963253e8775 +size 52416 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png index 8e3198caa9..6d31adaa22 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a31fc85a97482f83147f8db4b3dc95ac5c96d16fbcc849ab44588bc2462377d7 -size 45963 +oid sha256:adeb68f1d2adce6625ab6cca4f590764d0c550f3d61abd5ee248f5625241b4ce +size 45953 diff --git a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en.png index b556abffc7..49ee697889 100644 --- a/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d233d12ec3b268a3b0f4b902a784708dc4ddbf804b37d72111c5b7677e346ade -size 31620 +oid sha256:c2774075286a8a79c6486c5d6a7993bf9389ddb530d2937deb19aa0497cc7e16 +size 31628 diff --git a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png index 43feda89e1..9af6964cc4 100644 --- a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d902aaa8a6dbdee611822750ff63da9e13913f25d07b820f1a8694805d83cc3 -size 55952 +oid sha256:e7de50d060184ba83430edf59879f4c55f9783b0fa2aeeeb514e629bebe87ca0 +size 55942 diff --git a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png index 675eaa1302..866989dce6 100644 --- a/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.signedout.impl_SignedOutView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c07c5d44f2b15a7fc54b892fcda0ba320bda8a8b84dc9cea6409dfda82bbccc -size 54996 +oid sha256:db25ced8591929c050fb6501816fc1c432baf550164b05f8919ce506bc16a0a5 +size 54982 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_0_en.png index ba768c622f..2c1b9ca8e0 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c569a42e638a49554127d3dc59c1dda5306e50406a6eaf1033345b44e2fe037 -size 13941 +oid sha256:51d8d0648c4fb58b7dc75ecc60d59a0a7abb5d79aee5f711f163b05f8188af87 +size 13970 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_1_en.png index b42cde52d6..e5cee223db 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b43c73a9da70133fdff8c63dd6ed8b130b76fbbc28977fae9a34733b0f64faea -size 15840 +oid sha256:8f39bbc5e4ca32400555a3c934e18ca195f7d0c3d5d1e69753956a921e9ab017 +size 15873 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_2_en.png index a6ed2b4caa..205ad9ef22 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02ea4a02c0901c3d31a86272659f251e3b9299f669177b7a46a9007159989519 -size 44313 +oid sha256:890519f50978232445ad53ff654ae53ee06a9811c4f93903c9b28edf4b922c04 +size 44357 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_3_en.png index 78de62dc26..c1e295cab1 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a8d851c9393b9a64642d08be96b0c449ce894fdf69d52d0eb664d83c7005520 -size 44211 +oid sha256:6e494e7ad96ca581fc24109d30eb45dc94ffc8f00a65e5c437958a723f50a5b3 +size 44247 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_4_en.png index 9580492e5e..0e2b81065a 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78cc2ef488b13f72da4d1d149329930816e1d91541bbe62eb48c78b61564dc18 -size 35868 +oid sha256:def5cf57cdc01aecc58da2dc78a693d328db67ad1c67a80fcedcdad00ee658be +size 35911 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_5_en.png index 434ea3b936..76a111f70b 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:426847168cf1cf81df60193ba69d1c02cad567f0a72c03f0b2dadb76e92f41c0 -size 42600 +oid sha256:be2282d9efed268e05ec6ab9f54b1f24260b4adc5ebc95ffd942bc30aeb075c7 +size 42642 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_6_en.png index ae57be48c5..9ad785a01d 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:479fb84a857b3fcb15a9bba6a6fac3f8e1309a7d5af9c10c1cfe1d16c2eb678f -size 42208 +oid sha256:27d182389507043106053e120a8fb9f6dff6dd525bbb1da0043b74de84cd8309 +size 42196 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_7_en.png index e2a34d1b7f..a0ac90c2a5 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba7631fe1e5d20946256829e8414f5a305e3a2755d79fc0693fd932bfac40f4a -size 40182 +oid sha256:db70500bf818299ebe264a9ce3e600107b0b0d3ad4588c7ddb384b308b0a3f0e +size 40173 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_8_en.png index 58c84eca38..a32a6ae2bc 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d5be43f0ae09dfea01efa28519b003c6c3bbd8a47c8329ccc9721acdc84a116 -size 16531 +oid sha256:969272a4544df5be09e42dadc3ae18b2526ec203947a74b5505c194a8c545351 +size 16560 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_9_en.png index 8d62c122e7..9f8cf23b73 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:520698bcbc65cd2ccbc73aff01132a6b5d39c7d349a814e5a26e584cec5f2eeb -size 26083 +oid sha256:264d55c8b65befa6e242e6864ba9be09ac9c3ed46e4033630445415f3c5ade83 +size 26111 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_0_en.png index 4b003761fc..29fc6aebdf 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1935a53ffe3653f9c094996a7b62359fe70c18ea0b46a7204969f70ce439b5e7 -size 13924 +oid sha256:c3f33575c7ad3ba99f4e571b6e9810b48c79a23d462b7a2cb0a305f7f7f32307 +size 13919 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_1_en.png index 855181d5fe..93b3edb129 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f90882b794619797d17c9bdb8ff2e56664a5bd95ab9bee0bb59371f954c0e7ca -size 15395 +oid sha256:b27e0253ee16c90b0ff9447366702b72b1abb4d19aa01cc521ff35206888c948 +size 15386 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_2_en.png index 8f6d72cc9e..3a4f89b5b5 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4071cfff533916af1c99636ce6f61e2fbfd8d945dbba1b11e449ce55fd4bd7b9 -size 43148 +oid sha256:5a3d199d941e84e0d70e18de23375629dedc9b74bc4bfed2d7353fc85f9fc496 +size 43143 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_3_en.png index e4a21c1d3e..6328d868e0 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03dd230a42399b5db39a57dbde170955c7f40793fced9420e2fcf8c55820b8c4 -size 42948 +oid sha256:f7e276ca863450e76ddbbc10ff6f22fc17c35bd6414a47a1ce33285a3f46b3c8 +size 42957 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_4_en.png index cd30a49899..f48ae7b759 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8d4a0d5f17cf6781d34af68ec0fae1c64cdf88d59ddf4306db411c4c67fcfd8 -size 34945 +oid sha256:8cc5d0edd3dc205c3af67390a15697c020160294548ee96fb3d89c2a1e8706e0 +size 34940 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_5_en.png index 6038b2a50e..53a1d062df 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26fcf6cfae843737df553b143d9cbb8049001548b0c3479e1e24a28e0c5e6527 -size 41632 +oid sha256:c66c9ce57c7679b1f2b32c11789fc6050ee5d7ec251d77f35aefe988fd7d850f +size 41627 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_6_en.png index 64dab99eb8..3b3686d1b6 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc8a9e1d6fd7a81cf1ef718d2f3e38babcf96e58e00c2c92827cba0aadd8903e -size 40613 +oid sha256:0648f116f14434da9708075d4a225d4d2b9fb8cdb55a61c217a2200ea5c3eb33 +size 40640 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_7_en.png index 5629c9bab1..4384cbfe3c 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f0ce9d4bbe5a8bdadee5663e8ad8b9b189aa25b5eec7e7c1a40430c09f7d1d3 -size 38108 +oid sha256:3cd90931fcccd226921e51efa78c026dfe5ca230b6ee56cf2236c2f4c5e1f7b5 +size 38134 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_8_en.png index 501d938326..bfc370319f 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16d9c0ce7ffefb7825efb5e824c06bc721f85f3ff88340abf9c41b2b4679492c +oid sha256:ae93fc35355b1d16fb7be977bc49d2937da7b60f2ed76e2a184756b900afca17 size 16435 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_9_en.png index dc1018d69b..4f49ec35cf 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.leave_LeaveSpaceView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ac66ddfcf3125726d2a9a7a83ef23880339f56c12bf2cad68bc969a4deb0f38 -size 25776 +oid sha256:d5bfbe783ade0202f2c3e38451cc0868f858425457a19651bd37e10f35277327 +size 25774 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png index 79e9d22715..93b42c769b 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9c9e6833668344ddde682f0dde551af1f862647c7a3d749a12813d711ef2ee8 -size 34609 +oid sha256:529b87a5fd0acf0fa8dedb0d62fae5e88562fca815ab7137c51009bd32124f9c +size 34574 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png index 64fc57b85d..cc51a9c8bb 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bdd937cb84e29f1f05c1d718b4350694c65d0c75c0e599effd6467793e331a6 -size 34771 +oid sha256:0cf531dc152a18e417ac79f67c6b696721d4c870e6160f865c681b71f5de81cd +size 34769 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png index fb4dc3941a..29e21fa4d8 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d3ee4db00d7432da4808aeba2cd0a5409d0aefecf66e76366cf60f6096cd443 -size 35073 +oid sha256:7387422ae0e659b9133f75307fce76d2eeed7d14c5c13c8263989c6512c87159 +size 35056 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png index 753fffb205..6d66e293ff 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b095899fe3ff11e393923a8101c986eb3603778f1a4ded135c3619f6d83771b -size 64666 +oid sha256:aaeb807d588360026877dbee0b15373ee3930da71b609bb286c1a2472c0046c0 +size 64629 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png index fabd2b2255..807269a48e 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91a3e568c74bd2b7a9d99c481504025290866d0335e38cacbe7340be7a4b61cc -size 65360 +oid sha256:bcc29bb9583a195023237b3078aaccb8ed50d4bd81556cfd8f2615cdbf4fb460 +size 65318 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png index 30517b5dc5..92b1384f80 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f19d84a37f3c570fb53ae28b185cbe73b4fe94f69ba57e6935ac8a078f20afd2 -size 59751 +oid sha256:ff38ad633e2b5124c179502eb747e8fd2571160c7899f4ffde1e80a915972ad9 +size 59721 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png index 9a8a9b4d8c..d50d9aa98b 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:008f4e11e7bd9cc91e46381cb0509329e2299de22b7b485e3036e458033f9bb9 -size 34036 +oid sha256:74a676ff3c6dcc32a79c9efbf2e73511a95e1659b60a6c09344cd72606240f0c +size 34024 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png index aedc302e87..337bd83602 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2270b4da2b1e55027c253422c04f31f6884cf8accf273ce08efba95fec40d599 -size 34177 +oid sha256:c983b3fd1d771d3baf38afb9d5d8ea86d13445cce34b29338f256cc97d7ed987 +size 34172 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png index ac12a9caca..55f14f6fb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39afa43d6b9b8ba7d5ff83ba5a956fdfbb62510c57d34c81d65dd558e0501269 -size 34508 +oid sha256:d924b5eede25be4c7854ad6852ebf55b0ea69db70b9fb0815163012f22114da3 +size 34488 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png index 885b3097ae..0bc117076e 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6396f10b0bfb904eec898b0085af56f802c0f5a5e50af36313a31fa20a1dd0c -size 63449 +oid sha256:dfd10b73e17028a8d0be148902dac4e37159b3f897fbe1fd058747bc749f4231 +size 63438 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png index 92edaf6970..3bd5af0514 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9425dfd394a554bdbf43c021ec1e26d0e7f273f4ba89df670170c73641b51a7 -size 64049 +oid sha256:d63f62058595f59b3557df4168e8f704ac912e6cbecbc4bbf5f8c58f3e0cb8dd +size 64034 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png index 0807dfaec2..08c3b84e37 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93ed6d05c199a886a53ecffb7a56a586f4fba874fbf18afb4975782eb2d10744 -size 57977 +oid sha256:5f10de9260c6d376add33518f8703259246663aa42ca6a6f41f080f13fe921b6 +size 57970 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchMultipleUsersResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchMultipleUsersResultItem_en.png index dfa930f47f..c8a69b5b23 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchMultipleUsersResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchMultipleUsersResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10da292ee61043de44cfc3edfdc671ce923df0788765d9a63e846912a876cc6d -size 82806 +oid sha256:cff8d671701fb10f9eced75ad665e8610169a75d29e9698a3ee77da2e7c2e53e +size 82800 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchSingleUserResultItem_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchSingleUserResultItem_en.png index 4ab19894a0..29aa563c1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchSingleUserResultItem_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_SearchSingleUserResultItem_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a26f805eabe4d885d15acc2981617197bce78205af70efc326cd1515c483d35b -size 42404 +oid sha256:7458d0f821af41610a30d3f044a7ddf8c84e65d405227a6db987280c39e506e4 +size 42396 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_0_en.png index 697fee29c7..9756ab494d 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80b1f414a5ddcac48eef770b876f530bfcf290305b31661891a1d070e411d58b -size 8971 +oid sha256:16ca45a42d69261efffd342a3ae53d24f748cbd404d20a2c8ec958f0d93c8fc5 +size 8957 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_1_en.png index dd4a5e679b..3452586bea 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:721f7effa69fa976958537cf651afb3e5b5023bd31adf2d27004f98cce7949d4 -size 21525 +oid sha256:81ece70624f9366784cad246f158584c6fb8167e7ea5874b29eb8c186b50822e +size 21505 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_2_en.png index e411b6af24..f653c35d7b 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d4b9de6435fd95ce140bc0d7f2318c280fa7ed17e702e3b90a3afcc23d7db99 -size 7616 +oid sha256:fd50f1d35f872ee93bd6b2aff1feaffcc2314b11fae60302351f738bd86d735c +size 7630 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_3_en.png index 87c4379585..afa0af99d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644abccc89e0f92874cbfad066c4584dba3337050653c99faebf5e04990ab809 -size 6512 +oid sha256:8c0c23f8cb90609cc1f6107f4d34efbc044de92286cb237487993953f5497e5e +size 6521 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_4_en.png index 87c4379585..afa0af99d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644abccc89e0f92874cbfad066c4584dba3337050653c99faebf5e04990ab809 -size 6512 +oid sha256:8c0c23f8cb90609cc1f6107f4d34efbc044de92286cb237487993953f5497e5e +size 6521 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_5_en.png index 637699d509..92f01aaa4a 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d23eacea6ee12b3727963e65562a2b25ec45563812f35f6580f5609916c9926e -size 38448 +oid sha256:56ed064ba1b8dd3a1fd7238197eed66e7f15f4bcb290958131994f671dec2799 +size 38436 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_6_en.png index 9f7469b9d9..8e4175320b 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f894f9818cd057c6ccef33948cff0d3d55b2478e30275af9a6406a31fecdb59 -size 54748 +oid sha256:54337827a41fe2a2003874c3a068a4e8279fc1196e0f44b968ad9adfefe3598b +size 54763 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_7_en.png index 1e5b7d9b97..9df1642c6b 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e9b1bad8ed601e1511517b63915ca814822b0b9ea07c679bdf0a0d229514fcd -size 10982 +oid sha256:58d4c3e636f71ac1408189c3c14da3b0dd1e700a1be02a02f373adbcb5604b48 +size 10976 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_8_en.png index 87c4379585..afa0af99d4 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644abccc89e0f92874cbfad066c4584dba3337050653c99faebf5e04990ab809 -size 6512 +oid sha256:8c0c23f8cb90609cc1f6107f4d34efbc044de92286cb237487993953f5497e5e +size 6521 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_9_en.png index 297cd16bfb..bf3985b806 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a137133ce6c61e0dd6d4e7bfcac4cb8b93a607114fbc9c0183a2d97b6cd25520 -size 37207 +oid sha256:90138507cc2a34102c353c9e4d8c8af54ec547f92bc32b1158d980719d2f57e6 +size 37193 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_0_en.png index f600ef94d0..3f11692df2 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4af7b43200b9e0bb22568cd3470aea970aceab36b9669f5e3c4f001c1b4b82d0 -size 8544 +oid sha256:e6453fec836c6cef4f0434d61f09e643f771be1babc583eb8e92c1f8176f5844 +size 8563 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_1_en.png index 39f3f34f90..75c032223e 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce7350e400a50ce7fd359a17240c816ab527e5296563f87eeb6a2aad50640e47 -size 21982 +oid sha256:ab912aa9485f80c38fd57e7cb79f70db386155e98d8f7a71239e7efb435f0d79 +size 21987 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_2_en.png index 1af7879624..c002b74577 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbc2c5cde5338fa40ec6867d1e2a4a509a5628d8a023f5d817ef2e5fb02b4661 -size 7536 +oid sha256:11c23632578610a78a6700f9d103ff6b4b3da03887cfb1918b10f2c6052e6820 +size 7549 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_3_en.png index fead205ccd..775f637648 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66be6948d1a617e3862da5c34ec98e872bfdb7361a7b393975d05497aef7b76c -size 6323 +oid sha256:b838359a59cdc357f0ef80d701f6093ea45875c7915ba438901748f43ce9106b +size 6316 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_4_en.png index fead205ccd..775f637648 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66be6948d1a617e3862da5c34ec98e872bfdb7361a7b393975d05497aef7b76c -size 6323 +oid sha256:b838359a59cdc357f0ef80d701f6093ea45875c7915ba438901748f43ce9106b +size 6316 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_5_en.png index f79066edb9..53fc154850 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62545589273f0371a5de91382d700874aa10657a306c7629d60c64dbffb26b21 -size 39120 +oid sha256:3d303fe75dcd58dd7961378cf03bde8ad5dbed7a0e437d5cd829d7963e89cca1 +size 39113 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_6_en.png index 5954e7a5f3..21e05536d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86c7495d6b7ffb86f64ec3f5231eacf1532e4104c529de3569eb0d155d45fc34 -size 55722 +oid sha256:69196aa9bf0d856a4a58f7ce5177f80e0ef58a138d501e58d3aa22215d979f03 +size 55735 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_7_en.png index e34c2e6570..8aa1b22c1d 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:291d3d607a2cc36ddea86de2309cb5da81c69da426db714337ceb4bfa25154e1 -size 10663 +oid sha256:ced65352d0aee02e92f19fc890a8fa92efabfb8255a9a58e36dc539e2d4d6009 +size 10664 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_8_en.png index fead205ccd..775f637648 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66be6948d1a617e3862da5c34ec98e872bfdb7361a7b393975d05497aef7b76c -size 6323 +oid sha256:b838359a59cdc357f0ef80d701f6093ea45875c7915ba438901748f43ce9106b +size 6316 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_9_en.png index d116dfcc48..7556dca7b7 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.components_UserListView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b0cff302bbc1d6fc45d7615737e750eabee54d7881e5e7aba7ea6a1a8045762 -size 37135 +oid sha256:e14260ce5a9453b13bdbf6d6310fc4ea094e70e4fd27b6c84ea42f1fa24bf26c +size 37148 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png index f2e3fc0f00..6eebf8f467 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e7990287d021e65bda0b71fe12bfa2084e6151773e18e50d6fbdf61c09584bb -size 17206 +oid sha256:9767b5f03340feeca34c861cbb76248f9515c32453e07df87fb686e658a91ad5 +size 17229 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png index 5a60403684..aa64f42a54 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0509111d5091c262860944391a2e2427be688a9293de579b2c5d3e2ce0b81343 -size 20197 +oid sha256:303db83e13d6a5874af16edf045100d99fb125408fcd935bbcd2c41137a23432 +size 20193 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png index bc5985f6cc..a504957334 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52c7d46387defefbf9ff5c31d55ee75a84819f59e4ef4f69da80e27af9478063 -size 20341 +oid sha256:a61c3eef857cf3b4e035f158a79edef85d3204dfae2abbd7e88281e1c4a8e6b5 +size 20347 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png index 59c499c679..76a2e7c100 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d1d33f456068d697a8ee35054eb284ba391613872d34d5f27e3329d48de890b -size 15972 +oid sha256:18a3d8aa7ba0cac55595b865b89695fd7b43e9f3f002f27875dcc242511db15e +size 15964 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png index bc2b819fd0..452354924d 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2d48d0391750d3bf114ddff0dbdd062dd0bfce936e52142fc8e833dc9aa1c26 -size 18933 +oid sha256:848092617b8034f4789f7afb33d35a303dd4f5b2018bc96832897de4a2f877ec +size 18932 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png index dc421459d7..6d0f1f2e2b 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:493d601e8d2268ba99cd1ff1fbed42a1e9f71a94e6d0c399d1c63978ef911517 -size 18854 +oid sha256:2fc0606fb8df2ae9739ef2f787ecb52905c95c9b5142b48d7cd1ffc4046b201f +size 18872 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_0_en.png index ca64ca0c6a..67be7b388e 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c35f93a1870625fcb0f03b057d5734c5f5b489266ba3e3a0f7f0a24c7164965b -size 25895 +oid sha256:2513e8f167803ed68807b3b4b7916ad41457ddda6e06b73f73e763873c3610ed +size 25857 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_1_en.png index 33b03c2bc1..92a8f6edc5 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f831cdbfbd1563491a48cd3b4a1c383801cfc71a7c76b7586a081eaa3063e47 -size 19789 +oid sha256:860e69982f2f4604f766012b223901a074d1dae69a7b62d47c27bee948be9625 +size 19774 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_2_en.png index 88f21b77ec..8aa5ec8c06 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5204b6010d6c281655ace353b20f2a3bd47b34ba9fa85937fb15e0c835bd691a -size 26642 +oid sha256:47af637bd7dd4c178e212cde67b652381cba2bff1f0802bc8e17e792aba9bf5e +size 26628 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_3_en.png index 2afd26ca0a..7646b26049 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d08d7b43abcfc912e53e40490abdc51c7448ffe9856ec71a49b82e9eef38c921 -size 53203 +oid sha256:584e0aa699195c24dbf9e096837975f10d65cb9134b5e27f5ceb0940f58693b2 +size 53162 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_4_en.png index de737e8491..cc66665bb2 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09ae7e358588f8cf9c1e474f1591604e8867390c00b680c5137ef472e5c940e0 -size 41944 +oid sha256:360449e5163938c21518eba4de43a2ba5f071d94ea84df1caa914624c1a19d93 +size 41889 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_5_en.png index 146630ba0b..5a00949455 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c161d0bef20bb153631fc1cbe30fe15882da10662ea4510421a5dce9c5229ae -size 29365 +oid sha256:bdebd45554b623d17e0d9a1d0fed3983773fb2e911145f5740a1defa89886d9d +size 29336 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_0_en.png index db7780fe3f..e10c3da7c0 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd578d0b478ca0bd91f23b8eec98e66991ce880e3acc0704a34024187e617748 -size 24853 +oid sha256:0dc22976dcc0f511acb8648557e39de9a1f6ad459fbd97e326f079f4d999e502 +size 24836 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_1_en.png index c119172630..a863215e63 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e09a919b6f04aaa0b7c88a68620bc72880f3491b462b039e62ccc93c29fae9 -size 18696 +oid sha256:3f9aee160678ab11d9fa7c149f0399c296c796202160753f6f9eb2259d4d362d +size 18664 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_2_en.png index a5f5a1cf1d..642e9454ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc0bedfc3e4c56b0c96a0b70f0f08afa59f184abc38fb3db06a3c3ef9dbf27a3 -size 24967 +oid sha256:003981330bc57f34df10934331f1001cd3968209393b4adc34e61afd784e9b36 +size 24938 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_3_en.png index 417aa30334..b7ca611ad7 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46150299a20a6358d93ae1b3abe0c74e34ceef58e73eef6b1b0965518893a97b -size 52813 +oid sha256:a1196280397ffa9ba440b31a022a95bb2ee8734507d7a75eb4cf4c134b536205 +size 52796 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_4_en.png index 7101f9cd6e..4b82277195 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0595e9bb8590de5c22ab2ffada57a903f96d7a25c7cd564d8f6f38d3dac3e3ec -size 40567 +oid sha256:f4634c3331d259372552efc5cc664a9f6bdc866595c9be398510e288ec4dd90b +size 40509 diff --git a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_5_en.png index 9a593313f8..43f7609ad9 100644 --- a/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.startchat.impl.root_StartChatView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65fd0fa56c99efd2d701425184989792fb2d8258ecb0aa067fc2ff72abf1759a -size 28243 +oid sha256:bfd632991fa9e332a9197a25ed4e1a43ccd1624096601425d4fe1799ba0f81c8 +size 28222 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png index 1773ca4042..168f2c58b9 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6235b0c4b5e86145d1649511c1124fe26006cd26da473f4f7615683e3d6c66b5 -size 15954 +oid sha256:70699c27896e4f718fa9266da6309f15760d555ccab3e70cb4ff784d200ff548 +size 15947 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png index 86078eda98..8ffedb6083 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileHeaderSection_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee929d6cc941b8df13943d869cbbe6505e78bd5e57bcec1788fbd405075cfe7f -size 15302 +oid sha256:116674e61bc1713dcaebf771f24259943564a72038ee5f44e4f1725a3f4ad264 +size 15297 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png index b816011261..c4f23e2672 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d16148a23a67806f70cbce103eadf1148b70e59aad87111a39b97d6d22813bd3 -size 24153 +oid sha256:888ae99a8513e95bb4d64c4dc002b71995d2b2109e076330f36746d274e19e04 +size 24151 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png index 3a5972d920..3ae4adae84 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca460fea3b2a0d13479106ec35a0bb72c99efca8dc7fa1a8abeb86cf74a21b15 -size 21997 +oid sha256:8015570876eeaab09bdc2d21299afa3f3e1f45cb33266a538d721a7dfde7bd85 +size 22023 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png index 3432705c5e..e878beb841 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e287c5ef60b971020d39f9bed5e9a2f5d80b178bcc1d827f98582ae2e526a82 -size 24221 +oid sha256:5a8932b7cda9041d40739fcfdbf9d41ef949c22ecd81394d5ec5d68bbeca7ba2 +size 24248 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png index 3f2bfbb905..0b392f18dd 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ea8049d885578e736bf8ac3cc880c33946c91895630808d32fd0e83a8395a1e -size 36315 +oid sha256:a41ed2d014865eb9e2c529cb2b5ddc8f32aef11b106b5ac01c0672f703c72e96 +size 36290 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png index 7bf7fa9c18..c55b2641d7 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb41f6eb124e593f85febfa073c652dfa9710fa2ecfeb14eb28e2beb1823d6ec -size 27830 +oid sha256:594176939cb9f05ba6f2ac1c3966ab508e3dde147c6f2012bab8a95684845568 +size 27801 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png index 286bbed7bf..26afee0691 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba625a846cf0c1ccf2e904e1a1d68ad2eab9e087478a093b4f23871eeaf4dbbf -size 22495 +oid sha256:f716bdb65e20e9301860fe826193607a4890d67d38b9267f1458f4df63a4fb74 +size 22479 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png index b2bf4eb756..aaff14cf68 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:942638e4d0ad123f95918b662bb35f7d68e9049ac755a88f261690563af978c5 -size 22905 +oid sha256:2ad55c796929a0c4228e24672644c84a39cf851ece050ea0d4fb565cda65044c +size 22857 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png index 7d200af153..013d4df8a9 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b40f877f774dc5e62b2c8b49e7037ad5a746c5256bd36595c56792ae9a087b8 -size 25117 +oid sha256:8f2cb52cdfcbb1a5f0a5d5ee077d47998994a7e161961a731ed38dde0e016591 +size 25111 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png index a0b96fe588..52c95986ef 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fb902aa52a99565cc333b7f17bf9d03585f872c78d848eb31791964bd67df78 -size 34922 +oid sha256:45f8dad194e1d2099d6b822367423f688be952c73bb9bee6d98b786048aec7d6 +size 34932 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_9_en.png index c09a166076..d7aa34f82e 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b5c64e5aaaaf5d2452d8273a12a543e8f1b81cd78186da8f3c989186b4d5282 -size 31557 +oid sha256:726282781384d09fd20365dcbfda965e083ce126b5161d3efef096901ee0e8ac +size 31597 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png index b94258abce..562298739d 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2be01d9a4b182fb3e526d63dce150f2037851aa649f8ff1b7cd06e8aba3c6df -size 23482 +oid sha256:b3832e8255eb7dad6fa567429b53797d2cdff3997cd287dba12c1724077b793d +size 23471 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png index 8b4e5be089..7c62d91de3 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1547606ae3b430cf80e12f086a33ecedd99f611b9d5dd0516e0803c7a35e8391 -size 21481 +oid sha256:3c8f422996370cf47a4baaa9706d8d116ec780327ad098cdeff62c3ae8c4c743 +size 21444 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png index 411084df0e..cdf5fb5cab 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97e991358f2a8d26dd3898126967d6b45c8fdf2fc275ac13801ba91457bb7080 -size 23379 +oid sha256:fabeea3e8fe50ed61c3ed73e8bc9c16feea9db9e96a30c62e2643c7fd61898c0 +size 23366 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png index 6cfcbebf65..80dfc53eba 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dbc6a9cac90b4ced6da46266264e1685f8bde02f221440745474f5ebf516cb6 -size 33563 +oid sha256:d319a5ffb88d1f85fa525037fb5ba5282140cc1038051fc3e3fb14125139c7d6 +size 33583 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png index 98679954fe..233796fd0b 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:721dc2a45484cd7c82e08d82f793ff8879e1b041cb127fd185601181b1d4a40a -size 25397 +oid sha256:7a08a8c6e0079d40ed729757c593f43ce594b83ea13711f00386478535c7a694 +size 25422 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png index 2519134a16..1798fb66a7 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eda5414db14850e3ca281adaf54c80c9d0d8ff90b7f3ec0f46684cb266bfb098 -size 21826 +oid sha256:02dd056d232b3ffab7cd75b036ac033ed7c34a5ec638bfb3265b999ae3bfce73 +size 21809 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png index 1d6817a04f..d850d4484c 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a76d37170fd771ff344c3a45fe12cff4fb9d9dd35f135abe322d6d8d25b5ebe -size 21060 +oid sha256:a9a5a6b726944ee7219b3d0bd424eed410cac17e95835f0304399d4856a47b53 +size 21072 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png index cb9d178e63..6937e51adc 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2028942750c60f2709ecf404d4f9fc45fe09a9c6768427d4b62c0cb99fd0666b -size 24402 +oid sha256:6152dc990d8a42c14891fbfc98cfeb6e9259a7d8e6af9034d12c2d0ac05353b7 +size 24376 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png index ca2ea35dd7..7a4a05ffc4 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97ef6bf2a04793f3a4dd528714f351def2ed07b9c45fa78897d0934676746157 -size 33602 +oid sha256:b7a3d244a4d92c95487c35ee9d3328dd6d2b5086a4988665312f0494b1b67804 +size 33625 diff --git a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_9_en.png index 96c738f5f5..a079a812c6 100644 --- a/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.userprofile.shared_UserProfileView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0310ef0d56abe8aafdb97450be7b6f44aacd175070ab24d2a7a6b7cf7c65bf7e -size 30468 +oid sha256:e86644f2ff75b31620cbee143ede30b644791d17bc9fa499bc5a444728e72105 +size 30480 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en.png index 8208ba5369..7935171085 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:537781aec261b622c47345b48e8fbfd68e3cf0817bb36bf0e34e83769d6d6d21 -size 24337 +oid sha256:ed263282e2bb7ed09463066bca0f982df6c932ec704f2e839580b537b48d7c04 +size 24342 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en.png index 7b095b8e0e..ecf35ee794 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e5bf90db9ac805e4054c8d9c759181768a61f13bd30092bdf98fe0a962144f8 -size 23678 +oid sha256:8eeeb9628cf14879df65b15b49ae30ade3e2f23b3b90710c9b1eaf5947f34cc6 +size 23679 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationViewA11y_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationViewA11y_en.png index 87517cc357..48d1f990a4 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationViewA11y_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationViewA11y_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2eecd4b52a31208444d14b5017e42fc31df0391bb0ead311c01c9359a7e42f03 -size 74367 +oid sha256:fc82b350fa0905ffa7fdb86042157aa9577e4b60dd04cd0c875d6c26f8f18a05 +size 74382 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en.png index b0381d75ac..8ab592672a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aca42b6dc3864028a7896eaa5f410e68a320bfc55dbebd1662b9c080b2c22ca -size 42100 +oid sha256:2c51ecde00a75a74fb6b654f58f8c6507fe1af50f5f996c27bafa355d01f3f58 +size 42097 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en.png index 9ff94627ab..c12918bef2 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:897c738d61c159cfe70380e92617b014947dd8d683467b741562271cbf838234 -size 23227 +oid sha256:11df4acac503d00011ea5b0c3bf59495f5ad50268dc88b253bb60e4f47dcca10 +size 23217 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en.png index 464ef2f2c4..d281cca5e7 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3351e03450b6d4c09975888734630aa36ae374f8163c45ff0b5addfa540a8431 -size 24494 +oid sha256:42a9af1521e18b0edcd05743b9dc598324c68657afa293e304576348598f4b7b +size 24492 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en.png index ad2bb17bc4..599b77283e 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c1cbe54b5810265d8fdd57275b4eca39ec8fbdc9cc6fcbe3d03081d22bc5171 -size 24473 +oid sha256:606d380cc99f8328d6a8ccf93a01a0c91a1abd510cfd2238a70785eab7c04306 +size 24493 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en.png index ad2bb17bc4..599b77283e 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c1cbe54b5810265d8fdd57275b4eca39ec8fbdc9cc6fcbe3d03081d22bc5171 -size 24473 +oid sha256:606d380cc99f8328d6a8ccf93a01a0c91a1abd510cfd2238a70785eab7c04306 +size 24493 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en.png index b0381d75ac..8ab592672a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aca42b6dc3864028a7896eaa5f410e68a320bfc55dbebd1662b9c080b2c22ca -size 42100 +oid sha256:2c51ecde00a75a74fb6b654f58f8c6507fe1af50f5f996c27bafa355d01f3f58 +size 42097 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en.png index 61dcd44038..b4dae88c36 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0d95c8515dfe38a3de02fb68a035e41bedac03abadae44e371a85e6f32c9174 -size 38460 +oid sha256:c398ef341651bd7b0b067183b0b6566c515df3204512fd8f32df5abfe71f2e2e +size 38450 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en.png index ff09042d40..71a7750d12 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbe66a6550d5bc3ddead231447d7fc234841d9c8c8b7e049c326ee2b1a80aca8 -size 37108 +oid sha256:6d731d3b312cd4535d953365b1de7817c2c6d07c1ae460567f3e333cd00f8d2e +size 37142 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en.png index 3accdf3380..090d0d88c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74ecd0909c13895cd8d2e3827fb05fba98bd61f315735b281fd5502a9ae02bd2 -size 32354 +oid sha256:323370a1128d2629752159610719fd49de99a448f0278bdcce85f4f836bf3ef5 +size 32384 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png index bf8e3849c5..7869addf85 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a832cdb8459b626779d19424282b52624e3e76c1943d0e5131049f27fe45e0d8 -size 46376 +oid sha256:ef3b30dd2f1346736f9eec2a1f4a0aabd97b459f24f623123651873310e8cc52 +size 46403 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png index 89556aab16..6511073955 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9249e9a2c912c3a2f5cabc9996d608cd0801ec67629c28de656760f278bdeaf8 -size 46985 +oid sha256:88cefce497a8158d23d3302091f7b2d0d2972d83ae6d78acfe9043965e77f0c4 +size 47015 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png index 39eacc3707..5402804a6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5a1132f3b99b4a047839e752ffc6675df91f5cdb750625ac6a15483b7a376a2 -size 40058 +oid sha256:2cb056d627f504947058b3512873e91a792c98d6cc485d4d866fd63589c957bc +size 40073 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png index 34f3f1c059..2a156d2e59 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fd10ffe78ca3e141eb3f762a7eb3b7f4adff035ba10ad106b5bd88413cfbf06 -size 40662 +oid sha256:626d47274ead934c9c4d2831d14abc011954a627d63dac7193d881826371654c +size 40688 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png index 981987a5cd..d833711422 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03253d6ef18ad145a11922300e3d94b95ae344c9dd5d6f4159a77c981e47df5e -size 31569 +oid sha256:51827273873f4bb1f64b6775789b51e73641aead7d2138ed9990897063c75c4f +size 31598 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en.png index c1cb6c04d8..2917893392 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a9c13276724d2343111a065f4f6a3798206f6bc6016dc5314c87448ab74efeb -size 40891 +oid sha256:a008fa7c1f333a1ea380d6d7b2401bd3cc3ac70e32c2618359640d73962c31a2 +size 40874 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en.png index 00fa43c729..1a73c71f81 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ada343f41dd5f20ddef032216f462d851aff0d9a94f7545e72062e8b316683f1 -size 22570 +oid sha256:f739091f305037dc09fb7b6a083a30172f45c576a2ccbc08b4de1d97c37523d6 +size 22569 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en.png index 29f9b44c0a..5987a85f48 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7cff7d0bec60222ab3189805f844d14a18de28382d542706705ac91eadca99b7 -size 23873 +oid sha256:320fecc889eb76fb0201dec4c299d2fd82f6a21e48544f5d45e537bec49fa3b6 +size 23870 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en.png index 10d89ab1c3..eb7ac53f13 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34e925856ebb4ff52ae09d96c0bdcd945bebc9b317de0ba9017d51b193f3e99a -size 24257 +oid sha256:0cb86895b2e696966eac667f1ee9e373582ba222d7e360b74e8779989274c6e2 +size 24250 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en.png index 10d89ab1c3..eb7ac53f13 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34e925856ebb4ff52ae09d96c0bdcd945bebc9b317de0ba9017d51b193f3e99a -size 24257 +oid sha256:0cb86895b2e696966eac667f1ee9e373582ba222d7e360b74e8779989274c6e2 +size 24250 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en.png index c1cb6c04d8..2917893392 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a9c13276724d2343111a065f4f6a3798206f6bc6016dc5314c87448ab74efeb -size 40891 +oid sha256:a008fa7c1f333a1ea380d6d7b2401bd3cc3ac70e32c2618359640d73962c31a2 +size 40874 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en.png index 7d7faefc03..6c99c4bacb 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18e41a828de1e73f0909449c096bc7d9660e5b677075845657267db731b913ab -size 37597 +oid sha256:d077bd218282f4d5d17d319efad0b921c7e3a17e94bee4fa220390f4988d7295 +size 37601 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en.png index 17fc06c07b..d1905ffbdb 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e39f3fd09d20a9a480217135ad5cf8b45d167d78ff3dfc4119600f662ab1b132 -size 36176 +oid sha256:5d87afe654be2a6d0cfb9a1fe5a900f01809dacf23f0639b87cfd08e90650e09 +size 36161 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en.png index 43f97a426c..d337c136ef 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6242746ae0ba35d6e2e4a9c1d4c2a5e9433015eb7711767342afe4386edecfa1 -size 31701 +oid sha256:19f1f3eb197a48bcd1ec0ab3acc1d46ac2597fb3ffd325f221c3a87a2ae56b6b +size 31689 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png index 4ea7e1d206..14f9081895 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d512f3d1029d30265688b126064ac79fddb295fe7cc14f1e3bc198eca9788ab -size 45377 +oid sha256:8f5e28eb5d19d8acd3161fb4d8858c17e946481ce7d6451490a5090cbe12adb4 +size 45373 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png index 8dd388d696..128ee63be2 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70adafd272f536a934aca24486bd95c1364184d28308f57f750b6eef3dbd5fb2 -size 46001 +oid sha256:b8274750adcea6f58b005eb3c0f2f20f247d7a9e9e6f0d898410a6025701b1df +size 45993 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png index 3d570edca4..9005aa52dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05710ee6f0dec48f80a7e2c861b3f56208a707bb20ffa94878b56e855dc56da4 -size 39302 +oid sha256:08c9db896d4de76c9466675bad777591985e9b9d6d39dfae2711a95ae6de6be7 +size 39285 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png index 3a3b83e5ca..fad6ffe0df 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0263ba7e2ea86f468f1ae1cd97b20a560eafeba80251bc99c97c85796923126f -size 39949 +oid sha256:fcda36810020f172928338753ad986294b17ff705b1720d3f358ca471a8f8fb1 +size 39930 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png index 23c0ab9b55..e8416f14de 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cfe8e540f5c39f238b022e69a7340083eddafedeb24c78a336d6cc8b478e558 +oid sha256:34f5989f00cceb744fbdcc3163c646335bdd765b4d6f2dcbb5a488dee9b7280c size 30826 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en.png index 0489f19b9c..a632394ec2 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:400c32e0e5c11ff77f12c6af7240aeb06a883101c8cfc451428123e49b49ed4d -size 31563 +oid sha256:e2f2e2518b1ae1a6581b83eb0a2923dc30d4a7e3a0e29ab2a8576cc407ca5cef +size 31590 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en.png index f721955fe2..f1872614ce 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:061efadad844117ed72a1bf22e2c61687bc01a93a8e8f290a12b48410713c0f0 -size 26555 +oid sha256:4db4fc94f8c80bc45d241ccb8e67b18f687b2fb00fef5f4c7de5fbfbc07ede05 +size 26551 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en.png index c10cb27b6e..59d977bcfa 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bed3a515fd0ea2194230d2387dbc05ac177e3602e34be2a043318e16eb68fd7 -size 25165 +oid sha256:ca7819814008b5365e1c11cfd530587277fa8636e183eae35464c627c0a1d174 +size 25163 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en.png index fc31b553ae..f491e5afd4 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb94d13c7e1b529f0acf42085404d4884038d4cf152dd235d4df054da7501aef -size 4020 +oid sha256:5c0c57ed1d96e6654a25e4f47c13b34d2f80ba441a20795b6ec1ad7bdbf2fc5f +size 4041 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en.png index 7b8cfa308c..63af02a9b2 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:951b9e2b142c5be37bd2f1ad9450d624c561e59dfddd28b44c0fd11f8902cb81 -size 33015 +oid sha256:db7af309219038951c742535c24f2bf6995438a3e9850bd9f69aa8ac2636cbf5 +size 33037 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en.png index 0495a7d1e2..ea3b9ed3fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0ed215b0a3894ac5a9f1f6653392da992992bb848ab50d0b2d2eab5e3235e05 -size 23184 +oid sha256:da0a3a6b89ba22da85d8834a8b9dbc4216ee0085b7ef6f8e55203e0abb789b57 +size 23203 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en.png index e6b30c5a35..dad425d03d 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2137fb292c84d28eec149edbbb627b0b2b7db867e733dd8ddf8a15ef2ed9d7cb -size 20392 +oid sha256:d2993f8eb15e1d7dd869bad474a954db52a2b8f9769f4d1d3f0c6ab0449b7fbe +size 20421 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png index bf8e3849c5..7869addf85 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a832cdb8459b626779d19424282b52624e3e76c1943d0e5131049f27fe45e0d8 -size 46376 +oid sha256:ef3b30dd2f1346736f9eec2a1f4a0aabd97b459f24f623123651873310e8cc52 +size 46403 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png index 89556aab16..6511073955 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9249e9a2c912c3a2f5cabc9996d608cd0801ec67629c28de656760f278bdeaf8 -size 46985 +oid sha256:88cefce497a8158d23d3302091f7b2d0d2972d83ae6d78acfe9043965e77f0c4 +size 47015 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png index 39eacc3707..5402804a6a 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5a1132f3b99b4a047839e752ffc6675df91f5cdb750625ac6a15483b7a376a2 -size 40058 +oid sha256:2cb056d627f504947058b3512873e91a792c98d6cc485d4d866fd63589c957bc +size 40073 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en.png index a56767d4d2..eb57374e86 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89b0d63e742deb8efe57df9d156d79fb14cded72991ae1942a1eea0da7330b44 -size 24579 +oid sha256:aa0e8f30864050f2388b1302aaf099768451a7d3073eabdf665d9baa23ec2d91 +size 24595 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en.png index 690b86bd28..8ba1ee2e4c 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3359d6a0e36208ee49ab30774e224534f1371a65a90da877b9afccda1a81b69 -size 19263 +oid sha256:3cec76a9c828e9a3ec3eb67637c4af8145a520462e7a590418b2255ca88db813 +size 19291 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png index 981987a5cd..d833711422 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03253d6ef18ad145a11922300e3d94b95ae344c9dd5d6f4159a77c981e47df5e -size 31569 +oid sha256:51827273873f4bb1f64b6775789b51e73641aead7d2138ed9990897063c75c4f +size 31598 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en.png index ab55be7692..9bf01ebb14 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4056a8e90acd36563cacad2533ced3a6f53abf257b963442a424cba101e2e68 -size 30692 +oid sha256:7c13bfb60289897059d3230235949f13a6add9a9b1bd40f7e0806cc01a48fda5 +size 30685 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en.png index 1bc1cba469..de49708cf6 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83c1691efa952ea64b00fc794bb082b4975c037d8ada71053a352528c688cd8a -size 25903 +oid sha256:8ee603c36dea38a3adda22c45294a45225e44f9638f7292159019993aafd1ec7 +size 25902 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en.png index 840b54551c..45e9f22955 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bb238ccbc68e6224f3e34d624d7d22d77ba15d30e7b6dae7a2a9d694ef8e0f9 +oid sha256:bc1980e0ce3bc900f6703fe4f5f12eabbcc351b0aca873215e414af86125a0fd size 24521 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en.png index afe95c9b70..a3bcc11ad7 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecb393a704e98895bf561ec7e5b3fff96f1ea5d51f2b47f4dad002d8bf5eac2d -size 4020 +oid sha256:789be4f6e2b0e3a39acff02a8e8e20345839e646c009086e6af39b7f840d1a99 +size 4007 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en.png index 69e50cc51e..addf2b47cb 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cbd454afca0db1d17ec4b8582f0422a49d85ffab537a3256c540818e33e5522 -size 32181 +oid sha256:d4d968e867119149bb7cfcfdb2c993603c60b427f4f3810ecf9784198c6804b6 +size 32158 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en.png index 3139da465b..9e3ec35297 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7daf0eb8325560c0a2039e201cc2e4c41f07d2d4984e8b65a904379eb4612df0 -size 22700 +oid sha256:352e0673fd2802c418657e9a0532a504d736234f28df1119437e3035dde06804 +size 22685 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en.png index d723c7a048..b334380e3d 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36fa5bc0308e80826678222998cf041d042c7b255547b370c2510aba7d735dbb -size 20028 +oid sha256:a477acdebee14e91f9e15ef9f10f318ae0fcb081a0f6bdacb91c68e5d9234b30 +size 20011 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png index 4ea7e1d206..14f9081895 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d512f3d1029d30265688b126064ac79fddb295fe7cc14f1e3bc198eca9788ab -size 45377 +oid sha256:8f5e28eb5d19d8acd3161fb4d8858c17e946481ce7d6451490a5090cbe12adb4 +size 45373 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png index 8dd388d696..128ee63be2 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70adafd272f536a934aca24486bd95c1364184d28308f57f750b6eef3dbd5fb2 -size 46001 +oid sha256:b8274750adcea6f58b005eb3c0f2f20f247d7a9e9e6f0d898410a6025701b1df +size 45993 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png index 3d570edca4..9005aa52dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05710ee6f0dec48f80a7e2c861b3f56208a707bb20ffa94878b56e855dc56da4 -size 39302 +oid sha256:08c9db896d4de76c9466675bad777591985e9b9d6d39dfae2711a95ae6de6be7 +size 39285 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en.png index 45c4e74c78..ef526564bb 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55dbba1cc972d142dae5c76a1122eba8bc6da15d02b24980937b418fb4cabdfa -size 24303 +oid sha256:5be87045ac1f27f71a4162a966a07920b982de91891b889f1033b781aacaf05e +size 24295 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en.png index 4c4aea659b..292bc46a98 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6445a8e3df4b273868f21903357b1a1a570f66269661b3c8ba42fa7f1e091f59 -size 18759 +oid sha256:5d0fe14b6d6ca0d4f2d2f7a820a98cf4faab261d4974e601d30d1e0e49e8a5e2 +size 18755 diff --git a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png index 23c0ab9b55..e8416f14de 100644 --- a/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cfe8e540f5c39f238b022e69a7340083eddafedeb24c78a336d6cc8b478e558 +oid sha256:34f5989f00cceb744fbdcc3163c646335bdd765b4d6f2dcbb5a488dee9b7280c size 30826 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_0_en.png index cfe7b6f1a0..62bca74884 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5810865dc494369505af5b3a158b1ff1c07a9d7cee604ac63b0194d3201117f9 -size 8689 +oid sha256:fedfac46d56f4cf9316ab0e0b8e3c2c2da539a7646c9858c57c078c40abbe4fc +size 8700 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_1_en.png index cfe7b6f1a0..62bca74884 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5810865dc494369505af5b3a158b1ff1c07a9d7cee604ac63b0194d3201117f9 -size 8689 +oid sha256:fedfac46d56f4cf9316ab0e0b8e3c2c2da539a7646c9858c57c078c40abbe4fc +size 8700 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_2_en.png index c95d16443a..0914e7247a 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7edc59eb1335b7824d0f11e09b4b2894054748990fba937948932a9fc6b6021d -size 8769 +oid sha256:5c1bbe99d29efcfde3310ad45b2b8217806c34d6ee30a5684449ed87a5553d02 +size 8787 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_3_en.png index 59d17071aa..f84fe29d6c 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6bc783c43ddadb96f0fb1995ec0f2852fc9f96f3018d1ac971e31715437fcde -size 8825 +oid sha256:9ea70b10876ec654c94644281674b41c9b0d45ff5ec9f79d1efe0b55a49fc6b7 +size 8845 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_4_en.png index 9d9ed6ec58..d51967caa3 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:536c78f1e5a68200ed6286f0175b0788ff9baf46bee77417767e9d6169d81900 -size 67594 +oid sha256:3ecd5cfd9ef3597d3f51fba0fdaf164589c6a2ebad086805c6e0607c7c0043f7 +size 67614 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_5_en.png index 1fd34049f4..8dfd859d52 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edad66745b92d68e58dd187942e573e717c12c9dd45a0e7f507c217219ce2ded -size 62442 +oid sha256:2d5d01185543fc2081fc907ea20ecb04897f54e6807968dec44d80ce2294b5aa +size 62440 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_0_en.png index af6841353b..857bd249a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12624e8dbf0f2991adc8f00a3a834149824b9ec87829b60d128a741ee6fb45f5 -size 8458 +oid sha256:0adb9ef1ac968c3544e1a83c7a1d125d618355104202ed6c05077fe67c86c0d4 +size 8447 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_1_en.png index af6841353b..857bd249a1 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12624e8dbf0f2991adc8f00a3a834149824b9ec87829b60d128a741ee6fb45f5 -size 8458 +oid sha256:0adb9ef1ac968c3544e1a83c7a1d125d618355104202ed6c05077fe67c86c0d4 +size 8447 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_2_en.png index 91a403668d..9014b0703f 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d83de27597777e34d8629300e8130894b0d54570ea0f57b8ab4a7637db2e3e19 -size 8487 +oid sha256:bff2973eb03130136f0f659fa2c0f7ed5c80de9394f8f272f4ee75cac0266488 +size 8486 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_3_en.png index 23f21b41a3..dce1596180 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fccecec05c678dbbd40fabeff0198a2a1083d3ef2648ae88664944cf5212fc85 -size 8571 +oid sha256:542677ffd4c4da6662ea7fc5997763ca27876a0633db760814541cb81f29b20f +size 8567 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_4_en.png index 600afb6a0b..e85a99e49a 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1dfe5d6dbe2227fda854d22734036b046fa899bae4569aed1fafa678ec3e1d28 -size 68853 +oid sha256:a3d2a757fa9d7ea03f0f954a0f75abb363621f3332805e16400555442de9380e +size 68849 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_5_en.png index 7155f4b01e..7822af7810 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.file_ViewFileView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:249b17ff7387f06f321ffe0efabba966524874d8d5ad3e37460be373c4526954 -size 62604 +oid sha256:621cd7d33104bcc3b7fad5c031c68e08b5bd7091c37383e2c2caab4ba991eedd +size 62591 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_0_en.png index 9a8867c7b8..0de7321113 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81d8a4ecece42318cf4a38ae49212b914cda03806a3a25d94d51ded075c55dc5 -size 7884 +oid sha256:c0f4bbe5634b8622d9f2f9f8ebbdb29ebd53f7fd3c0c9339dd42fd4df9b11e11 +size 7910 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_1_en.png index 6a02b73892..1b9e5a6536 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38084d5a19bc081cd6ac593cf47164df00baa9c0e94b016117f96508a9dcfadc -size 9647 +oid sha256:ab0477b6a4fdd4eaf522a87e4cf40820ad506d3f7eb3d0aa0ada979151a3166b +size 9677 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_0_en.png index 61cf4e9f6d..022774f1a4 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fbb634421972d5b8e74f845376754976d854d13f552737aba968660bce67ab9 -size 7759 +oid sha256:0f05e56804ac1212ef47f8e015f5057b3ddfdb3ecabb03f0b9b48e74d4130031 +size 7756 diff --git a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_1_en.png index 9aab5bb2ae..01235592ff 100644 --- a/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.viewfolder.impl.folder_ViewFolderView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5f596f85ddd734cc0d8c27839db17b5d94d575ec71a28e5e431f43bb0ef3d30 -size 9417 +oid sha256:a421d4ba0c63e1c7fcaf2c9bc84a6c230b4bb51ab0c3c7aefd468b4f05077bbf +size 9420 diff --git a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_0_en.png index 17cefd666f..8842985824 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:215df53e6287ac32df6ec3a4b910a40035c8a516e89bdfc7b23aa1d45320ab78 -size 8285 +oid sha256:7e17dcebe83d7d50e6cd7fbcfd784e31523138a5b6b66812015edb83c0f8117b +size 8303 diff --git a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_1_en.png index 815ac1db6d..626008fa6c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:848f7d81f4bede07d697ad326a0d23845c8446ad49cedc81e985044ad4b45a5c -size 49048 +oid sha256:de56ceb6ae4d4accaec97891cca6785a0ee02571748f83b9fa83b8b10582dd81 +size 49075 diff --git a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_0_en.png index 46a95f8bd7..29280f0e89 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6bfaebba98b5b9bf083e5d29eb9a2a835ce774e26956b582d01b54a1799e507 -size 8172 +oid sha256:82a7e0e3ec48c4b3eb1644bbf7b0c778f39f051297f1e5394a4511f6122640a2 +size 8154 diff --git a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_1_en.png index 8a250d9439..6742836144 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.accountselect.impl_AccountSelectView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87003f7f0c981f0fee9f0773914e2fd99e18f1001045c13f52bc33dfba2905d6 -size 49941 +oid sha256:109e7536b35f9396266b64fd84083bbfddc82caa47de3500bebe4cce9a71d1a7 +size 49924 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en.png index cf50ed4785..c841a032ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdfec762d99767f81e9a9d1aae0a26291715fe8d9b4e4e50174a85ec6e982273 -size 7042 +oid sha256:ae006adc82d337fe478f01233e7890f583b93470987b69227666aad4c7749a51 +size 7037 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en.png index 52254b6eb3..a81dfe7f9e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomInfo_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7ee1c0f2d9f0334776ed810095658a85c701b89ca6cb9d083e5a89d1f7802d9 -size 7128 +oid sha256:24267c25c8b258355b9651f71f1446ef2dadc5c868f56d23f63957e9a2db88b5 +size 7134 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en.png index 7c2b773885..bf2102f292 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74fea2953af839c4ac12186efceeda14e45d2a84ea20f28814323d873c8383d7 -size 6261 +oid sha256:fdcd618bb02d25de5e74991b69dbe665591e4d6f47e0445204104ba6d5db3748 +size 6241 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en.png index 0a689517c5..22633e93aa 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNegative_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:025bcdbd6e2a04a1a08dd31f676005dd1ea3f74a5b67fc3ed79570a9ac8733b9 -size 6356 +oid sha256:ce1f2cfc4a0c41a528b1ae190c773ff9402f3c8f0c84149ad05d2ebccecdeb38 +size 6360 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Day_0_en.png index eaec9e3318..73e03f01ff 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d031bf5a32c96e705bca293970bab93020c0f930ffba447020182fa2cbb9cbd +oid sha256:7739f13ad8e137ee805e7b105c0ef2caac23f6cb57786f9259eae65ea45d8a5e size 6524 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Night_0_en.png index 3bb3765ba4..53d3273210 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomNeutral_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f3e049ccb735894178c131b47b0a89a4ebd51aca9b5c06b6e5c90134194af2c -size 6535 +oid sha256:4afdd017461f6fbc84d6833401bb929180c858c1ba256167f7fd951cc2244c31 +size 6546 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Day_0_en.png index 36179a81b8..06e37b48fd 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7aabda5311fc84ec8b93ce5091afb6fff175c23ece38c7eb05b9d5d6f59ccf2 -size 6102 +oid sha256:43d5485f54806c93c3801c9fdf430bce0786fb0f17a11f17b1f7b4f14fbf1021 +size 6087 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Night_0_en.png index 239ab412bc..2fa9e9f05b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_MatrixBadgeAtomPositive_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cfb78c9c2eb2219adb57e05eb3ffd28699b3726cfe3c3af551addcb27bfa52b -size 5891 +oid sha256:b7b729ccbd27f32162efe06f1f806d0483cf98b3d47175a0fbb7a88b2fb5e1c4 +size 5892 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en.png index 70f466737b..0803b25df5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ee6658e8a53951305707f8da51ea469c8b315358761271567f5836594f64e01 -size 5100 +oid sha256:b78f3742650bc7360e7a202ecdca5885b7ebd552533f2d4569f8524e17f6aa69 +size 5095 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en.png index 6af55a1b80..9bd84c6264 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_RoundedIconAtom_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a5025df3dca423d557dd5cfbb62d773de7fcdefeca035e5d9561d2e664f8824 -size 5196 +oid sha256:24486d441a36b9e9c7c8df6c8cc3c9b95fc11ed1fafbe3a90136e41f5630410b +size 5192 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en.png index 4cd52747eb..e59d661eab 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eda6f086863c3d3f7bc76448777768785cd69b1ac685ee1db8f95cacb3389a30 -size 5564 +oid sha256:f34d147a2d85f5e7286b093c292b53d7045becfd2acf2f30f5363f2ee7d1bd85 +size 5572 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en.png index 2f6a9869f5..e8fa213fba 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19db99b73c148ad3ffc6b5e522510b8b64a3ed1de3614510c58ba7f35a4a610c -size 5338 +oid sha256:dbb4b8c734cb9f62dae5ff81219d7d6a574ae8b941cde98bd9d864bc9c69b0d4 +size 5334 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Day_0_en.png index 249645ba52..38bcb807c0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43286e28379826fc82e9c0a2f9196785bb0e837a69e31e92231fb25750a606e0 -size 8464 +oid sha256:b496cf9908aaa3a37c666633b3671b67d4829a40265dab71d2482afd1fac8a01 +size 8454 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Night_0_en.png index bab3aeb454..e793e25ef3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e52968635ec1f068ebcbb63201838e0511c1efe25a4ecc84a119e566710dbcb1 -size 8072 +oid sha256:fd19d2a26f886af371b804580610f14eac3e688996abdea5dd6db84b148c3397 +size 8067 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en.png index 7acfef1c85..08373fadbb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff4b52db0af659348e97de3111c4fc47046466ebce156c9a7062191b0de895c0 -size 16924 +oid sha256:9ccf168c73e696ecaa0074462d7c571567a5e4d532aabda5e4c7575461ea6eb3 +size 16912 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en.png index 29ccae01e6..fae3956cf0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0243bbe48f099933fc6ef7d65f43b424ae4cd792514be973b067a3b70960d4ce -size 16494 +oid sha256:46701034efe3e8ca225dcf77777142e4b47b51a6e7cdddee9fb3fa440577cfdb +size 16516 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Day_0_en.png index e58a0fc7cf..77e37fc971 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae46c638b46cceb6d36e8aecd8c039c41cf684d12732343af220abb98172a700 -size 11574 +oid sha256:67aaa7d9e289a31b4341b8aaae35d49014f5ab73b32e2c9edfe9d9ef0133cf6d +size 11565 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Night_0_en.png index dd3a44d065..1f56d356d7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.molecules_MembersCountMolecule_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11799532cf664c735e06b4d2e916c40735dc2ea4069668e85e2da441d6ae362f -size 11213 +oid sha256:ef3a114a918b8b0dd7e748f4565d557eba345fc5c4510cdb2e59712b8beb73f5 +size 11188 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png index 0eec5f4386..528da71582 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a1aed2d88cf9aa8a7734a9af24b41d0226fb777e00f721b6404761c53277e48 -size 15620 +oid sha256:75a9f63b163ce8d61806e9e46a5336399fbbb82c0bbdc4b4572fe1e757ab627d +size 15637 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png index 4048246e2a..c501481057 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.atomic.pages_FlowStepPage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5bdff85dbd1d1443afa57dbce8406b4a085334c1b902890ebb8bc805302f1e5 -size 15252 +oid sha256:19f35361fd45c1dc7ac451449cf0c2523732d854b1e2cca632b51ed3de48ddca +size 15244 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en.png index 5675d2d042..841e849016 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4d63ff0372cc430ca0f346cb46554cc5a27f5d7cfeee3bf6bfce711fa67e01a -size 7665 +oid sha256:869e9a1a57a1b47ee817dd7041da38606d86c94648661d698bd04c38da1da73b +size 7661 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en.png index d94805fe21..c2864d2251 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.async_AsyncIndicatorFailure_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e30b01297adcad3a501c670a7155b6b478da30aa59a02cae5a1ffd512cd1ce1f -size 6571 +oid sha256:5c609a2d0b03bc0dc6f387c1d6741bd55fe69dc75b4d81388481478e7e0252d3 +size 6569 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_BackButton_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_BackButton_Buttons_en.png index 08ae0409d6..87ab3013d4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_BackButton_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_BackButton_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4c39706028f31019d08a8638e8d993cd4e190c20473e2320f0563d64266101d -size 5548 +oid sha256:900adc3273030b62725e4a81b903ab7d13eadbc5a055226765f1bfb5affd6319 +size 5558 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png index d540d63351..7bb9ad0c60 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d80f86924ec6e6f93d5bbd1ec64cda868a1384f011708065a242424fe1e4bdd -size 10516 +oid sha256:d78695ba9a688d64996fb13ffa27f2870b613141c3bc4ca9ae565fc97de00e1e +size 10522 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png index 77b472f79e..ac4762f9c9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb5d3733f0d79bc2537e4bfaa88c5408ca37bc0187c2c152b0bd2a7c211647a0 -size 10475 +oid sha256:35b75a3b70d0b8b5d1279b99ba715150ecf8a8d64f8961c69394a7f7d6292d18 +size 10485 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png index 1b3a28226c..fb1b6f0d0c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43cb38a1e4eedf30040d18047eaacd68c205182bd2e731b020c7bc1449ca26ba -size 10577 +oid sha256:454d022bb76f1469ee071bac71d0b2a9061ed2f97390abe591ba17dfb194b98f +size 10576 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png index 97148000cf..8df3db1483 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33e14ffc50225feaff57262343de3e8bfcace194184aa8738f12353f4415eb0d -size 10530 +oid sha256:3c39f527f535195124f0720f598df65665559e91fd6f2dbf35e17f9e71c25f6d +size 10533 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_MainActionButton_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_MainActionButton_Buttons_en.png index b42ba520e0..60fa4dbf16 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_MainActionButton_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_MainActionButton_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:754fec886b601953d2fa1a506639e2d723080151fbb681227ba6abc3a0f07dcc -size 22057 +oid sha256:d8e032c741493a4e955f125a1b9e63673ff41ce3bcb102193dbab127e9a22685 +size 22062 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en.png index 68c1434850..1dadf54d84 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f6a751ee69ed1900f1393d3237fec689057848198b05c03bd63009d3df3618d -size 18160 +oid sha256:19d6e6d0a50bbf00ed4ea7ae90948638204274b9be9282012ed522068db0f4e6 +size 18161 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en.png index 66a03d03b1..cf2ac10757 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:afb6ce554b0792aecb5ea97cd31b2f43ef08b79a7dbe3e61e0501f108d339be8 -size 16611 +oid sha256:98aac477a21522632fee596839ea71d52ae01f494ca91204da34a00120fead7b +size 16620 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png index 2557649364..1d6a5b52a9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30823f256c71fec1ff322e0b0a199a86c943e107b1bbd89e8022415bdd8d6650 +oid sha256:cf28d2f2f6881f4abf14fe8228b05cbb9194685be7a1bbb14832932b302bdf89 size 22324 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png index 840d7f173c..5b56b809ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferencePage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dba519fc8b2d87ceba9cb1cb6759946e8d09b7765fdf07dbf6949a3e3d1cd649 -size 21569 +oid sha256:b56433b754cdc8bb335acc1ca97acfe7c55474976f657b984f4f34477e2f9dbd +size 21555 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en.png index 6f225a09f6..9a7c6945a3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceSlide_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df629f6b4e0e245a3dfa751b100a695a4d076d64b4bc4b73129720dc5a30d574 -size 23715 +oid sha256:3ebd14965659606bc2a4f250062e87e179ef38a6bf5d470192bb91dc74f3c1de +size 23697 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Day_0_en.png index b07c496207..1660420157 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0857a81b5b9189239fe4ab1c3f18bd4c7549ffc375419531fbc2269ab29693bb -size 27206 +oid sha256:2abaff032b182aee8a4b156583086b163214d776186ff903088efc6eedd11532 +size 27135 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Night_0_en.png index fe71677aae..eebd7e7048 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Announcement_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee22afa3065e722bc4d9ca517b75e36f3cd8ded33566765ee96146a001025ca9 -size 26115 +oid sha256:f0f327a74f4b6e2d1589a65d9c367eeecc711b0d069a88f7dcb83613cb7a0731 +size 26071 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Day_0_en.png index cc01119ebc..dfbf9ff253 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23b038ebbafdc49692ec30cbc1afc30b6dba35522cef46c848236e7d71f44678 -size 6023 +oid sha256:6b0f8614dde547fb8e3ae607840e97dbd33f9d0ba179174a3b22dca715ee18a1 +size 6025 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Night_0_en.png index 3c6c5c97fe..1009cfd194 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_Badge_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7535d05038c0072747472f937bfb754d387475416c1adaf7a8f453f77ed46aea -size 5853 +oid sha256:b7382ba4a96f23194e5ba732e600b9f8571f014085b98ad5e450f020f07959fe +size 5854 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Day_0_en.png index f21a3f2af9..cc09282faa 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53b8ae4ce5ad4a73070ef42b486656b5d9d96e9f0a2612375c54ef1f3203d097 -size 14225 +oid sha256:3ae5556afe4e26f417c598e116dee6c7c913fe668a15ec2d98d2f1ed81b5371f +size 14269 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Night_0_en.png index 7ae8c76155..fff990dc70 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components_BigIcon_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22196fa49991877eaca7cc672a5de71b2b93689a788cd1cb28b2b9d6b4260a2d -size 14387 +oid sha256:7ec9f20978244f8b933140f074bf586a174b9448a602294b95f4773ee7758323 +size 14406 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png index 506fda7126..761c7dbe49 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e989a1e07885d04965cd7d8e27d6fc3510b2f35f7fe1fa2a6a4c1423cb1694b -size 67654 +oid sha256:5c68e00a3f0697a9f179fe8541876fbd371da1d8b55e72c02fbb92d64814863a +size 67653 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png index a6c94e6481..40bafedca7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8acc35da7fca7546fd87b3a034f7f89ce061fce8c233c95ecf91ec705fe53b25 -size 68602 +oid sha256:0332e0bbea7856b02adb7a660c758a313235351891428fdfb1816d0fa26df4d6 +size 68540 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png index 30ab75cd1d..a7a65b89fb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f0862af225594eeb5917d0dce704d9ebc0de5c451671831f040c2656ca1902 -size 73062 +oid sha256:4c798bec96147f50016dad808d51de76c24339a8b9afe0119993dadd7dbff845 +size 73047 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png index 6a5b127085..0458ab3442 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d44c135cf535d0f6e78f963a5818b3d66f30ca04eface202cdeb9445edcc345 -size 73798 +oid sha256:5cf492cd78477c2ce4c296fb6baa2af8baed6549fb51f58c06da9d4181aa8ac9 +size 73796 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png index 891496f2e2..091df51555 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20ff698d49f884d1ce0689f905e8c23a9e7ff0a9df8ef468124d211533bbb7d9 -size 73225 +oid sha256:a3ab14628f86c883effa49f51c02255a96a0050a9b4261322b2cf596ed5298ed +size 73233 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png index b007ff3c74..06fe965ca2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25d1cd2422793161383726071583996f36343f4e8f0e2a1c365f545f8eb82692 -size 53757 +oid sha256:f2151c4bbd49af17c8af90b946c94ec40b3f51edd25157abc5e87e1b4f7b7922 +size 53698 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png index 9eb972b8e8..30e8ec09d4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6db17e80da0519b6ad31ac8b8502dfa420350c1b6a280cd945faab2f23b1419e -size 64482 +oid sha256:50113ec351ed12a7ee31b5b9333dabbcce242bf762d9d09d41301484e04f33ff +size 64549 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png index 227ff94ca2..3098aa900e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3a8bf43c5d6e7636032ac14eff16e0e5a377e72a80f8ecb77b07fdce2a7df79 -size 65167 +oid sha256:78f6f70dbc14f5b035f6f7d3cc042328be0894771443f188c9bf5581e40bcf59 +size 65190 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png index 3c1cb3014b..c9e430c3a8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f17e77bfd58d34898ea96f1d8a66d98eecefa26ce6b1ed4785015d745e5011a -size 69691 +oid sha256:cab2c2d5b07a795080fc887c6c8776a9a8630d9b2f6e5fde7ebb9f5f462fc41c +size 69708 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png index 92a2304046..8b1e249670 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f445434c56b7a4afeff5ee248365e20894d595b803da95ebf1785cad9ff331d -size 70653 +oid sha256:ffb53277e999c57096a8d11a03b2835d30ba7f0e8b83db85d5d1a417bbe35502 +size 70680 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png index ee83f61320..1e290d9420 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98f1974a902f46a80094143bc22b344f2c5a447a4ac46647c117806202014be1 -size 69760 +oid sha256:d21b4e71d6d52f1e9d844dbff96dcec86f5a04871b861ce0b619f173edca66cd +size 69772 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png index 30300962d2..99c55da156 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:320057558c433d8b2b1595734fe9c3121b2a518cba1745519c1632f9f5b0c267 -size 51847 +oid sha256:f209a674db2371d1e85ec2b6d92468f92595f6b87948db19dd7aba8432221b67 +size 51793 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_AllIcons_Icons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_AllIcons_Icons_en.png index 1ca5f1c742..d91c25f8b6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_AllIcons_Icons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_AllIcons_Icons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c327e27f5b471a9413399818482be76bccd87fd5f2a9c53e312d8900587b069b -size 102657 +oid sha256:5a9147ee3d19edc25ca2723ce63fe0ceea0d071a2c2aec27f0035c862ff216ec +size 102540 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithTitleIconAndOkButton_Dialog_with_title,_icon_and_ok_button_Dialogs_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithTitleIconAndOkButton_Dialog_with_title,_icon_and_ok_button_Dialogs_en.png index 2cf052b576..e6b39e1de1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithTitleIconAndOkButton_Dialog_with_title,_icon_and_ok_button_Dialogs_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithTitleIconAndOkButton_Dialog_with_title,_icon_and_ok_button_Dialogs_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50b7926c50d08fd36aacc31deb1ae4d8dc61de4b776e4eef9b7cda3a2f1fcde7 -size 53541 +oid sha256:2ae04ee0b1958295bbaa6df125ad733c25c7bdf4b82e438184d1639beb02df7c +size 53540 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithVeryLongTitleAndIcon_Dialog_with_a_very_long_title_and_icon_Dialogs_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithVeryLongTitleAndIcon_Dialog_with_a_very_long_title_and_icon_Dialogs_en.png index 460e856f24..9d4f72b9ff 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithVeryLongTitleAndIcon_Dialog_with_a_very_long_title_and_icon_Dialogs_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DialogWithVeryLongTitleAndIcon_Dialog_with_a_very_long_title_and_icon_Dialogs_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b77f17f245a60b74cfff9e28cb0f5d0251172332582e00f6bcf2767c867bcd8 -size 56167 +oid sha256:372484f28b4a118537d4ecb8ab96710749079e4808b371de6db6ded8d3c43550 +size 56165 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DropdownMenuItem_Menus_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DropdownMenuItem_Menus_en.png index 0cdc99e554..5bc5604946 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DropdownMenuItem_Menus_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_DropdownMenuItem_Menus_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3196d24cfc2177abd434e1b391591c3c897799f47364ba90e9224b42509ee868 -size 23961 +oid sha256:24127d724d2ab089349bcb850faac947921a138a92fb76442d120dae05443843 +size 23916 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLargeLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLargeLowPadding_Buttons_en.png index f315a15773..d18fd21f6c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLargeLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLargeLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e804de1e6096152847cd7eb98cd1edefc5fb59d7819605f7f7d35fbfa87959f -size 65199 +oid sha256:0f9370fb4ac3675cd697525505a65bcc408d65ae995ac42d5d7670f9313af3be +size 65210 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLarge_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLarge_Buttons_en.png index 7f6eafc68f..d7b647a866 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLarge_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonLarge_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ad35c36a82e0052ca7d4401942a7f32ccb29cf1ba22c6960b9d49f08f10f96b -size 64209 +oid sha256:3db0470da11b75a2d2ec76f687d3c549c977442cf478310981051ca99e39af04 +size 64202 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMediumLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMediumLowPadding_Buttons_en.png index c65f5a16a5..0f92e77522 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMediumLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMediumLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9bd3008a33847e7229eac98547b7c90d12e96ff1d45db2ca7868d7e4af484d8 -size 62056 +oid sha256:4fca2b5ef83626dd735d5b5c6bc1c188b1e3a0ae0fd72db7db3d317d0a11fc77 +size 62062 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMedium_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMedium_Buttons_en.png index 3552823731..5e9d98b596 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMedium_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonMedium_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1549e5f950197e479c488a08d5a44412a8d30fcc1f65e4e8683254c0ebf0a03 -size 62153 +oid sha256:1698f1f5db4a220dd552f1b90053690b19540162bd6760b0a5de31930b0d1ffa +size 62154 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonSmall_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonSmall_Buttons_en.png index d64467d879..a0449f3af3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonSmall_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FilledButtonSmall_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31fd18d9606fa892925390428b334ae7b11460ac3572dfba805217f520322e0d -size 57411 +oid sha256:f4b525788d3e4bb5215a1f17874cc963b3df8967a6baba355d11c36d3185083f +size 57420 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en.png index 0a5467f1b9..5f43309327 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_FloatingActionButton_Floating_Action_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc777f37cd988e577352cf542333f4977456351d8b67220a85d6d1eb810ab90b -size 8896 +oid sha256:b47273874bf76a6d3bc7562d50028bc13f4ff63d2bb9349aef113092f12f836b +size 8845 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconButton_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconButton_Buttons_en.png index 7373bb2d4a..21926e9ae0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconButton_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconButton_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22dab465ebf62d804858c504efcca8cf4128a2e30495b149e5f8d3e4dc2de06d -size 7995 +oid sha256:70d97dbef9b05bcf673d3e3ba74889bd13652f0a0ce0b5c9ac82b7c63fc4f389 +size 7875 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Day_0_en.png index e3642b3e2a..2f2869195f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fcdae0f336a9ba65a850176cb197e720f46fb1a64d3a5797123e5ca330fbbb6 -size 13195 +oid sha256:9ea6ab6f9abf7f125565559770ff45d917f9a6fba7ef7862433a56703a4d9fe0 +size 13186 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Night_0_en.png index 1918ba3d11..f85a5cad7b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconColorButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:babc8acc92efbb0ca5cccd796da82905db071f83c9e29bf24e9ae8174f1e5e9d -size 12574 +oid sha256:27b481f43d211124fa2872aae6494e5869d42c7ffdd9b872a3133c3d9e07c8a9 +size 12578 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconImageVector_Icons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconImageVector_Icons_en.png index 1f9e838b1b..c1797959de 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconImageVector_Icons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconImageVector_Icons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f174cb08e4c10df2d2cffa79113f4a175b6e2b34298e1a725b649f10effa36f -size 4879 +oid sha256:fa3dc00441564fb1187842d5b37aec60d23fa762023914c5d0cd62a3dc171996 +size 4799 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconToggleButton_Toggles_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconToggleButton_Toggles_en.png index 4497d8f376..bceb05678a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconToggleButton_Toggles_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_IconToggleButton_Toggles_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:066a52c84375cba3ff9022c8434f4bf7617b8851f7add39948787837d5e81bf6 -size 11200 +oid sha256:88c2d0a5a8d79a9db063c5e5c9686c562e92a63171ec133cda42fbe380faa2f3 +size 11160 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en.png index 3259009885..8576cb03bb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemPrimaryActionWithIcon_List_item_-_Primary_action_&_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e19af48563d04515fb0f5c746fcff108c0f5be715bb7cb7312209a8ed7c59f6 -size 13439 +oid sha256:800baa3ebeae5452a023732ab12c2269dd03ace19e53dbfcef5414f75cfc7976 +size 13481 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineBothIcons_List_item_(1_line)_-_Both_Icons_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineBothIcons_List_item_(1_line)_-_Both_Icons_List_items_en.png index b0a0ea4f49..89656e8a9d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineBothIcons_List_item_(1_line)_-_Both_Icons_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineBothIcons_List_item_(1_line)_-_Both_Icons_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7592fdb6022b4e92def174804a60d77187f4b1c6b8ece968af5834d880b14d66 -size 16855 +oid sha256:124e4f053e4adf11cafda209eb7201a3f67399409f14bcf3324c08f568143075 +size 16854 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineLeadingIcon_List_item_(1_line)_-_Leading_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineLeadingIcon_List_item_(1_line)_-_Leading_Icon_List_items_en.png index dcf10bf9fb..41b9617d30 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineLeadingIcon_List_item_(1_line)_-_Leading_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineLeadingIcon_List_item_(1_line)_-_Leading_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97e369f77ad42a5c48a3ead324bc6ca560b01782df4313499c8752a9489f5cb3 -size 13657 +oid sha256:73298ac971dc5a550763d6d2b99c6109a24b21561c92715e0cb0d5578ac8a233 +size 13679 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineTrailingIcon_List_item_(1_line)_-_Trailing_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineTrailingIcon_List_item_(1_line)_-_Trailing_Icon_List_items_en.png index 5242011ea0..b85a1e0c20 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineTrailingIcon_List_item_(1_line)_-_Trailing_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemSingleLineTrailingIcon_List_item_(1_line)_-_Trailing_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b463737774887ce90ebd0f360157544213c509dbeb0c7afd6ce0ac7f30ebe049 -size 13281 +oid sha256:660e28a3ec00c0b2ac50a4327476b201f5db406c1b484ae31e59132302df9275 +size 13286 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesBothIcons_List_item_(3_lines)_-_Both_Icons_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesBothIcons_List_item_(3_lines)_-_Both_Icons_List_items_en.png index fbe78fe9f2..54e9faa5a9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesBothIcons_List_item_(3_lines)_-_Both_Icons_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesBothIcons_List_item_(3_lines)_-_Both_Icons_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d872527198e3b0a2d01e0a0c4b458d5a027cc39b2c9631568d01337be139ae89 -size 47339 +oid sha256:0260e748da7fe9c4ca391ee22d1e992a8b6627a965083550d7749d51edee5d28 +size 47311 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesLeadingIcon_List_item_(3_lines)_-_Leading_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesLeadingIcon_List_item_(3_lines)_-_Leading_Icon_List_items_en.png index c5c8c6a023..100eddcb9b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesLeadingIcon_List_item_(3_lines)_-_Leading_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesLeadingIcon_List_item_(3_lines)_-_Leading_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbd92aea23bd56162d5dd1132256fef62867b0bc9320ea719367f077456db020 -size 44288 +oid sha256:b72addec29ded5f88d608dd453d2a70b77bc7fe74c08299c89d5112350e95ae3 +size 44302 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesTrailingIcon_List_item_(3_lines)_-_Trailing_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesTrailingIcon_List_item_(3_lines)_-_Trailing_Icon_List_items_en.png index 91b6d75dec..45180e57e9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesTrailingIcon_List_item_(3_lines)_-_Trailing_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemThreeLinesTrailingIcon_List_item_(3_lines)_-_Trailing_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e29799e083530f4fdaf8b485b5fd9ecdaea272bdaff2fbb356a9cb5d85323d62 -size 43816 +oid sha256:ca99f9c448c1f6dd074179bd1c70ffc4489cbf40e090ab7fb98515d0d0abb040 +size 43806 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIconsError_List_item_(2_lines)_-_Both_Icons_-_Error_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIconsError_List_item_(2_lines)_-_Both_Icons_-_Error_List_items_en.png index a0b32b7bd3..430bbc5b1d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIconsError_List_item_(2_lines)_-_Both_Icons_-_Error_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIconsError_List_item_(2_lines)_-_Both_Icons_-_Error_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a0f6ad27fd71f5d522f539430192bc3ff85298b46c24eda0d9514d8ef52c647 -size 33921 +oid sha256:f455aaf6200b1b6ebb96e1839fa4d247879adc9411d72daac50b7c3204c6858c +size 33965 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIcons_List_item_(2_lines)_-_Both_Icons_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIcons_List_item_(2_lines)_-_Both_Icons_List_items_en.png index 8d29359573..94d63fe1c8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIcons_List_item_(2_lines)_-_Both_Icons_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesBothIcons_List_item_(2_lines)_-_Both_Icons_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b7ab586c04d9e61042ab4717dc749bca53a2b47f7f97ad11c23a70135244967 -size 34121 +oid sha256:e00eee4f28b535ce3946f2d2e9d12db7c4deab57fcf6407bba793e860d6cbdb4 +size 34145 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIconError_List_item_(2_lines)_-_Leading_Icon_-_Error_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIconError_List_item_(2_lines)_-_Leading_Icon_-_Error_List_items_en.png index a125ef0d62..ec8b4fdb32 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIconError_List_item_(2_lines)_-_Leading_Icon_-_Error_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIconError_List_item_(2_lines)_-_Leading_Icon_-_Error_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e6c59a456e2112d6f6c6a93e401104d4d795d7c2bd612f0f571ae6a15943d5f -size 33661 +oid sha256:bf2e832a78b29dc39d73c9de3a5e0c9802a6e92edfc5248adf717d583d2b6172 +size 33675 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIcon_List_item_(2_lines)_-_Leading_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIcon_List_item_(2_lines)_-_Leading_Icon_List_items_en.png index 297af9fdef..bcd31bcfec 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIcon_List_item_(2_lines)_-_Leading_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesLeadingIcon_List_item_(2_lines)_-_Leading_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:332f2f0dc558a5b71afd2d1dbf96cece78961ae954d5965979a428cabc1f762d +oid sha256:f0c4504df26740535e7c15ef97f0f25c9a2b4304489f26405f1dcbf59ded144c size 33694 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIconError_List_item_(2_lines)_-_Trailing_Icon_-_Error_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIconError_List_item_(2_lines)_-_Trailing_Icon_-_Error_List_items_en.png index fa05321204..0f4025784c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIconError_List_item_(2_lines)_-_Trailing_Icon_-_Error_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIconError_List_item_(2_lines)_-_Trailing_Icon_-_Error_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0af11f2da1501fecab5fef763ff79b393be88e0359bd4eb71fa6f7be2b8f4631 -size 33736 +oid sha256:a3fda2ef1786dd0032e8f4852edc0716598a0f8e9fb1bb861df1239e5c44f89b +size 33750 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIcon_List_item_(2_lines)_-_Trailing_Icon_List_items_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIcon_List_item_(2_lines)_-_Trailing_Icon_List_items_en.png index 53661a204b..40aa4dec6d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIcon_List_item_(2_lines)_-_Trailing_Icon_List_items_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListItemTwoLinesTrailingIcon_List_item_(2_lines)_-_Trailing_Icon_List_items_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c84a8325572f7be5e135c99ee9c756b19ea8fc7be2a72dc54c9ee701f7ad8bfa -size 33758 +oid sha256:5d742eb8174941d7ea865f0e2e5bf32a755236bc76bdfa5539947945c5ea0116 +size 33784 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en.png index ec8be9c856..6a6df93690 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_ListSupportingTextSmallPadding_List_supporting_text_-_small_padding_List_sections_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f208f81f498f7a7ad3b760680b1a2b669b3ab1564e3f91753c95e8c4c89e56cf -size 25450 +oid sha256:c584f2f82c3db78de6eea29da448b6c3288bb94cfa7ceb65ae78ee178e365302 +size 25448 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_MediumTopAppBar_App_Bars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_MediumTopAppBar_App_Bars_en.png index a4d0a06bc0..2b321bfabc 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_MediumTopAppBar_App_Bars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_MediumTopAppBar_App_Bars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6316f9ec3deed8292b490e01861a422c97f7e410706b36b4dac24bce609aa39a -size 11509 +oid sha256:3385ce3bc23cd8ab410becb8bd9f49b1f570f8975ece14ed71593afbc0f05d97 +size 11532 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_NavigationBar_App_Bars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_NavigationBar_App_Bars_en.png index a294edbe84..0841a444b4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_NavigationBar_App_Bars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_NavigationBar_App_Bars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4e6b8e8d8bbdeee56bcc5758ff186b401b35f3c6f964063fe596007fda23c51 -size 15957 +oid sha256:51e76d99bdedc944982d95de63981e76feea07f0124cb26d0e586ecc8cfd8e06 +size 15948 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en.png index d40cd42dc2..26f8cc1363 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLargeLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab23e66fce9ee176c9f5647ee8403c10c9b65f188efff073511a2b7915e3d2b7 -size 78535 +oid sha256:7a87da5ac79e11324a01bd94f334cb895c8769c6bfb5fc7d2d51e2f600baeab5 +size 78537 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en.png index 15563d6e2b..4d8cec0447 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonLarge_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb0137fe289598ac693f97a840a13ab197d3283f8589fe39f0a26b29950cf41b +oid sha256:dc1bec4de6bff3007700e08da729c1dd222780856677ed1357788e3d72855af2 size 77771 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en.png index 469ff2bb99..419a1a0a4a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMediumLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9ced7a16c1a97f322297a9049f117c1af25f8d1fd3ee4c8c461a5c2b43b81c4 -size 74291 +oid sha256:c45084fa5cf6b886d3cf5d807f0964b16f4831da66b72f34d9fbf38f68ad509f +size 74292 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMedium_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMedium_Buttons_en.png index c156f18785..1b582fc2ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMedium_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonMedium_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c647faf6c8912510d8df230c2ac6b8d9dc68554fe9dcbdbda9ff93723260ee2 -size 74708 +oid sha256:31b9a2ed4ed34d6b72655dd1429b2133f9a27b9e3bfeeb8bdd96e6b6eddb9587 +size 74729 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonSmall_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonSmall_Buttons_en.png index e2270d7843..312e07d72f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonSmall_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_OutlinedButtonSmall_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba567c28706dcb405326dfad2be9f2291dbbc3b09ef89a07e151f80944972ce2 -size 67575 +oid sha256:6c7d180bd42f6c3afd611a6961c2a653d0b43f97456729930a08c6da59239ed6 +size 67614 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en.png index 8cf6b80af0..83816f92c1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveNoneQuery_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86b5a42065e44ee7f5e97a069bbc488e12141cde8f6c128768cb9f807eeb05b9 -size 7499 +oid sha256:05537901af85652cb107574ff58f288f77da0187300c64be26f916e80f555b24 +size 7484 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en.png index 63ec7731bd..feede5b4b2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithContent_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d76124b07583e65a46df8a18b633761e17f0f96b2b351cdb8ded5a7a7dd351 -size 23767 +oid sha256:34b2560572a5f5e73b214852266b2564fb4b9dec0f772d69e49b3faac15794ce +size 23700 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en.png index bf07e97661..37132539bb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07cb265b59834326e52b90e6c99b5fcfdbf745c332d899e5109f2c8957c61934 -size 9135 +oid sha256:5f47bc964a03cd58dfa956ebf3c6f00f52ade114e58af3de41ebb2759fae50ec +size 9073 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en.png index a261b1abe4..afba740f62 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQueryNoBackButton_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04d64bab3ca9a72dc261c3d1abb8e559671bb4e797055e8167923a06d3a110e0 -size 6861 +oid sha256:488b8a97fefa7b756c401bcea298fbe6c5320745b87a1890f8701e9fdc59e16d +size 6837 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en.png index 42713989ce..b03fa02885 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarActiveWithQuery_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9e8d5e58b67b063d557077bcad90ccdd0e7257ded27dd038e9a59fd1e595923 -size 7211 +oid sha256:9a9bad17542efddc6c24ffc390ab5336bb31ee7d50921f6c604464af084b5250 +size 7150 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarInactive_Search_views_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarInactive_Search_views_en.png index ffe44a90de..82fadc5a8c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarInactive_Search_views_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SearchBarInactive_Search_views_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3741f1cad560c9d8c841a21d0177ae7ccd023fee426732a40678e9d271be41ea -size 12993 +oid sha256:bef9250dd682af6ff5b2e65f15367b038526db0a5d93afdd8d67b9fa5fb0aeef +size 13002 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en.png index 3c4e6927d5..d28d4f0414 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionAndCloseButton_Snackbar_with_action_and_close_button_Snackbars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9407099e3f2d3aabb2585b0b39779c6441ada04ae849b292847fa49c907970c -size 16866 +oid sha256:3c57305e57982f84d00f853b63a3c62d9c5ef2e910af0c699c3972de57d9ecc5 +size 16893 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en.png index b1d1d28cce..2610db5b61 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_SnackbarWithActionOnNewLineAndCloseButton_Snackbar_with_action_and_close_button_on_new_line_Snackbars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:128b817fd88d75ba2fb8f1d8da0f2c47ee706a601ef93d21bc13827abe567834 -size 17273 +oid sha256:3c07c093227e0f04866a3249b5f8624044a6093991b1f4d5483c52eaf34d4f2a +size 17229 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en.png index 7596bfb963..2a110b383e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLargeLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fef4e00aff0e4369ad4e3ac6fa37c99eb33857ddef14303850cfc2f8d3c9443 -size 43361 +oid sha256:47a29425bc68f38af6a41af6d4aa4db94ac703ea70c1d125b65f317043c6e229 +size 43367 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLarge_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLarge_Buttons_en.png index 81a01aa9a7..05dc583fe4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLarge_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonLarge_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af5c5ea5b405c26d0beb70dc1da280f89b78c050b09432b03b3f7665b4de507f -size 43341 +oid sha256:e64ab09400a3d77e6c72c84396cca1344968b94ae00f867b8cf9bdf1787fc176 +size 43344 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en.png index 7596bfb963..2a110b383e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMediumLowPadding_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fef4e00aff0e4369ad4e3ac6fa37c99eb33857ddef14303850cfc2f8d3c9443 -size 43361 +oid sha256:47a29425bc68f38af6a41af6d4aa4db94ac703ea70c1d125b65f317043c6e229 +size 43367 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMedium_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMedium_Buttons_en.png index 0c795d4c60..ba0d80628c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMedium_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonMedium_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb09a6127b664dd4d17d00461fbfc0ab9195e7f1305f7883640388d541d85932 -size 43483 +oid sha256:56c942e24776b1a4e9263a6864c8f2333caa0d7301b846adcd7cbed8dc79aba9 +size 43484 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonSmall_Buttons_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonSmall_Buttons_en.png index dada359eec..8a06106c43 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonSmall_Buttons_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextButtonSmall_Buttons_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c579046d25bd437f1688684961aed0037cd7a8b77c2d81f0c7acc15d2aac7ceb -size 43372 +oid sha256:d7d47ec36146529c3a96ff972f2ff847edb906274086977df5230771bf25402d +size 43398 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsDark_TextFields_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsDark_TextFields_en.png index 45760c4876..2f396f3d33 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsDark_TextFields_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsDark_TextFields_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:932bdd6212a18713ae43604a97401bfac38ec270890a5acf7e0a69737bd6b0bb -size 44568 +oid sha256:701e12262cc7b385524ddca957a29d91b2d6d8f3a2a1b9a69134306965ef226c +size 44579 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsLight_TextFields_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsLight_TextFields_en.png index 2eeb7396da..36c6d99110 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsLight_TextFields_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TextFieldsLight_TextFields_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21719aa977d940f8f54827515529bccb74547ddcac2d76f77faa03d0d018a10f -size 46317 +oid sha256:40186fef0c2ae7e5ea9c95a8743761b2e47fc7eaa255ba906eee41c34f498475 +size 46322 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBarStr_App_Bars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBarStr_App_Bars_en.png index ece6a425d9..26a49d5344 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBarStr_App_Bars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBarStr_App_Bars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1796e8ffe7e104b5aaed32df1e9d6e3261d954d0e44927dab2bc8514def4d36 -size 13370 +oid sha256:014b1b87b118180e8efd96cef9a0bbeeb7f861d8197926bb49f69756e0110b89 +size 13391 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBar_App_Bars_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBar_App_Bars_en.png index 32812ba14b..3031f6d8b6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBar_App_Bars_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.theme.components_TopAppBar_App_Bars_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d02ce8d8faf7d0fe5c0fd7383aba5c01b71f4e424ef0ba1f44f7ecc8a62d49a7 -size 10938 +oid sha256:5e2d057f0811b3ab49e4087d0a9128bc577d074f346c47e6e0751f1177830846 +size 10962 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en.png index c2798576cc..185afc0b98 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37367f6c760b1d1e30008dd0578beb8585990b9d651739fea9e0b4f61eee211f -size 4294 +oid sha256:d1c2d43d306fe8cc4ba77ef19ed1f47651a6b339c7b7b7a126d110662c5ae781 +size 4284 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en.png index 4f4572f9a8..29decd57ac 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:355c88e8a8e5f50d829158d23ec74467a4ed8b325d96d2946b0e3c404c0a9ec2 -size 4266 +oid sha256:dd841b8f21782e401acbb18da803da41c8f20abd97eb1b8c9ad9c0ec528cd208 +size 4267 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_5_en.png index 35112593fe..ab1743f7cb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4d613ab80fdd9dbda8acd56990c6a812f4596b08fb2e81168d82c9fe48382bd -size 5143 +oid sha256:381bba0773a9b6aacb21d64e7a495eabb3fa50818f2fff6ca3b373283bd6d1a5 +size 5135 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en.png index c4a5d4ba69..e9056ed60c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de68bdc8abe559fd0c95c39c58701df0b28b33bc7ef55a6a06b1fb90ab0e0c39 -size 4504 +oid sha256:662d81fca46d18cf38dc6a3e2bb582c852d6ef08c58c807c4b63bde60bc93703 +size 4501 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en.png index 0d055e246e..e590c9cbba 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d644702e513b57c10005e6c72986d4095eef049796c42c7541ce8a50e83ad9b -size 4175 +oid sha256:e13b3a9a92efc92abb20a2e73f5308e23c3248424cb9b3d1181501266dfbb1f0 +size 4178 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en.png index 1d4452fd6d..49ba49169b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60a195cd0b61378623ad69c0ad132f2e2136935aa59afb28ac098f3f74b87508 -size 4326 +oid sha256:afb0435bd7404a79852013d0f2c82748b8c3d88e829aabaf2fd018a229855955 +size 4337 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en.png index 339e76aac0..8616d4677f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8bf63c828e640fc34beac9e225bc3bd9430a89a974277a4fb7e5ebdf48389366 -size 4338 +oid sha256:87a54d09f804574e44b5eb07392f31fe08ae9634be36d64dc0f2d8722c1dc2f9 +size 4337 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_5_en.png index 974f6ef22c..cec5f14819 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee6be33f193245be5854ca9084e95a7bf19f32df0a576b2bfa434de081287ace -size 5029 +oid sha256:48e5de65ab7b65576def19cf8985ff5d4caa6039c75dfd13458c0c0c164f9b09 +size 5022 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en.png index b64681cd11..bbd1c726c4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5674d48a145f3f42861fc915ed5e48498b7a405b865b7941a0531b8e50bac64f -size 4549 +oid sha256:7a155ad497108facd7731dd23d9bf4535d9138bcb3e070c645e9b9010b8a81fb +size 4546 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en.png index 429a4e372e..30a0f521b3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AttachmentThumbnail_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ca79913f4a1837905107da8212d7f5333c8f4f445032215fcbcae3ccf5c8877 -size 4237 +oid sha256:1c435893724c7c694c5dc91c26704b31c4d70d134a8c690944dde90d19588a3e +size 4242 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en.png index 9fe526e6ad..02ba68ce79 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:514bda9db756e738e602f79e1ff24625a0cf2823202bbb079edd70592e4fcf3f -size 13581 +oid sha256:cd09e66348dc5f79b612423b7ee37944988a8f0bc4e74287f8da55a627a4334c +size 13588 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en.png index 4752e16c9d..df20f85bd0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2063df00c6a8c5b297fa205797dbfc3d8a9af02796556fdec19d4acfb9419c2b -size 12330 +oid sha256:f7bc602ca157f4d99df586537913291564b93493d62db0ad2ac76efd4342479b +size 12337 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png index 7b98ed1529..837bf8922a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableResolvedUserRow_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10796b9478b53030d106b092242b2fb29432306c975cba899a4a803468a102b2 -size 50455 +oid sha256:4e52b296963423635bd42274768882d3aa30a6f2865c18f3999356d9cc815154 +size 50445 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableUnresolvedUserRow_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableUnresolvedUserRow_en.png index 0bc23ac100..710791d0b0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableUnresolvedUserRow_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CheckableUnresolvedUserRow_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68571ead8897090de9308062686d608333d9145640214d0f5661d87460007b90 -size 108334 +oid sha256:c36cacfcdf856303fa981fe90271bbda2583d363aadd44b88eb8556d6cb09b12 +size 108348 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en.png index 6d4195faae..aa191c2f9a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7c387a07c381c29da66934014bf4e0536b2e5b03e83c9af57b8889ea0b2aafe -size 26343 +oid sha256:a6c3b5910b821eec3ea5758c6fc63401d6f06c0bf4d1f85e0b9bada848b87647 +size 26338 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en.png index fcc21fbb39..5bf22dbe5f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07a6c864d65542da0a35b9d39c544cb60f50a746bcccd7624c05b8decce78b04 -size 24497 +oid sha256:40385a6ee4da1d93019d6ca8fc916e652833edaa066c1a2d750e850873b3aa3a +size 24500 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en.png index 5934a6f8a9..cb19a41593 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab4f410cfb5052c5624de493f2579eb32790c8600ccf30aba356b6a0aed07cb5 -size 25476 +oid sha256:6b6ceb3018149a1f8b6f2902e5762490b91b6aeeed3c013e27522f95f1c45dc7 +size 25470 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en.png index a09e90c27c..277711dec4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:626b936e2bd309f4cbd76b9727e391ce263337b2c7653feb44f2a4e17ff01890 -size 23566 +oid sha256:89002b489a75bd2f131d64841eb9991dd6e9aa233d2d7cec5f14903f17cc60ba +size 23557 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_0_en.png index 4f781d4577..682c57cab8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9607dfe45474d0546ea5b5bf63fa52f79cebda5202ed1157b66ba752283fde61 -size 7147 +oid sha256:31664f09c84f66bca77ae15dc10ab8a9f57a8f4362ce0a1712fe47668950bb04 +size 7149 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_1_en.png index c7e796832e..98ff128b67 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e30386b76fa125bec2841b4e272a8859d12d9f40542688d79ab34c3acefa1d5 -size 9039 +oid sha256:0707b66e4f8766fddbe25137d6a252c467aaf0c823123209b1b4f087cdc7bcd3 +size 9043 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_2_en.png index c7e796832e..98ff128b67 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e30386b76fa125bec2841b4e272a8859d12d9f40542688d79ab34c3acefa1d5 -size 9039 +oid sha256:0707b66e4f8766fddbe25137d6a252c467aaf0c823123209b1b4f087cdc7bcd3 +size 9043 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_0_en.png index f0b6c0e466..8e4b2ed25f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a7b4deb6903b097ce5b14778817ab6769691a5670b2601d0e5633f98a270c40 -size 7185 +oid sha256:2fe15594310d1b896d669c3996d13331cc582523f907098cc21cd6cc06c581a8 +size 7195 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_1_en.png index 111d90028e..bd70020a2f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:add3b78f33e8c5ae9c1dc6f62619585a79983f3613986c14590cc52ad9f83e55 -size 9074 +oid sha256:c15b2c09da29467add42a143cdfd4f1b9b83e6f6f1a4cfb5fea423ed8b23eddc +size 9080 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_2_en.png index 111d90028e..bd70020a2f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableAvatarView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:add3b78f33e8c5ae9c1dc6f62619585a79983f3613986c14590cc52ad9f83e55 -size 9074 +oid sha256:c15b2c09da29467add42a143cdfd4f1b9b83e6f6f1a4cfb5fea423ed8b23eddc +size 9080 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Day_0_en.png index 7bff485c2a..7485fc9f9f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b9bd735000eda1054294863bdff79d32b391e1511f025bdc05ba4374be3f27c -size 31769 +oid sha256:dc14db03999322b373da52c04e4c0a7a72b60193fcc0fc6d7b60d43a4a3db9aa +size 31763 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Night_0_en.png index 8b36a5e259..5ceee6c945 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatarRtl_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8da76de0773fc62f7eb73dd16756d6ccad8229db121eb39d43f7c27d4ab8b48b -size 31339 +oid sha256:71c9ead9e5b797dff6ca72af5b61e0d2ed950c71c27ccdf6f297917b63877a6c +size 31332 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Day_0_en.png index 1771b0fbd9..297d746acf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a7773c27cc488967a4c8c526f4d19ca3a78e15c1efa2f7267881c2e9798d5c4 -size 31223 +oid sha256:68f0a2e19252402b60ad72f72e5c22959832952f42302b84c0e1f73d70c4546a +size 31225 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Night_0_en.png index 5b5950e4c3..447da51af1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_EditableOrgAvatar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b5b92e446d5968fb115e49b2b2337a46a9a7f43577413924e7a1b1f3b752646 -size 30692 +oid sha256:dcf5a478cccc4e3277c83c93961b756790d019c059908379ec534fd284262537 +size 30681 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en.png index 185c02ca0d..4ecf6b4fac 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:096dea8789c339ce57121433a5ab07e4a8a387a00c2a1a7e2cae22864e194884 +oid sha256:894b6a08f4eaf4f4fb00cbf60be72371bc0738cde1fa9712027cd0fae07b4b0f size 7123 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en.png index 8a801fee62..f8849c1283 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b7c8c2bb6fd65dc8309c5ce38620068064cf2b905f55024d45b730713664b39 -size 7930 +oid sha256:cbef8adcda2e7b47dccdea182182a04e6edaf0aa9db5343a4ea0aab42010c534 +size 7928 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_2_en.png index c7dab07045..462e611884 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5537f922d2c5ed7b9a0984c8fc59d0a8714a8fd8c59f8f3ccfa4d86c0c031858 -size 24427 +oid sha256:16051eecf7cedfc2c0f3a1d8317c7167755c785fd6a800bb006ce9196c43bc1f +size 24424 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en.png index ef8ef021d8..210a05a3ad 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc6bee8dae3dad28e9c4c84f83c0cbb869ebdab62e1a423eddbc1acf5622fbeb -size 7372 +oid sha256:7b400abe6cea733a1dd41e2edebc6aa82a93004a8f484b4964c0070ffbb5fb32 +size 7377 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en.png index 374c2c5d2b..34ca463991 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fdbaa1c4aecc9c5b8373d9ff22d88f8552ff40569961e246eced7b0cfcb98a7 +oid sha256:e4cd2beabfb995a84f838a1a23e1217e3e4a623d901e87b27a8c3f1478886fea size 7831 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_2_en.png index 14dc55610e..9fbceb155b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoomRtl_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c661596938da606edbf9bab7951eb7b15f438c8af52bc5b8f915db640ebe6bc -size 24098 +oid sha256:d0c3f72ba70ec33195c4e8df06aff88733469e78a1d02d94629f26eb08861ab3 +size 24101 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_0_en.png index 2daf359887..9a33f2f51d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddf94690a70ce16c5956acc02e799a9cf0e9a25a9e39e232ad29f62b7f42b10d -size 7146 +oid sha256:e3bbef583f2ccdf7671d8cc8132149c8c74fbdccb27187b482606c885a73491d +size 7125 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_1_en.png index 479ad32923..f101619144 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50728380e53730d17d11f354f0922ef7d3918d91952a48ccbd80d150b7f9a561 -size 8019 +oid sha256:4b544ba6d6f272779d8c1f6409fd1c106b72e4cec1e00825e68eb22cea8800dc +size 7995 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_2_en.png index 9e3acefa43..bbe9a3a80c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdb4e762013d17daea7a3f5694131b59e503cbe5a37f47512b6a7e4029815eee -size 24169 +oid sha256:0af14934a70e52d8490048588891b56f22b1950489f25b33dba7ec6ad27c437d +size 24148 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_0_en.png index 51083d077f..ef7a9c75d0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad290caf59b3b03eb0c67e228bc8e24da846e1650d7442f147a2e973caa44b92 -size 7430 +oid sha256:7af9dde38a9292801247c897a27d43fdadcda6ac2882ef61c3bd7917906ff0f4 +size 7408 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_1_en.png index 2d8b75a87c..6f6619c08e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7f2bb6aaa4385cb230884fcd41df28ac38a88e12cc30fb215812fca82324deb -size 7922 +oid sha256:453ec5dc0c49473114eba4fe94451acce6a97665975d58955d74e92839c61313 +size 7904 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_2_en.png index 01fa7b6759..67616ec212 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedRoom_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8a72f53dc0c94e364d094f2bf911e9d39777d51c81e02e384c868e03a3df198 -size 23860 +oid sha256:4f7d649e7a34a71f8fe9e7a70fabfebff796fdea957fd3fb8ed4be4a96a816cf +size 23836 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Day_0_en.png index 6c272ba624..6ae20a4c16 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08493cd3243d38eeac09a13e4fb5db97361bf5677db251cd4b5887b595379ec5 -size 7700 +oid sha256:74fda3a650543bf4d27b47b113069ab9a20cfd260887efd26a39f68e65c4ed6a +size 7702 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Night_0_en.png index 11ee6b2140..1a66c52f37 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUserRtl_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec043b99fa7a6a622784a17914369f499feef1818501e582c345c0ecd8a9f398 +oid sha256:d4fd3ba95e228e9edd73552c7502afd56dbd1084e8c1d978eb9aef007cc3464f size 8132 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_0_en.png index da73aeee9a..128ba4d57c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eca67b4cb2a2fd6526bf9fa6fd89b643fcd2c227c5abed2c4f32db81617130c8 -size 7723 +oid sha256:bfddc1854cc5b11a95578f78903498058083278d10fd46984f4dc010a6fd1852 +size 7704 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_1_en.png index 2db6c5ef59..f4465c8084 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8ae13a72c3bd657db2a1d927856d74103e5e046cdf22b7dd6b887f77cd19f5c -size 21442 +oid sha256:bad9eff7fb9ed73c5a9209cfb27fca88bf6b08fc8cb3aaaf5617feb9eb1bb82a +size 21440 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_0_en.png index 05a4c7f73a..bc51094b3b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71f623b4b4ffdd5b1be1e94e12ba908f323b809559f62b6c9948e2d76ddf127a -size 8142 +oid sha256:c1b5331c80177c6f983930dc0236cca4f2e9e8dd072649275085c20d617fac89 +size 8141 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_1_en.png index 9f2748820c..02e81d2e5c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUser_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e40a4a4a8db9c2b60b91bd1478c7555534d3a3473e06489d547925f8a9771b1 -size 21203 +oid sha256:e94f0bed02f3ae231be0826e8fc39763276aae016904246be18a672f8571ccc3 +size 21205 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en.png index 2e9cdfa5ca..4a79b0cd94 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c68ddf678e534f385f03565cc764c276a10b3af2a3292de775740157d1ca88c2 -size 66549 +oid sha256:6893f1c1afa4b85ace1ac89f63f8377b1e7df4910e0bf0095e090e839e797125 +size 66438 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en.png index 1b883b8781..1b8f1f6f6d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SelectedUsersRowList_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdec02458ef526f62be74baf71f6539d266592267e93c61e20f035b7528fc65b -size 71172 +oid sha256:19a3bc18fdec256499d8ea86e880fe455ec69f1abbbcebb65390f75c557103c3 +size 71122 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en.png index 4c16bb72ca..e01d0007f8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4e7d8316854658fca2e0edfc22bd844a7972543d0049cd751de31767ee1cc2d -size 17325 +oid sha256:aef8c463ca0c87911dcd75a94d850823a5e8f2b260c19efdc5786a0a0eacaf79 +size 17294 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en.png index b17f53e338..ac2d57c280 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8952a3e1251c854f7b59990ca41cdb11c2ee0f36545e20237057591b5d5cfc58 -size 16481 +oid sha256:90497693551062dd0b3f7241e4f8fa6dfeaf52e256a4607c87738c5d9aec9a4a +size 16436 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Day_0_en.png index 7bf24eff1b..7be7187821 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bfe638b75f253649e2d591bf174c9afa176c400e8826ba30f7e1eb50ad9b69e -size 60450 +oid sha256:b763f34f0c1d5aff577c818cba740440ba73fa67496dc153029231d27874138e +size 60459 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Night_0_en.png index 78271cc12e..aa00afe2f4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceHeaderView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f958cae6847bb68aa751cb79d3ceb0c2ea6d112f21a60d8c19633e7008a0e724 -size 59606 +oid sha256:4b149a40b1c01a99f5e7ff188fea0917b2bb9ff2170e57709cb302b2c7640783 +size 59616 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Day_0_en.png index c5c9ae1eda..166a8f1d2c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b20135fb6973d9d435fe1bfebb654d23ff2e1487b3863387c0843a5df63a6d28 -size 22858 +oid sha256:544c615c793ee84aba8cd12f60ad392ccbbc82d3692fecb582818ce1f6423243 +size 22865 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Night_0_en.png index 59647a9419..4c5d249828 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceInfoRow_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ea661953786398d16100c2209c7549f0dd0798f452947b7f74204319fa4e799 -size 21626 +oid sha256:bcea3a64fea3ae241f2e7210a2a16708752cb93244557d998e6f04309ef6f79c +size 21653 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en.png index 937800912c..a44cb90aaf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9df673a4073b6806332b3181987f7ff0594eca818ef4a2b760136582d16de476 +oid sha256:e91c16d5742c2e2398dcf3944d0861566932428c70eb134d46b3c54344f7b157 size 6191 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en.png index 44709bf2c1..8f7bd365de 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6a4bf38d356974df822f69f6de85b5b83b4622395c98b1c72d2d352b4e820ce -size 6093 +oid sha256:60ded7cd57b91a960d391cc9157da5ed7304e11c1c9e6fc5c9404f7693402fa0 +size 6112 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png index 53e8c50c72..b9aa714cd5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cb722a95b3ee29f751d053ea1cab634c3181b07678449600a2c23a97de0fcd1 -size 16496 +oid sha256:0a7381573761bc4fe583892044618f58e0ff8aa5a94be09df577b1fd5d63fbd8 +size 16499 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png index 2268d59ba5..b3fab27ef0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684f50c937b0ab7413cdff653a11ed11796583bf2182bfc1bbc1725f42d3a0ba -size 13073 +oid sha256:8c30ba9f665b153c5cae97e54a1bedad4f24640e2333b691d713727bf09ea262 +size 13075 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png index a8d5daeed1..fa3190596a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:333ae4e1f2e0ad7df938dfa3f0b54137ed641d327bcd7c316965fb4b4cc049c7 -size 8937 +oid sha256:ddcf8583e7c5bc93f3d71887960d4db21a57d1b9e0422f80965ddc353fadc0cd +size 8939 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png index b90c8c5ba1..f87479e24a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f6b5eaa4a84fc70cab57d37737b390583d3af9f6e829cecffbcf36351bd40e2 -size 23562 +oid sha256:113450a4368f63f9839e27d884a8e170bde2cec2fbc483376393d7717ca0cebc +size 23564 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png index eeafaa0dab..3fcc4e2c51 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f271f630d93fdf49436509d08276b6a444db92c06fd06129af93cffbb4623d4 -size 17931 +oid sha256:960c8e7d357885e40d8bda33cf87042091d1a42ac5010e7096edddb2e18605ce +size 17933 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png index 450015669c..6de015ea4d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a35bc50a8834997cf3bfd3884e82297e4f27d95462e23997e1887e8bf782c59 -size 13535 +oid sha256:db4c97fc50d11736276735af850d4416e32831ce69d7501442b23fc9e9799510 +size 13538 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png index 770acda2a0..6b084d8231 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad1cdaac2d2f1e42e3ca1b17c88b7c9a2ead134a7004885a3c3b3dcd41b13ce5 -size 33645 +oid sha256:bee6de2e44a69fdd6ebf0cff2b9dfb6871bbd4373d4e1fd0f7365a8af6a27960 +size 33646 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png index 5ed4c60ea8..410857803c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f5425b12bc2902847c5b3b7e4b4e727e2e67f9a776cbf059ca6ba4777f81696 -size 38569 +oid sha256:1eece85ade6f98c31df6ebed9c20db694cf75f525668c8a838b1ab100364838d +size 38571 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png index cd9d503167..ef920b87bf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4df538763a96fb5511bbb175856943539951b804b7ca2b5d69d7033fa5d3588 +oid sha256:225368f5fd5948bf823d7ddaf712ed65f16170de8de76d01c3d733ed3595429b size 11012 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png index 3663e98d52..65aaf60f62 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f07736b16ece457794cdbd3859ede26ed0aa4b53acdc69d7f913df9a9b0fad1f -size 16002 +oid sha256:78bd541a6e71205688c8b323812e9c2880821ea2adef232db513548b8ee05a24 +size 15995 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png index 244e0ce786..993a63ba9e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad16996462532092686f1638f3ee1f40ede99b5ccb2bc53e57931f50920e62b5 -size 12629 +oid sha256:eeae2ab8fcfc3a73b23d288f721edf0aeb23ee75fec0a1cd8b8e69b5529f11ad +size 12623 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png index 6eedc6c22c..44335fef01 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05368c1bf4caed7d565daadade2dade7046fce15f1bd37eff4b1ec0faed5e948 -size 9163 +oid sha256:b3322f5cf8324a7dced0615fd76d26bef157432a7b1ab43d7e2be3760a821bed +size 9158 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png index 5085864cc6..60fad82a29 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:690df48431acad687f2a2e72aebba4fa63de433ed68b7b9e19818a78973cd211 -size 22676 +oid sha256:1084cee1b18ff76198f8c4aaf787f4891df0cdd3b5dc7728707133b1eacea544 +size 22667 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png index 1e85e954f6..05ed8ce296 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34073398379389aa862c892e6eaa33574606071597a0095dfa5c84b99154b5df -size 17218 +oid sha256:6ca741f017239cac3b27197b72fa545945bde79d5f6216a15a474fed84431f2d +size 17212 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png index 252a083540..0c8229e631 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1dcdb9795595067c90efd2c3e3d34d740b5c1ed5e02d487c7e03f10f9653c3a7 -size 13134 +oid sha256:24e9202a8ae6fbbed41eab7567af08fbc2e3d294afe502b61463791f45d36220 +size 13131 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png index 73e31905c7..d430cb48f7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cef17e2d54dd9c8eacb9e7d3206fabf9acc91f1d4192bd9e13da0d9356eb536b -size 32669 +oid sha256:f4ecdad099df03a2d19a86237d141e8546cfa86cbb8e03c4ace00a06950be6b6 +size 32668 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png index 5a01e301a2..91d3115e79 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b55a103be0ad883d0aaf31cceac1a5b33f1923dc4d96778c261ce98e5b0d435 +oid sha256:b7d25a5255487869831f2f2e65b5dc494e381993806b4ced06b0180d905bba09 size 37334 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png index 3e5373a5b6..e6086ba1b1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59a2703c34c580655ff8e8c4681ad3937d7daaf9211e899ac8ade2826fdaab03 -size 10782 +oid sha256:7d129cb5ef7a70ebf9b8a724c8bdc77f6f790f40a010e2712d6f5d59bcb0bf82 +size 10781 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_UnresolvedUserRow_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_UnresolvedUserRow_en.png index 41eed18ca5..a998c229dc 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_UnresolvedUserRow_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_UnresolvedUserRow_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb1d078da743c900a512987314d72aac77fa6565fd28cc970d52443298c77605 -size 55164 +oid sha256:441264fe4ba673ab069b38d45243bbff77e2a17f99fd849d9c8b6cd30486e54d +size 55142 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_11_en.png index b47b27d0b6..bec6b4770a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2845243de8a6a7b90c047dc78f8650501012142e416625c90c998ec2fa36a3a1 +oid sha256:9f78c81ca24c8bd97b47a2dbf06dd842555c8f161468108280a264be94ebdf8c size 10043 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en.png index 31b9128bc3..9610d93b0e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d455e3ab7d0bb9e14ad634303c682f7aa0ab6d1738e44cad35c806a7c8158ac -size 7018 +oid sha256:280392694e46a91fbe31b965143bbf48c6720245b68200f2018d0d906314440e +size 7017 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en.png index e2a6141f5d..0a3e5412b1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74a4aeb31ddbe33aab72cca9fcd12d4a676b44c8410c4a163eb28eb5e3796135 -size 8918 +oid sha256:c6e80ffd69b8e3016b4a7cb057c5051eb1da315fe3ba5907a81616202c463af4 +size 8917 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en.png index 1428e4cebc..9ab5d3d26d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe3c2b5dda93cf45070fb92da112f2503d157564429b5dd2e4e3951a3ca675d9 -size 7041 +oid sha256:a93d4cc053115ff79217ab929e07c35a5a4d305ed1a5442e8cffc4c7c2de49cb +size 7047 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_11_en.png index 11097da9ef..42dea2dbc7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:785d4e8bbfc32f6c2c6561bb215ca868607b89447990dcbb41504d1e57eb36c6 -size 9780 +oid sha256:e2c91f9283d23d22840abb10037a8d80102c9547faeb45496f982a1ae474d0c6 +size 9771 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en.png index 705357f3c1..c8d6ce8cdb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:376ab1ccb61cf77eb3754ec10049290cc60d60388f78dcfbeebdeb089a0c8985 -size 6974 +oid sha256:4a61041e547d646c2786a61071dfb558d07520aca6c4cbe45cfaf77a46e45e79 +size 6968 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en.png index 28a948d198..fa367f9e71 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1eccddaa5bacecffd4cbc9843264d0cf20d0b797e8ec3d3eb5bd1fe1002d2f5 -size 8766 +oid sha256:3e6ab5f13bffac45ad6896abc73e9f8ae80b2bc86bb3ef1df2ec71c43e4afd32 +size 8767 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en.png index f1c01f2045..52b7992351 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.messages.reply_InReplyToView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c88dc5a5abbafddecb1dfa2abddc0b88f0b62bbccce183eb0c9193e1a9a9e37c -size 6968 +oid sha256:0175b0ee624ccae7a857840ec1b9362da8e74b253092fb92c8cfab0a55c24731 +size 6977 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en.png index bce0b43927..bee7a65ffe 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5a47c2bb7d8261de46fd4df1f35d589ca482242efbe16d47979bc2f3dd1964d -size 31501 +oid sha256:d13fcff8ca8e2abb7e9cb37dcc083228cda5a497be66b6f24b3b796142ed0045 +size 31498 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en.png index 6e5a4b4036..d7f664df03 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daee946e24b0d25d15598acb53af4a9bc2a29fdf87970e0e3b4be945dd4d9153 -size 29872 +oid sha256:91815a31d6daeaacea5f41ca2dd1a885a751643dd83242513e3919712f588228 +size 29879 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png index 3f041e2a9c..2ecb6f0e65 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1330e6892fbecea5e9790399b53c36fef60bf2547dfbafa1a85844bc6effbbd -size 38121 +oid sha256:964bac6ba83961f303f2309438a81fb4a09a87a0bc269df1f644b97b52044192 +size 38109 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png index 8c5fb823e1..ebed9fbaea 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b6d12e6b57d4ba5df1b59709a980df940c43623f87577cba8b2dfd8e82c2a1a -size 36784 +oid sha256:e423c47cee8f2c69b31d418a7a8db850542ee2b0040c99775c85a4260b286235 +size 36787 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en.png index 6ec01a6971..1b1c82d220 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:469b386bda6f76a355cb2facddb407526ba2f7f8b6b37b70db43332f88cb1e34 -size 8981 +oid sha256:17af56198a052fe7fec859d96f2404a025f6ebb43dca4609d1657d9e523a2be9 +size 8985 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_1_en.png index e118d89add..fa6160b7aa 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a9ed439adf04d32f66e918085e70a401720fa2b0968573685e440d6a06b7c85 -size 13407 +oid sha256:15b5d0a424a594780d07cddd4623ccd8723c835679c22fcf7fe7ac90fe635e99 +size 13418 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_2_en.png index 6aed760ca3..5e28c57a86 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1762653eb08d8121eac27eaa236359a909952a9c6d98b78a3431a4f51fae4c70 -size 36407 +oid sha256:42481b7292da539a036c86d52b029a5fe8457796af81fdf461512aaf7ad2d9bb +size 36408 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en.png index 7b6110a453..9f0dd781f2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cff8ae242d447c9303c4d644ce5dd8723626b3c5ddf1e70eb03ad801155be4b6 -size 8719 +oid sha256:bb07613388a62a2d87c62453b5201b1647fa3383c15d25f1a56e646de859b834 +size 8712 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_1_en.png index 175839313d..5ba59fe9fa 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ec7a989973bcd4fb5aa62bc09e6944c1ec188ff72b88ada1142a781c8884c80 -size 12829 +oid sha256:4ca2d472eb599b7c7db212891fc3a8a4c8709b1fc48576f49f4481fbdf8f959b +size 12830 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_2_en.png index 5b173f08f6..7b6c1c327f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_FileItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06195a0890d3a59b94fc26ee7f3c46cad890b9a218a814d94001b6c12bb6e2e4 -size 35015 +oid sha256:0dc4677c46094e437ae5052eca497e7584228833a143ed6c2f93944fa61c8672 +size 35009 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en.png index 6391f8088f..1f471f9659 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c3e37a42249c5c91ae57c61fc68471b05351a46d4d5b125e405e0b8f0f262a5 -size 508579 +oid sha256:9e935611b857601937350028b6fc3dbb6c50f8056d9a155c9e333b62900e7048 +size 508578 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en.png index 94137637de..d4b5662a26 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af93ef59df5aada10a9dd92c7fc0fe1a788e1184a3f9cd9437c6aa8ac309bab5 -size 508252 +oid sha256:fc08aa25d62cdd792ca6b7f705bc7bf291399ccc6fbfc35b2d6c973af6e2f762 +size 508253 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en.png index a0cce78b6a..3443d0da69 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66bda26858132dff123dd3411ba83622e19bd4447cfb191fd466364926b1f58b -size 509476 +oid sha256:3566122df6e9318d6fc8b20078523da7832f50c96e0d7c17ee5c6aad9dcdde0e +size 509474 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en.png index 9db6ea0754..751ca0284b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b68f66128b2b2fdce695718b62b469ab5d4f5f62ea76b3ad89dbb41951d31e85 +oid sha256:c23a263167181348043866b689f4b24821a580d3806f7e837d89126a74678b65 size 509008 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_1_en.png index 06008e4e27..9d5231f601 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee54586d0e00db39706d98d770554d1e258c06a0d75cd1f641f62f65c3568e0f -size 9220 +oid sha256:a0d9b0271872bb405ec0d6f8afa475404c9612b8d42dc5bb835ce8dcc8b1fa0a +size 9223 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_2_en.png index f75bec8efc..643331cb01 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df27bab431fca8be7eddf34b6abf17d76488b7ffa3623f92924e80dcaecae9b2 -size 8894 +oid sha256:9f969aeedd303cf4c6b90e3ab3b2144c7eddb7860e69af2c1ff395ff2202793f +size 8892 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_4_en.png index 03a2fb2024..4a13245252 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dce0b902bbb302ab3c4254794f0571f3acb0676ccefe5e642be81f431517c45 -size 9212 +oid sha256:c4d16acd7a9caed097bb7e352c290cb543f70b330800ef2b29b235bd52a0a4dc +size 9213 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_1_en.png index fecc8dada0..3512b11bf8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:330560755116461f84b9ea916e52a821676a0d50c85306bf0c3f6cbbe3888c94 +oid sha256:f36874223538e2d4e5ee1c383ef3c1b83638a6e3c2d1791b46f9393e4bd7afea size 8675 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_2_en.png index c14791e81a..b3ef224941 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77a75cc84a1642cbe3bab245c879ccd545847876c3a2b3982ae7f27d311436c1 +oid sha256:874579b131a2956564603ba279803c4f753736a4545f50f9a1eff93ff2e414a3 size 8417 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_4_en.png index 5283a571d7..8c61303e96 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemViewPlay_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4dafba8d98daf0bf181a961cbbd69b3dc980fee268ce6f5cdf99109c74fc695 -size 8590 +oid sha256:cf3ab6dc97d3f34b7e25062885a49eeecc563a69f6c337d346ad1d9ad0c45fd1 +size 8583 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_0_en.png index 58ed23c416..35651f3733 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f53d3624c9e52a66fd94ab84f973541b636cfc125c75d66c6d19fff1f06b03e3 -size 8673 +oid sha256:83593ae45c35e34d5057d45b8a7e66b582b3b52adc7f05fa2d9c3ecdc0bece9c +size 8676 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_1_en.png index f1f22b0b32..c427f30780 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7d23ca16528c6cbd86af34b0a4a49930009aeff231c4516f901838a459b5aa0 -size 11007 +oid sha256:69a4678aba6913f981f344eb730add0f4fdbe0529f7be015019150bac15f4709 +size 11009 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_2_en.png index 25f214be2f..d9b62e60e8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:648949b11535ba306cb95d3dc4ed1feac2f49f06957f9b569c096ae8bde57c76 -size 36503 +oid sha256:dac10693719b9cfe5f3644c25cbb9d1a59ed7c2f89e791eec17bf635c4d59efc +size 36507 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_3_en.png index ec0df80c87..4a7563b96d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2685b3d4d61f83d32758800c0f0353654a726b1425637ea8f524ea56d5e38f30 -size 6945 +oid sha256:d234492829a729dcb05657af65a3fe97fe025ff42c79d9cf862e4e9925ddd832 +size 6944 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_0_en.png index 9eb165c834..1e9225a8b8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:278eb8cd35d2cd5772e734c06864af5bd85250c5cebd362380c94fa90b74e416 -size 8110 +oid sha256:af28ed6a8b9d3b399531bf82d7be3c5a5b23ecc750654c241b7acc95a036132b +size 8115 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_1_en.png index 3b73e0a6a0..423ae8cbd0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79d2c232319a6959b74fc856d00c0d1d723d0012817f1d8f48d9f1acb6f740a1 +oid sha256:44b0989e9ddb097d3a5ef0f331221a12a90f69ff017e3447e31ef5cccc53af68 size 10290 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_2_en.png index 273e00f565..f234f447da 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a81e44815716eac0fe75d924e783c6501d6a3c758cd4b37c123ed1124546bfde -size 34879 +oid sha256:98eb5d83d322022956b684699683f25ef6c09be55c60224689685589e0051983 +size 34883 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_3_en.png index 69e7bc8ccb..b7ea22436f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery.ui_VoiceItemView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96f995ceac798ef12e2b4e721cd3b025be1daee38bb52e72f72b236aed5a85be -size 6558 +oid sha256:263371af4d0ac7efcd840a793e663505865d32c425d5b2efe9489a63655e33e1 +size 6563 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en.png index c185da3acf..1c7a427e07 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac8be8f9a01a8f1fb80e217ab1b80106df7a11c946779a51a14869ec88411170 -size 62644 +oid sha256:ae506055a01b6da3a5ce8443616d5209fa53421c89392caf8d783c6ac516f403 +size 62650 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en.png index 4cd81a7d43..efff3325b4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d73197d295f9181e6f297ecd5da016775a7fd669016528527af5d37f52f1a2e1 -size 14572 +oid sha256:9d9553cc17040d32f56316576aa97bb4f857fe617a8b77b5a86650e280d1567e +size 14579 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en.png index 40fd031175..c4dd56b783 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18230168b1fa0bec2af54e2be2e385b4f2131e772894d67a816d6bc02c667f5f -size 59702 +oid sha256:06b7690d3090a3c42f65325ba7370813dff12e515dc855a4ca625d2428070c6d +size 59711 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en.png index ec74328ac8..2a93b1e41f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8cb07c1492776dfd7da13a2c44b91f7c07b4702fc4e610e292a8025d83631da -size 59367 +oid sha256:ba5693fb53e3fa812a9f6971adb0b1c8b32a4e4fbe8fd6ffcf7979ce92e7ae72 +size 59376 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en.png index 40fd031175..c4dd56b783 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18230168b1fa0bec2af54e2be2e385b4f2131e772894d67a816d6bc02c667f5f -size 59702 +oid sha256:06b7690d3090a3c42f65325ba7370813dff12e515dc855a4ca625d2428070c6d +size 59711 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en.png index a95574f330..e96505b929 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ba8176c676dbc02bd37e03678301c84356d3e199af12baeecdedbbc5e74d26b -size 70307 +oid sha256:04647630b90936dda88b84b5edaecd9fc744b15f9688d2166c69b2f680ac0ec4 +size 70308 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en.png index 30b4e19f50..12377e36a0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:658810296f0c1ef52570c1276bf43c302156f4ff4adc1edfb0de8f6733281358 -size 528446 +oid sha256:da1a24ee1e1c8aed4fb262ae21e1febfe2663168d7a04feebfdb285f533d0677 +size 528463 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en.png index ec74328ac8..2a93b1e41f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8cb07c1492776dfd7da13a2c44b91f7c07b4702fc4e610e292a8025d83631da -size 59367 +oid sha256:ba5693fb53e3fa812a9f6971adb0b1c8b32a4e4fbe8fd6ffcf7979ce92e7ae72 +size 59376 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en.png index ec74328ac8..2a93b1e41f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8cb07c1492776dfd7da13a2c44b91f7c07b4702fc4e610e292a8025d83631da -size 59367 +oid sha256:ba5693fb53e3fa812a9f6971adb0b1c8b32a4e4fbe8fd6ffcf7979ce92e7ae72 +size 59376 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en.png index bf3dcebcec..356bf06387 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee03b5142927974650950352f3b89a7a284033f531e90d39ee27903c981618e5 -size 73031 +oid sha256:b0ef69d4e49b7f7634f21c6c1d737336caf4c062b7ebf000ab39169f8ea08558 +size 73040 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en.png index 58c0d73bd4..d92b8c569d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e8fd4696beaa27404872495ec9929e0a1618fb4102ae5240c97cb8a30ff360b -size 32637 +oid sha256:e4d1d09321fb1220d1be07e6f0ba54495764c935dcf6dc75bb3e7e5879770e46 +size 32646 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png index 0528cf6c16..a2ec7507ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa516481ee9f8c8bba25525f92af61d23d5dcfc33472a6de91e96ffe0d3ee108 -size 40884 +oid sha256:090412a4d7df8699d54070a04f5514580d46adc497cdbc1b354631506eeeda3b +size 40872 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en.png index f7b9912cd1..44de7cd39e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1645075b7bed6fe2fd712996da3860b8db43915f848a53abb8fec2545ecf158 -size 14576 +oid sha256:8368b66fcc9346fec86f24bfee3f53dfe01155838d799be93d2b094f1dc2dfef +size 14580 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en.png index 137148440b..58c66df94e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d42e4c3354762885d7f6db75eacab32a8ecf9b9a8afb5dc2265c5905c9c1f04e -size 54886 +oid sha256:54796bdaf69e4290f008a3fc76034d15c98e46847752c64c3584a4e3921d3287 +size 54876 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en.png index 7953623173..5a5e88d09b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:624d1a64dff25fddae712e14ec2f7c9a1cdbc89fbbf9e9938e4eeaee30d588d7 +oid sha256:3a8f4a8be55e1ffded58141bd5e5dbcbf914964b52a395563b83aa06f623350f size 14048 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en.png index aa2408676d..820d9361c6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2219544950d8be2e656f8cb6b4f5852e0a0811270ce3eb7ff5408b60fed5afc8 -size 51919 +oid sha256:c52bef009a4c31ec6f297d273c8b1c8bf97274777d2b52a4c56dd646194359ca +size 51915 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en.png index 685b14639e..b899383e64 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:138c9f2bcb0866eab4a07e6488a34f347823bfa30778e0ae01f60a025d1574fb -size 51516 +oid sha256:a7d6df63d6e364c99071d1b627f7dcd9220c71f23b51ab4c238c0878fe414448 +size 51508 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en.png index aa2408676d..820d9361c6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2219544950d8be2e656f8cb6b4f5852e0a0811270ce3eb7ff5408b60fed5afc8 -size 51919 +oid sha256:c52bef009a4c31ec6f297d273c8b1c8bf97274777d2b52a4c56dd646194359ca +size 51915 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en.png index e919d36b7c..e9f539fd94 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ded2ac6dbac31cb5e3c58209c0bedb8f59eb331d8b10d19f4c96d5b84db76a1 -size 61975 +oid sha256:2e7deb11838b50a4eb4e97aa908d378da252b71ca3dcac16176670c3bc4304eb +size 61965 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en.png index 78f29eb25f..fb940ea5e7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ecde8b92f88ee26caf68220cf54f97cda46599b5be8abf25e3bc1ee7845dfac -size 524872 +oid sha256:b4dced64ce3981eba6011524b34cb394f180c9c0e06c1908c2cf60633fbdcfc5 +size 524873 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en.png index 685b14639e..b899383e64 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:138c9f2bcb0866eab4a07e6488a34f347823bfa30778e0ae01f60a025d1574fb -size 51516 +oid sha256:a7d6df63d6e364c99071d1b627f7dcd9220c71f23b51ab4c238c0878fe414448 +size 51508 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en.png index 685b14639e..b899383e64 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:138c9f2bcb0866eab4a07e6488a34f347823bfa30778e0ae01f60a025d1574fb -size 51516 +oid sha256:a7d6df63d6e364c99071d1b627f7dcd9220c71f23b51ab4c238c0878fe414448 +size 51508 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en.png index 5146ec1129..1a7d9292ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fec6671774db382ddaff516d71ee53e08880a6a40f3155c56b0ba026fab8b75 -size 64512 +oid sha256:185d7cffc26032719c113a917965489097a890675ee06ae533c5d8cce9b903c3 +size 64507 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en.png index 114ed2f837..0c9b92ca30 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d1e8214a173cf9a33c9d38c02b8965781dec82fff2595d9369d979e4f6d5cde -size 31142 +oid sha256:46ab31307298aa5ce72f71db8eedefbde78eeebb3ff1426833bcb0a7c6af9ae3 +size 31131 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png index c9d525ef29..bf10c81b0b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d08ce3c46efe0d90ef0b3337f492f68eb60885ba054fa289abafb7735e9d321e -size 39304 +oid sha256:b7bba63c8d4018b9bba182e78397e94e85040f8a50596d1c528895278e219ea1 +size 39333 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en.png index 5caea13b50..80e582b6bb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:176f723c4a2dd25faf869d3a13cd68ab1bf017367b4a74ab100651693c7fac64 -size 14140 +oid sha256:7c6c0ffaa6182a3d4aa7866d8ef740f631045691f1161d00eea8ed0db49440ec +size 14134 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en.png index 263644023e..ad087e34ab 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47272c82fa4d9a43cdb1c6865677783a0fc2746b01f603d451f3356bdc7fe65f -size 25524 +oid sha256:23eef78c132aa7c9180bcc2b7826ab5791f70550d291bcaa0eea5a2bdf370a74 +size 25522 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en.png index 30d0ad3021..d043c6ad06 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac07f23220511bcc526d261d5da14623789b222c56784cb670283d59d139d9ad -size 23172 +oid sha256:f08e299bc6ec4385eb280d0c3811cddb3ea9aec149c6154a2741e123582f1120 +size 23169 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en.png index a38dcf0fc8..f473b79020 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1f6c8790f079791d3937e3b5765b7354f59f873cdd2d2dde127e51f5053b34a -size 24956 +oid sha256:f01628cdf5ec7fa61832e212455ce1aed10dffd79482420b6b1beb8dbe30fe27 +size 24953 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en.png index 5a0b86da23..89021a93f0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.audio_MediaAudioView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:855d83c0f6b521d3710e9c1389bb72df8892a67d8ad26b48272f735c6fcfba12 -size 22816 +oid sha256:f81d4ed1ad21bf4e0b91b7613d1e48d93c8aaf762abd699b52cccba495810e82 +size 22814 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en.png index f53cc3085c..513c6ba6ed 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91ce0546fc34bf013d9af83b5aedcdc348a5db589dabdb9a6b744431d0c362bb -size 12344 +oid sha256:ed4747a9b0525f9c9a4a00b78f5a20610c1bd5200ae3e15d4dcde6330dd7e8ea +size 12341 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en.png index bbe5fd44e3..873e974e25 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.file_MediaFileView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92945f9a28a3731424dbd1fc6e394e96435d89b2e801eb4584bd57d021980785 -size 11961 +oid sha256:f3c3b7b5947b63485a1770a4001ba7c612994dcc1a48621785dae8b9a4a8a2f9 +size 11962 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en.png index 1d0ef0eeb0..405f84198c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5983b1bca18981b5a52fe519bbb4a5a2fdcdb099301986af9f6253ae7a9469fc -size 8234 +oid sha256:5b19a8ecb5b5178d9c4eea324f480a29dbb7ef7511b9c09af02e383c28370c17 +size 8247 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en.png index c2744b4821..8c0dd9af37 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:933b64f19f16620a1839fe6e3de765b09f9cea31d22e8650d45df5f7c8700a28 -size 7587 +oid sha256:828d1bb8415dd14e759cb20ca117cf4995dd2848dd08333e7a70076b992b97e7 +size 7576 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_2_en.png index d9f5ba0095..5c6bc1ad24 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46ddf7bdf8c2c4e53bac78600595aa436e594d8d4ea05de572bac3cac04dac29 -size 7667 +oid sha256:f1a22daa18ca3c8e7d4852b4ca19e7cec1b7e7fc13f0734dda5dea85b5368fe1 +size 7675 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en.png index 55024f3732..da09120365 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb5812efd2306d5ce21bc55f482d8440c73b9ca7a057372ce1218653ecff815e -size 8159 +oid sha256:d7f88af8d8cf850a3757aedcbef59585cf75f6efca5a1e5311a6f7eace79be41 +size 8138 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en.png index 117c19c764..419da353bb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7707318af5b242c939291d82a6d95e2f1ffa2db415937b36faac706ffc85cdf -size 7710 +oid sha256:491ad1c4a5e78c2787b8fb4b7f3f292d7715730a16e71e3ab702d645a0f5ea68 +size 7696 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_2_en.png index 16deffe019..8c496c89ef 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.player_MediaPlayerControllerView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45cee58d197fa4717ecab80bd4e7e58170258d9064c8ee33949b7ea58086def4 -size 7582 +oid sha256:74f2d7840c5eabc479e3324471a253fe10d2777473ee6bccf235c01eca6249a1 +size 7591 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en.png index f86d45eb86..6a35df05a1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ec56d6ef0c130d47a9b03c9c3d2b3aa6bc01902cea1cd6da6324ff36c017a7c -size 13610 +oid sha256:8644ac1aca1696960a98bd4e3e0fa33a9df50fd9e786f4aa52d9cb41492e81c1 +size 13611 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en.png index b38b9a3d64..995ed4c6f3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.local.video_MediaVideoView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9389e0ce12337211ad89d95c51409fc27df4b3185ab58eff64a6b1f1c9c6649b -size 13267 +oid sha256:bf51d2a6395ab9985ce9ad448822635c6d29a1e7cf4f66887bfe5e35278c0e7a +size 13271 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_0_en.png index 4912e2ffd1..c9e7d7fbe4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5cf363cdba9130e028d9c9a0b1f02976afb273507f8577225e5064781225647 -size 389402 +oid sha256:3362022a7658fb15d3d07981a9f74f95c603a37122a50978d7d600255fe01ad7 +size 389397 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_10_en.png index 7ce62f4ce0..59ad68ec4c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51749c8228540d2177d787517de07f597e22a1894e0f24fec5cba134db80d71b -size 388675 +oid sha256:30ada7c55e9e8847a57271aede957573187b56c4ebb88289472fc34d8c037d3f +size 388676 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png index db7817f849..b094052a00 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:624571e42e8002d9cffe0c4e9117742412c4dfe0c20c8b9e6ba4aca639ba1916 -size 38076 +oid sha256:f47067ff716b6ada901650d138a7f1f88e1f1cb29d9a919d4d5af5d834b571ab +size 38045 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_12_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_12_en.png index 07beeb8c4e..05caed4847 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_12_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_12_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0118fb76bf7cad8def14a606a43d32bf39ad15c025b63a19767a2d16abe6e55a -size 31240 +oid sha256:b7515fae2b17ef03ee0b1df75b17039d384981b9fb6bba001489fb910fb47d84 +size 31214 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_13_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_13_en.png index a89e332b94..5e4b3d7e69 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_13_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7978a06a003272f6297c97968ea6081f6dd80dc6c86a3f7e9f2740ac4bf5356c -size 133999 +oid sha256:1c5878a19565187330b31a1db7a50ab6cdb5db1435b3708a7a918c9a8b4818f6 +size 133993 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_14_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_14_en.png index 4cb51651c4..5c6823b216 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_14_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19e0987f38a0b867ac30898da90fb28c5c382b72a03639cc74817eb684de147b -size 7918 +oid sha256:5057c4c9727a8a3207d037cd237847b7584b2759ad0d40a5c0dea31868e59cb2 +size 7930 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_15_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_15_en.png index ef898feace..8fd757d126 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_15_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58634665793af557117c70203ed96690f6e9291ee1b34b5b803efa707a961080 -size 5085 +oid sha256:e73e1165c92876e1ed698d8413bcecf1b79a7acd462056bce00fae010061cb27 +size 5078 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_16_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_16_en.png index 0657d13cc4..03775399f5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_16_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_16_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f6d280c183141d78d915d08458aaa69e89c96f3227fc14242b16953d5c8755b -size 113622 +oid sha256:94b53650124f0144d574b3cf2b0bd704d870e982cb3fcc815fb11fbecce0b7a7 +size 113619 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_1_en.png index ffeaa5b592..47d6261e42 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef92192531e95d6d7bd99bb9045a6f1a412962ef6916331304a4e573e7bff60b -size 389425 +oid sha256:bc72d0cfb4553768e7140480b09c6f3097dfbf83f61fc196ca8a3749ae3d64bf +size 389428 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_2_en.png index 18c8eb5b85..b993c242dd 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a75faf9a65b556f6452073ea4d0767a04bc22674a757575044c36ee39a641172 -size 95179 +oid sha256:b567985a03675ad251e0049dfc3fc1c783ec15ed3e316e66afe65325c8829d12 +size 95202 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_3_en.png index dd0718ea9d..9680db4f02 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edfbbd7f3a8412cf04ddd72f5249ffb6af94e4c3dc41be89c6f9ce7004dd2784 -size 396233 +oid sha256:a1aa430ed6eab3ef2a269f68b068df32eeb1c46429ac62fc33ae5e4815789b49 +size 396193 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_4_en.png index 4ad09e4797..29d7322473 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87adc7738bbd20286fb1a35a50ca5e418821d5213eb8edda41d063547e311588 -size 131626 +oid sha256:e0c6ccc68d81e59036e56c6c55f0754b240db20d9f268cf3690ace3a989fdac7 +size 131584 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_5_en.png index e61d8ee31d..5755c1505b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5786f5ed547c6338719e76aa4641c81d5f73873bf56752b8774d8d7db28a9275 -size 112186 +oid sha256:e58e78d4153f25e1b9a4413c8ca8dbaa5c9fd9623b12a29fddf86b3e80564f42 +size 112146 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_6_en.png index 5f4e81b345..5e58b55817 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:146fb5b0bf222b3a8157466d24d9f8cb42b26f1a81837fdbd9cc6180a9c1490a -size 123529 +oid sha256:b5871938f60b42a59b5ec578e2819cc2030414931a3e4565f84fc7425760459a +size 123512 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_7_en.png index c380fc587b..a372fec266 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8e45bf213f7ac94fa7b41ca9c6372f5439472b6122cc98125f463f16303bc2f -size 14573 +oid sha256:e9f75ddced666a2efb14a04704d464dd10eea22709d75e7997cfaddacd544ba0 +size 14563 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_8_en.png index a3d03ecfcb..49c441cbc6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b032939bd87eaa5fabc5e9b42043f2a85f39e69fdc922c13b50733004f99e1b -size 136667 +oid sha256:992cf084d455c17d756da2655e610849b216db508eede45cdf615815db9bd357 +size 136674 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_9_en.png index 9cbf0238b8..0cbda00dcb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd87506200f79e6dcb6a03990d021f744fe6b855e22b704bf76de0f3954ed53a -size 136824 +oid sha256:ac9ea210af259ce406855ec961822348f3eb675e3315e339343bd3bfc9022f94 +size 136820 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_0_en.png index 39d089fbf7..77a250e489 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef22b8601a7ceccb48ce49ff6addba3ba9fd16cc2b19463bde2c6e0aa573c12f -size 13175 +oid sha256:b6cac7bbbb14cc9d75e3f8180b4a4d34e9365714ca6d3dfe15fab8d738107b01 +size 13167 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_1_en.png index 1e539ad384..27fa3a5062 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80ccaf514b814b9f753312686da420ad144c8f552382e8838ce22ab352c6f5a1 -size 11062 +oid sha256:239a3ad7218ce5117a1a158510cd3d474d8e17971e77f887358d9ee0a602801f +size 11071 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_2_en.png index 0766c3a5d4..d16a74d850 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ae7336c92a0b1a8a4ae642a52a4d029c229012a920afb43be056add99380ffb -size 31180 +oid sha256:4aefb55765326a372413c9116251c9d3b9c79b3dc08e0fb89113db71c9680e55 +size 31167 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_3_en.png index dd20d908ab..9f7d11fab4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:573e7f8600bc4177ad7fa3ad4e4eb0487ac6a95594358254bac0c20fc4b15b6e -size 29389 +oid sha256:1401bc94a37b803bc6eb3111d983cfc6794cef10dbd2531ddf71aa26e1e75ff0 +size 29410 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_4_en.png index 1c637dc6d6..878dca81a4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc6c0bcba6d1f694473cf7bd9279a004acce376a84959d63c5a5d52b1322f3ef -size 33756 +oid sha256:e0f4637434aace49f39cee3f4826cf7c8d3837e6a557d4f2c88755b57a0f81bf +size 33773 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_5_en.png index 0bf5261601..986a006347 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9c7597622f69a2724eb968519153f1da456ed368e11be427f81d73c7f268b9f -size 28861 +oid sha256:a02cc5f5e8c430dafab0eaaee7dec6f057793e7c965d80845ea1d30d3204953f +size 28851 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_0_en.png index 2c1da59117..98e26b4644 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6808be54b6e19ccfcf50c45e0b88ed3d562866b1c9347d19c3c807c74f916755 -size 12564 +oid sha256:197113e80e6c4f918400bb0088da9b09d67240726341a691e3a114077777c856 +size 12563 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_1_en.png index b568868fda..821df0eb16 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0352b36f67c07a4e8191767a79aa75856bd96c16bde69e2a57da9738fa16f2d -size 10843 +oid sha256:0c099419a45d24298bb52ecf48f04ce8cff117fb2dee4be2f650704663b6432a +size 10817 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_2_en.png index 3062948da2..c9c6162ff8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98854f24cc7efa169dcba63d3c52140c7ca18116e7888a807d39af004ef0540d +oid sha256:2b1d38c3fd31bcb741b2f9df0370d32a77987b884880cf6bb675cca94d3e8d20 size 30424 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_3_en.png index 4eb095db78..359cf2e995 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34ac7acba4137726296a415a5168a560905ad6fcdc0b80b3049b1cf440c88e62 -size 28988 +oid sha256:781d1c293cb0e42beef278a2bbcfc25529fbeffa4e589df117832f5a6731458c +size 28954 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_4_en.png index 43379b722d..7c25e4e36a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1d16b4735f630c40ea1ed23daf71f6914fda48fc8c70d35d50037c50e93c25a -size 33350 +oid sha256:dbd681b53702e6ec59f55db0a0697670b9646789fa73c2ca29cb7d7210572f4f +size 33306 diff --git a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_5_en.png index 2c54cbef0c..fe96f8cbb5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.roomselect.impl_RoomSelectView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5928245d4c77abb0679b07ff9921f976bc2fcfd21f60fcf2ea9f322c16776dba -size 28078 +oid sha256:294693fcfaab59474b8be0dc96d86fa9a86b85854892b7fa71f2c4fbd325b570 +size 28069 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Day_0_en.png index 9593d1688b..acab23929f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2fbfb88cab0f11683f848da65158cb30652e64abe64b57049295e7fd72c719e -size 5371 +oid sha256:90d46e9f3b74d14fb6096ae7aac783725d7b61114f77ef9aa35bfabc47fe6a21 +size 5368 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Night_0_en.png index 3d61f06288..964d0b9516 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_FormattingOption_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0528a462e61239e3dd97d6ab161cd7a545ff028fa7dbddcff3949b300a6c142 -size 5242 +oid sha256:1d750dd430d8e6d0e68a3b323cf9aea868c7db41f9b4f64a3b5f84880dd41c8f +size 5263 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Day_0_en.png index 4bc0b976a8..3a38e2e177 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:504944010ae77a2d2cf1596a1dddae5b7c41c18c3f9c5f5047b297d5a314f603 -size 8686 +oid sha256:5fecd68ea15af9dd73ad56fc65b65c8b769212307467a190730648b47fe7cc55 +size 8671 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Night_0_en.png index 99a75f2e17..aafaca1f10 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_SendButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b689df7b4ddc608907cd0c82412e7ac1a61ac6da905047a5e7430c24e2b003f3 -size 8541 +oid sha256:55b02c8ba432b768df833a7ba2e4745b7a48f47bb1601df3bf423e369f95bb65 +size 8495 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Day_0_en.png index 3870a7600c..7af6181c68 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93559b6d362a1c3b47ba17e6449a74a255929a21de4c231f76965970f2d90ec6 -size 6105 +oid sha256:b4bad23f7855b77295365dede75beb8a22819a11e911a3c98608198ca140abf4 +size 6121 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Night_0_en.png index fe48adfba0..0f5cbd1de7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_TextFormatting_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53f55c8e64db37ad263152ed1a743b0b4fdea77379ebd7b4fb1ca62692ca49be -size 5805 +oid sha256:a53fdcf5cfeaa08ace83577aa54b4d9722566bcce624442491688ce24dfed255 +size 5806 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Day_0_en.png index 221f519eaa..5b29c9a0c3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:532fe4cdbf0103d4a3b06b3ea0984bfb2e30c9aa790d6d0e197dddad1e3812ac -size 4418 +oid sha256:86e37d826ed0534e701e7503c7a8d0fbd3958696d12fff063fe71b97b32eb07d +size 4416 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Night_0_en.png index 130d1822b2..a7ab0d3e6c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageDeleteButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ea47b843bcf47b6de7889c172ea3cfd72fadf868b28fff5c196d4cbc7618535 -size 4359 +oid sha256:ff9f438cc08d80e6a86fe4deac276831b52439caf876279af13848c8703da6af +size 4354 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Day_0_en.png index 88a6f78312..035e81f958 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:645db1dd9d9fe86d6b4f6434cb86011b24805618777400250a29f526e126ad62 +oid sha256:5a1d961ff9854bc804ae3df561ae33f562523fa2ff9ca7ce3758c31c1d8a5c4e size 5772 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Night_0_en.png index 47c26da1d9..be3faaae13 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessageRecorderButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f2bf486a0b09a305e3daff178336d3596ea92251ad22b23490505d8c9363bc8 -size 5729 +oid sha256:f6a26ec7ab06c952049830c19f4074680ffce224d33890fbf3925662dd804204 +size 5733 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png index 6d97ded92a..8bf9395609 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:382d1dfc4f8b0c31ac8c0f2b8b506517d9441a97cc8e86211aab091dff99eda5 -size 20697 +oid sha256:3ed72cd85cc94390214b721b26229c8784174c54fb2a58eb1cc01431e6c57898 +size 20699 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png index 3a201b4e60..f584255fa6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:800038fd3abe4eec862e8a76050b939357b3cddf3591aab9a401f52870cfb219 -size 19505 +oid sha256:ea8534fe10a038e86e9c9c572391f29c1241fc77a1ce93c549bf6350f48c01bb +size 19500 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en.png index f903a38854..4a1552a032 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6d78caceab1c70c552a369d1d537946eac4a6602c96c6277874563005a4196a -size 18627 +oid sha256:6cb6da323e287973da01a036c010ec13837acfcdc7d81e1670901f619b5bd531 +size 18639 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en.png index c84e30b9ec..edf9b3d30f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce04f1c392063ad1b87dbb28de39ec3a9bd8417257ac0bb577c3bfae3561a3b5 -size 17597 +oid sha256:2f4652e4b20b0b0309b3f24dcea644fda7adf4b8cb2fe86b499856ddfe33b60e +size 17592 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_0_en.png index c518296978..234d037b0e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acc94c8fd42f7dbbdfecbb94ed878b8c6f12f82f51c4077d0e183797b4473924 -size 5380 +oid sha256:319751fbb6bc6ca328dcafc4a3e7575fe7100b378d76f6ebe3986ff7ebe1f007 +size 5348 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_1_en.png index d1b4b1ef6e..7fec46b2dc 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6793bc6d6434feb41d31bf093953def9882f19795129efdaed70ac497454e5c1 -size 11352 +oid sha256:5ee5f5f6c2db1ae8be3cb6377530954ec31d832eee7e7c4deb4eb09a79bf44c0 +size 11348 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_2_en.png index 6f0fa13cac..910184e79c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b25f9f8aa96320e45f645c047a6023defe10cb753001707595cc61e0659959d8 -size 18850 +oid sha256:4ba3f2b46b05a821a812d65612d59cea07cc0dc5ca8311d47945f57b198c1a14 +size 18844 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_3_en.png index fcb62b5382..479af0b53f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7d12a487bf5c903ce086d677f032d16884eadfdbcd7991de88615d6bab99742 -size 7987 +oid sha256:4025738cd4c6b753e70a26e363437d266a8c1c4efac469332b4c60ccbc7ba8c4 +size 7979 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_0_en.png index be8916239f..ee062a0f32 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01b95a4926989d8b8fe26a6d40e1b937724d52d1783896fcdb0c66e7cdddf57c -size 5337 +oid sha256:9953d03587e87aff878fbf028616e358fa086311fa1cc5e718a5e6ca6aff3fe3 +size 5327 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_1_en.png index 75d1d47421..e515bc3fba 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:186b8e43c773847bc13f5b73605a5f20411f896620d8ec71356a70857592c8ee -size 10947 +oid sha256:8cca8a1d1c35c00415bfa17829865eb7233480b4babcc19e34fa01a7162bc29f +size 10960 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_2_en.png index c24fade757..c3edf54f69 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7522104a5f31e5ca71a142fa1ddfcb51021226ac2cb362ea2d081f71b3e5f562 -size 18165 +oid sha256:7cf4877cefaa904586f06c0456d496e2c6456b2280ffd95754b30bc1f4aa98e5 +size 18175 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_3_en.png index fe9ffeee77..83b7fe83f7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_ComposerModeView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62ffcf73f8e26e5cb654fd0f4576a25b09325058eb0e03dff45ed04964067761 -size 7703 +oid sha256:79dd86685f07b79e320a1dff15d19b3c676ee30d3adccee30d7069c961ae852a +size 7722 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en.png index 1bb749d44e..10f49a3193 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4564821b574977214a2e05bc58deefb3d2842c12501cadc781e1cabf6a3d4f7 -size 52521 +oid sha256:a8fbc3f86e7157b670cce57e5c1015e03ffa9ebffcdf6f2694f57fe730f4de1f +size 52515 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en.png index e49944c187..1d27b38bdf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43f3d101b9884b42f385bd19766db8fd6f75ab31dc835053726673cf66d68601 -size 50830 +oid sha256:cabcd18071e73d3de04c33753a5c75bef51dfd493e560bdbe469ab512583da10 +size 50811 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Day_0_en.png index 619f22f360..959b796a83 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d33345e7d8cb2a55e6d291ae9dcabe66c8ec1ea4124ebc32b679566e585ca0e -size 54020 +oid sha256:49aef4c903d8174b0801423c5ff70193e2f74f191f8ba2464e1f4894f128b915 +size 54016 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Night_0_en.png index e2ef3acc25..125662980d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerAddCaption_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6af3cf20ad9b57abbe61107f758c143a676dec960fdf583b517d18e404411a3 -size 51953 +oid sha256:66c8ec0b582a2927b1e862986044a5eb8ace743aa0397cf3aa23d0fc3f08b2e1 +size 51988 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Day_0_en.png index 5a1a036cf9..24fcc7dae6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:936a9e86eddcb00e20de8af1fe60ae2153c3dfa384f8070466026969a34eb057 -size 45074 +oid sha256:43a6161ba149e16f0b182a30e4b03fcf8416bb36341c9af600f912b19f462874 +size 45078 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Night_0_en.png index 718abc20fd..6150e1beb6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerCaption_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dee196ccc9872a15897426f2581c178ff92a393136aefc5f7342ba1984d8e418 -size 43492 +oid sha256:41627ce0ab8279c45431d3d7b399c3d40c64c36c42c8449b4b91dbbddae70a23 +size 43470 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Day_0_en.png index dae95c00b8..b32e529a58 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dea3e3f516afb98543f458e0db6472a7157428e25d8170bee6abbc505ece7bd7 -size 52677 +oid sha256:abc2558e6361dcda68b6d8a62d82e1c2b9f1e163690d97d31d6e4ec11c801f60 +size 52675 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Night_0_en.png index cc6c7917b2..a383231b97 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditCaption_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ff7e86b3aefc4092514c0312a91747ac0a8a3f90234ca9774cd52ab90eeab17 -size 51072 +oid sha256:b3af2c68f5b9e991f2fa64963159d1b01baead34e5e6920602c56bc8aa32ff47 +size 51105 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en.png index 4b15f90a41..0210d92d65 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54a3988c2a4878886f23a95e04c4e37ad41704ed4fdf0089d083e9ae52e7871d -size 63496 +oid sha256:07dde3fb17519070b77161696e914b84fc22aae9ba3f0450ee90f2d97f958856 +size 63523 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en.png index 6ef64444ae..50cb131812 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17791f3897067019f9ac60e91d3d5d993799712195a1018726d9a15e4fa6db82 -size 60888 +oid sha256:37a468d82a264f1daf018045d39def3159b7109c0ad658494fb545fd545c2cb4 +size 60915 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Day_0_en.png index 1bb749d44e..10f49a3193 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4564821b574977214a2e05bc58deefb3d2842c12501cadc781e1cabf6a3d4f7 -size 52521 +oid sha256:a8fbc3f86e7157b670cce57e5c1015e03ffa9ebffcdf6f2694f57fe730f4de1f +size 52515 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Night_0_en.png index e49944c187..1d27b38bdf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerEdit_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43f3d101b9884b42f385bd19766db8fd6f75ab31dc835053726673cf66d68601 -size 50830 +oid sha256:cabcd18071e73d3de04c33753a5c75bef51dfd493e560bdbe469ab512583da10 +size 50811 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en.png index 121b4c02e6..d4b2df8fe4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc201bf11b46fee8396563323c1f35ee5589ffc9d38d95fd5d77f108c0b46fb1 -size 64472 +oid sha256:58d71f16891297f6edd291d20860fea05bd6ffc1ed53082337b4b0106f20a334 +size 64466 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en.png index 0700d3d848..84f226777b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b22de94fe5fa19684e4af6d9252cd0d2e96eee5b3b37f3ea8f6bf03be9d6b4e -size 61531 +oid sha256:9fc8659a0e124f417a15b4be2e1871c41acdb593b2584a86eefb2b75073da61d +size 61481 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Day_0_en.png index 74af5caa60..29ef21226b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbc269040694bba49595447836c01e080326327d09dbd8437b8729be04b59e7f -size 53972 +oid sha256:ad59b9a21632aa23cfee173cfc2d5f7bc1d653079a95bde38fa9c53b7f445ed7 +size 53936 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Night_0_en.png index 569608384a..5d8e0500fb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerFormatting_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ab0b4801ae7caa9c88f6e3f64f1b1319a53d945a2fa4da09f0050bf3e8639e6 -size 50961 +oid sha256:ed14923d8757611535dcf5ce9d62b38a49f83d38d5c021e9be2d4b3619ee5b0c +size 50938 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en.png index 10545dddfe..630f6fa3a0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4edf0d1a98c8ac8d7117ab522ff00cf658acb3110594e598e00a8f9be18c1d5 -size 74021 +oid sha256:1d36612b8e2ca7f59ab05b4b4118012c2725da9ebbc7df63352c70375451bd13 +size 73958 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en.png index 328d7efdbb..d95da7f0c6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ef01300b2a4aae214bfe91efcbcb4f840af3783f51e38aecd8a8f27f92b8e93 -size 60569 +oid sha256:9672fa099af849fd75e4c6a8a5d01682e1e5a0283958c6abe2adc122ad5e2763 +size 60519 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en.png index 2cc68110da..d7ffa82c24 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:146b086f1f30c5a2280764864492fb7ed168df496c362372a289e7725f8f734b -size 73429 +oid sha256:fedd88e24489233b32e215b671f238467816f6ccc5bf634925ec845d32ffed90 +size 73376 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en.png index 7718d0588b..075a41d8ad 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d06b49c3dd6a84ed96053aea69176a98b4259850101af4c5a120d96a07575915 -size 82162 +oid sha256:37e4dda90892ae77976eeb7c78c58e236c96970f46e305a2a9e5814841990a5b +size 82106 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en.png index 6b0505032f..289a88628c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:588284eddf497c79ec0e26b5d58ecb9f47ff13e310eff653364b7064a34e4dbe -size 63135 +oid sha256:992291c170b880009c4efd872a92d19d06476f506bb748b5d5bfe4018c87d01b +size 63075 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en.png index b7b9626b77..42e2287129 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d23654026a0dc0f1c4b74c34c5963cca5dbf1c4f58ae11c5bd3cb9fbb2ec6ecb -size 62038 +oid sha256:bd1d0f3a07d29610650691389071444fdd2117fc62ccf52619ea43edc65e9169 +size 61984 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en.png index 6ff1234a80..1219e15937 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14a336e4ac0698ba22784b22095edddcabd9cce56c4660b575eddeb572004761 -size 69037 +oid sha256:ca4142324fe63d5a0c3b06a9af710ba3484209a2b938115a68e35d7785cd28dc +size 68983 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en.png index c0117d7572..643df1809a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e0043281ab47036d89e0211078939491cfa6f4b1448778e35fff62e05e28132 -size 90924 +oid sha256:c672e86ebd42326d6373a55b9fd5b3dab8d5845af76d0b15ff0cc478a7f68be6 +size 90870 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en.png index 6fb549ca91..2eb532fa42 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:965c8fa72a824ec3d15b03c00b2d5619e67b63f48803160d3a4452899b6786d5 -size 61469 +oid sha256:83d739bb6b0840e44142b986f04bae377761c59b1093f329c5392caa8f6e1a03 +size 61413 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en.png index 462f7c2ce7..d2f52adc69 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9974ba40b60d7fe315ce069d30cdd5f8e835f6fa875466a7a5e1ea69d9262f8 -size 62587 +oid sha256:592397176013d373cc1e10b200a804edc1bd9298ee8d6deb28a78a44e1e4787a +size 62569 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en.png index d02c87bbd7..ec4f1a0002 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:037812eede94b7aae325d174ab9e97f86361c6f48d6d70146026ac04a123d6e5 -size 68797 +oid sha256:b50323e3ff9f7b0ec0d8eae7ca0ed889c1beb274934a31e6f6f97d8fda2a15bb +size 68751 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en.png index 6fdcce9bab..06c15ea1e1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:105eae03dab255dbd0d110fc64cf95d4f5db3d459174a2cb6a779478801f5b02 -size 60981 +oid sha256:9c98826a30218349b4fe2f12cb60c25f27eb9852153a58a5638f76ad5a036e00 +size 60929 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en.png index fae7cde2a2..1306534870 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf03864fabf9e2f35e39db52d04ff2a85bd49fc310f92afa0ef50ae9932cc6c6 -size 71815 +oid sha256:35b2efddf5636cde7c38237f4021554e7d97dbc533ec319bd3b8cfe87eabf42d +size 71784 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en.png index bbf5f7f228..f7a80fd218 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8911d1f308383387f7745d4b9bd6b38d73a8a43850692a4fecb405c30926064 -size 58692 +oid sha256:b2e81ef71f7329b67791f9bcc8faea5ea57f1a65106fc24dd1daf059c7beb7af +size 58663 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en.png index 64b8b56dd9..d8d8daf3d6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82c1a50099522a17ca152e30d6d342841d193cfa8fab32f305f9b6dd197e6d1d -size 71244 +oid sha256:f0f17910535315498aefbea2bb6ab090a7d86896558ce9fc360bcb065502acb6 +size 71231 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en.png index e91eb18e33..3ea53f7f2c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce6a863ecf0624e1d5b0454be049ccae70a3bb0f5d630f64f47f3b982a1b3e2d -size 79707 +oid sha256:178c5a54819558973cac3b0a581c42278bdf0f86b21d21187a64fbf6dc0184a7 +size 79661 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en.png index 3e1498d992..a4f31dc1db 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1cb71f2569eaca01145357514391b38b6ffc6c728356e8a36fe3aec4824ab48 -size 61203 +oid sha256:a8bbe99e3f3686d38176ac7a3833ced49e05023025aa287c1cb4c8d0f7ae992b +size 61150 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en.png index af569a040a..a772709fc1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d8aae51431f4b3468d8b0d1aa09147260e11d89ac7c2a11e7a822b81dcbee7c -size 60165 +oid sha256:4da6aa4ff5b063a0eb0bec7550a4306f22427f0a10dd65b7a3a03419dac43d47 +size 60118 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en.png index d63cb12ff4..3e06d26688 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4564918536390a6e690591593ad1d6c5e852b9db5730c567496afdef1ce9c1c -size 66879 +oid sha256:a01f535e55351ea42980bb7afa918bbd58bc41bede32ff73bb402eb5c4db7b58 +size 66848 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en.png index e9bf61bc64..a6685f1f13 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67a410e36136cf9f80aebc16d896b250c63b7c8049e9f418a6440f257e79ffe5 -size 87882 +oid sha256:a8896aaf421365ce42a2f7b83dfa71fe7c541a99053dc47649140881698613fc +size 87845 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en.png index dacd1fe7f2..017eea5ad2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59fa72e87148fdf5caa311fcf0e5076a22dea083da97b66cda3e023346ebe8b2 -size 59566 +oid sha256:63dc10fed81ee563b5779f552419035af304663e5475abf16f390e9cb50715a5 +size 59524 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en.png index b358936171..9dbfe5d5a2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5934239776646bb310e64f3c0a490f3795dd903a2f7dda08e2a477fbb86d35f -size 60648 +oid sha256:25f1e03b14fc39ea069bcb1fda30d49e839dca025523ead7590990831a0b9188 +size 60651 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en.png index 1164dcb827..df2cda9dde 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c886a4dc307747f4c5606c716d490f8386f2f42c9283cc98ee3565d7fdc6ffb7 -size 66553 +oid sha256:5bb9258874c2cbea357264ac2044a44a2742671319d19300c648e84809442f4a +size 66517 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en.png index ec78e7fc37..a374e89168 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c3a6806571151ac5dcecbac9f9087e14cf000ac04578d6ce796a5fb3bf5b3f6 -size 59166 +oid sha256:c546ed7f7120d1de974507fc28e3b7e7a479c71958b739180699947c60f69d2d +size 59132 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_0_en.png index cf3f8697e1..f6d18cd7bf 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:660df845d14679da73743f645d265c5b896f15be2712f68d7977d99456a3d1c2 -size 76155 +oid sha256:2ba108d5a6b47d399849a37468fa3e0814e0469b2d8d01b626fda26edd4936e5 +size 76184 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_10_en.png index d6f016ae8a..17e7f17865 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b4c9135d552c45c3f86c850e4580257f4908d7fa74f5267fd1d6bf6e4aa5f5e -size 59696 +oid sha256:e5586fcace98fec1a9f022eca4469c975d8f7f07b86fbfeb3f797496592c8c1d +size 59697 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_11_en.png index a865be4e28..5a45b8b26d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb979724a6de90c6f6e06183de923b80bad51ce9225e1bc795e38ee514eab43e -size 74337 +oid sha256:6748b4bf4ca59bd5f3a38f5f9f5aa5e630e88b88aa6efff93f3db2812f00bb9f +size 74353 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_1_en.png index 63d9e2f1b7..fea62b9f00 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27a0d82911078b1a5a55382d296ceb1773c5096a962b1610f4203a1a1521e9c5 -size 85593 +oid sha256:6cdb6014269158e45b8fd0a559f43410f032592415731f5918f47b78cd8ae940 +size 85614 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_2_en.png index a58c69e329..eedafd662e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27b7a275237985c9837b7e137112002d900ac95eacda7e65c7779a31d79f36c3 +oid sha256:e56130ab0a81addc71a7199a8226e1f15a6adc4f4223caca635f4d2178831288 size 62757 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_3_en.png index fc7c0f29ec..f59e4c9b32 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75eb7d13033ae3a87e2b118141c8560ca701c1b97612f70568969b8d5f5d8dc4 -size 61811 +oid sha256:fced91f54b172f7b70ab9339767744872b432db944ccb88430dce3fdbc404759 +size 61815 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_4_en.png index dccbdd2ed6..8b8d282f73 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7fbb5d02a97d4b9a92e3411852b2f61febdd03501e057216ea12faf50f18ce4 -size 69777 +oid sha256:eaa5ec8204f8490a32e25ab478eaea49694b0d72e825cfcd72e52492e19a4cf9 +size 69788 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_5_en.png index 40f59ebb9e..3b7884e81f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4cd67f76c8a984141b6ad091815c291fccc19a1ba617406a85f3a81c787316e0 -size 104380 +oid sha256:3cdbaee3a7f9568eb6976b1e24ca185522277925aecda287ef2d3a2b3c18b304 +size 104384 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_6_en.png index 405e629e48..d1612612e4 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3291af958feb1636b0ec02543a217e1938a1597408608ea803ed9153a7e8cfb -size 60982 +oid sha256:43251d74f11ebb90490a36c3e79245083c8e11d0e32f33d93be07f913b5fbcb1 +size 60990 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_7_en.png index caf4bd666e..13a98d930c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be8653a4ac6644f61b3e6606627f884a4ff0690ddf5c9abdc9f106c7422ae64a -size 62932 +oid sha256:8175a640357de5e3b3d44e1246d960150480b11d5b3fb17be8a95e7215c22910 +size 62918 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_8_en.png index f159857937..489cec3d9d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d6613f2f19be66667a6a348377b6e5c7a46642ef8aa49d60ea6f6a3ba40b356 -size 70251 +oid sha256:c70e04e7f94fa45d72bdcfa680846e456965c51c5be33011f10eebbeb0755ecd +size 70247 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_9_en.png index 7f43a6fba0..2cd4281638 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93d2392588a01a78b46231d6d34d1dd72036bf92410bfd35abfa53f7688567bf -size 60355 +oid sha256:b4c91b0ad4f1dcaabd8eeb7a9158c8c5b3b88696db34e254b01d60ca31e0ac30 +size 60361 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_0_en.png index e12f0a0e80..99dcf6d289 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:154362f2087618beb344f8f08ce2dad4e4778f29e90dcb55a09906c81506d405 -size 73487 +oid sha256:d8d8e2b07c6a43ed264a0f632347ebc7c251f732cd1c4e44dd72b21c4f3060c8 +size 73458 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_10_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_10_en.png index 4f92888f59..ba04e9b9ce 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4e0cee61deaf7488a04605919ef5997563668f6d53313d1a1c557fbd1071702 -size 57610 +oid sha256:e088b8f7f4fc15ddf3e1862a5c3a6d5208fec52036e2492a265cddaf9bef9876 +size 57612 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_11_en.png index b9cfb47748..d170192ee3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3585a00f29dfa40a0b24a1f4b5c021fbd19987bd10eeeb7fc930800c5b4062fa -size 71877 +oid sha256:3eebfc2ecb5be3025cd9080fe959b6ad5468c8f7faa67b73f01efe1ccec68a70 +size 71855 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_1_en.png index 7980cb3f6f..8f595d1cd0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b08e93ceff370fdbde7b71d9939f5ebf687d2181fdcc2a9ac2611ee0b6ac29f6 -size 82841 +oid sha256:6052570659a9a682a8084a4e2226347a9603388672ed7db52cc9734dfb0b25c0 +size 82810 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_2_en.png index 0de4868216..09d655c7d6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f8c4ed55357fc1b1f7fb24e33a6babf364b85750f822a8bfa76cb3f0667c280 -size 60724 +oid sha256:e09bb1059cc35adefedc01cff963b0dd31bcd6e4743fa83a74b29cbce4d04f6d +size 60718 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_3_en.png index 7bee87ec5b..4fbbbd8ebb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3a797c5e02f47ea35696cbc1114565ed1dbbff688b7fd878adfec114a06e6a2 -size 59814 +oid sha256:bf45d7b5f3183ff55a26d07a5a31c2bb34fc3a3592f10a0c6666557fe12cf7bd +size 59821 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_4_en.png index b1ab0eb623..094db82643 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5106ac2212034c28faaef131632aeef28fa4946cb634e1a058c4f6e374f04f05 -size 67695 +oid sha256:f651e19b3b7a1ff44fca6c1cb158d76aa2e1363945b1de906a8234958625bd58 +size 67707 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_5_en.png index c64faff6af..56d751b3ab 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a205eb6342275a5c23ceb6e1947ff9f6591a6c596ca6f95542aac84417acfa99 +oid sha256:88468b89ecb5295a115d1a6ab021f4b443590c4ab89481c08529d328633f9901 size 101403 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_6_en.png index f35f6d1a2c..97004b60ac 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:814308b7dd22558ce6e46d3a26f991768b5da555c416fe0a125dfb0fa5829ef0 -size 58902 +oid sha256:ca49c6ac12f6b4348dd10d69e1a6bcc79e52423980456d587ad0332aaa555bba +size 58905 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_7_en.png index 6ee853bb64..958a247983 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:953099ce0958e53caf6d005bf85b643f1fa4b0283a2d111c0d78e45306c8d6b2 -size 60792 +oid sha256:30a48506282935e77fdde11de47645ace0d952d9f576ea502e82d5a0beaedc3e +size 60796 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_8_en.png index e48fcd6317..2e052d25c1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bdf053e4015341f5d31900d46615ab93e63b8b4bde4a9a64a0b02f0b3684e03 -size 68032 +oid sha256:fa467616893506c39c02b46c8215fbdb490330719d19b7108f9d17b50ea444f3 +size 68039 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_9_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_9_en.png index b83be13812..56c9a485f5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerReply_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6c16525bc6947b841b0328c1b2c5c4773738480c10417acc3b8eee716a686da -size 58386 +oid sha256:adb1b69843b2c31d172ce95a1bf24209bd43a6d981e2284f3d6e535845a097c4 +size 58397 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en.png index 6533365a7e..8f6cf01450 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ce2282233e994df1f2604b880402d7debc0fb45cb7f7e2cd407d4399ba0261e -size 56736 +oid sha256:efc225d678533e384bb0faf6daeb385f35b72b27ef2e6c7420d5794966920c3b +size 56765 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en.png index 2bb2f5813c..2f51e7b55a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b363fffe53224132aba3202078866748d60229a2ce92423a70c7705f7ac97a6 -size 54174 +oid sha256:c76814aa7953eb75dcb0a1fddcb4b9dc755c863003dc8acfc0e41701f9db95f2 +size 54185 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Day_0_en.png index 13aeddb3cc..5d5f6dab49 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc2e33854bfd9f07a543bb46a4494163d0d952d087399dc36950cbe3186ed673 -size 46540 +oid sha256:7fd1354fd2c575377e54786f31fb85ca911a45c8a61c2ddb512750f237c04aad +size 46546 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Night_0_en.png index fd6f6c2e7a..bd239b5b52 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerSimple_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab4f82108e8fdaf891b2dd7c9b153a5469505d458ff32473c9af1816c0f4cf65 -size 44573 +oid sha256:952dc4ee93a9e29221bb2307474e6de721b1a54543f2c43d9c9c30eda2585fff +size 44559 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png index 97942d6bce..be74924cc6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c68d71e57f09c6c5e43599d85283d3e98bb118456020f734813b32126e7f55be -size 37713 +oid sha256:2429482b11d6a507830a38c9bf483687d2d6b4c9e33ee2ad063d2fb6199e0f44 +size 37673 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png index 2eb4359074..8f6d149a61 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f281d814c40ac7b7931cf1a99665cd29c47221f9cff7a6dc4837a9136d894230 -size 35749 +oid sha256:2fdc8ba783be4355b0a436473082151225811652c2b03cb11c19c26bca0e2ac7 +size 35756 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png index 682e50ebae..0dda2f3ca1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7125fe68ccc21f947e0f8fce564145466095c1723aeb40e02f2619d55dcb0a8e -size 26514 +oid sha256:9477cd51e70796a6e3d1eeaad1270db5c37ae40f0cfffea38f8d09f8f743b266 +size 26488 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png index c7ef114f60..1f50879399 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2fe785e4e13ecadc8f36bbe350d6bcdcf4f6a06d40895d9e5ed330a45419b2a -size 25522 +oid sha256:f891e663e2d8649629ef9fe5c4f79a71ad5304fdc1b450946ddd6975237eb329 +size 25502 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en.png index f3ae2c5aa9..c6732cd91c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eee43b97d23203a19a60257c011ef864535f70e0d2560a257351c46fd44b82ed -size 12620 +oid sha256:542afa9710e2bc3ab3275bb95241c2cc67f2c9d962da6f521233373bbeae4b33 +size 12625 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en.png index 04fd821a29..0550e99778 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5827a89cad43271d71cd0682a851a73eeaee5b9530014e4901bb7997838c9e25 -size 44718 +oid sha256:6ef584a17e342214ec554371f3834308a69aac7ed8a3d21faeba473131c13efe +size 44734 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en.png index 8dd9fb9d61..4d7c971297 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a06a9dba353465e896be6ad051e8ed19e951992acb5bac3ef624e1012b367f0 -size 21047 +oid sha256:f75c3239db28826e121358bbba02e7a93389c7facb987e3f7f18c82df6a9fbce +size 21013 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en.png index c77ea23f32..8c8b84c866 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:692bf4dd932e39d3b3d7c2b234524b9e31a288808b1a5c4574e3a0ca19d6a725 -size 23296 +oid sha256:a18d32095d18270de167ba4af90c554343d25e44bd70f6950b15e6b5ae855d7d +size 23261 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en.png index 0284ec265f..b44569cdd7 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16d18af991406a9593533035293b131a9ae1be2c833e36cd3c8040b5c2fd4587 -size 12255 +oid sha256:d42baa6d0bcd2a0592c5baff4aeba57bff2e15be804925e3552e6fb4197dd622 +size 12247 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en.png index 2cfa7c27f6..ecd1a139e6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22d1b4f8ae6ecad4d2e9c7a4f204a7d0b6fc425437bee5e589e6c9e70a1179fd -size 43283 +oid sha256:ce0a512f0e2fd0a14c90e0755511d1d440f82c05c5ee2511b7a7ce4ef9bb4e8f +size 43273 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en.png index b5288e7305..fdadd6e62d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75d98e98cbaddec5615c30f88912e47cb91fb006bd6489e4d75370a5845e710a -size 19351 +oid sha256:0517660d49b45f4b9d1a620b9bab52178bc9904fe166eb2874e2a8d3ae0f5d2e +size 19366 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en.png index 616133a868..d76d27ef4e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:303c3a69b1ed1bcb8bf2253b8a70f2a8c06171e583f43dbc10023d66880c9e6d -size 21309 +oid sha256:4fad770fbfb78fd80d8ddf8ebfba10b7e57c3e1fcc972e7aba90e2df83929d0e +size 21325 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en.png index 1f6cd2b1d3..e872dcb55e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c41d94a5e334bfbb60bac99bf1f830a74c3994734975a1c40cece8500403a9b -size 30281 +oid sha256:6d2e5604b679bb3fb3b7aead79b9667390ee94eb81accd849c6c26df4142de64 +size 30288 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en.png index fe0b50f07f..bf812f52de 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd217b306a36286e354df8e04643562e38949ce132eb8094ef44db713b358c3c -size 19637 +oid sha256:167da347e6d04d92b05acbc53b25e13ba0ad0eea9526eedb1255c36c5297626e +size 19645 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en.png index 2442a17143..461d7d5cfe 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9051334b3879fe2a6fb56a3c573ecb49eca7700a94184d828e2c0329cbb82b4b -size 25070 +oid sha256:adbb46497ad160ba60e8776ce3593dfce0f2ab0c1f83310c8da100c64c88f979 +size 25080 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en.png index b349c7018d..96f22e4238 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d060bf7e4f14055aaf7680c2d0e6c26c68800a89bbedabbd10190e8ea760e1f -size 30378 +oid sha256:0b9777ae12f4e8ab73972128015d7dd1592ed05b71b06c7f840aec66c76482ed +size 30385 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en.png index b39b390640..94ddd5803f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9835c25b5fa9efd2acbf5e0e5983cccd802993581c1feafea8f97eb93c0250dc -size 24317 +oid sha256:42957a2ae0191d32091c4967d17c96fc1f11be3573b3d6898493ac91c741535a +size 24327 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en.png index 4a4ad6f05c..0ac1aabc91 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5f26b1cdb6985a9887d94eb6d146f99cd0982dee3eb7e78099d7bd0bfab9071 -size 36128 +oid sha256:ca2b297b6026286403ca8164b799cfd017e099b8a6b4d833c6e5b8e03d53630e +size 36148 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en.png index 6b70a61340..d8b764bb07 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dea003977083a0d5036b7a45508d48d7165810c2ecf4eb2a03c9f458b3b5c3c -size 25334 +oid sha256:aed6d50b3cd62c99497b355da815cd59cc01a112c9ca7846d0567055bd3ae8b5 +size 25325 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en.png index 155dbfa255..e7f025c72c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0563ee2ec774c41d51af5e2b99e9d1c25256dde6f522ae636c5bb70d8da6a61e -size 24205 +oid sha256:0d5b409d51a29a72dfe541663faa4e43a99b2ae9fd8ede370b47e6f3b27d50c8 +size 24199 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en.png index 222c5f970e..7e633ac64b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d1f44c9ac7b57f889890d5b6af10600565c79ab3596c34acd7f32816ff162ed -size 29320 +oid sha256:ee444a132cb66adc19416dd73b9925d3db5a7fc7708324f19bfdaa4d210ef931 +size 29296 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en.png index a44c05cf8b..bcb33a1a13 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10f6c887b04447dd7b6fc24412b289894dad68cf5a6930e078499d4adacf47b5 -size 19187 +oid sha256:b370b20bf09f8691f882326eff8ec477870d067cd7fb9c333f2712659575c0aa +size 19153 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en.png index 40126799db..aca7215e3c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50fb2b753bdad6a9df4ce2f55a552464e229c7b81be16e0d4f5c8e4e4b3d129b -size 24312 +oid sha256:9b86306a131970f7f1eadecf0a2291ce1dcd27b1d087e515e1118412976811c8 +size 24285 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en.png index 7ad44759d3..8686ebbb56 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54f11f0973a271b011bb62a0b614743ab9f99e7b3390f40a3b0404ffc639c424 -size 29462 +oid sha256:f418e764b15b6b5a88c886f3f526966dd57cfe297d0bf46099ab01872598fc0b +size 29424 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en.png index b3d11988e0..4b5ba51bd1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1f151cfc61850755e2d775cf51403ad6a9ecfeddf32bcb88d070e96b7aed220 -size 23687 +oid sha256:ca102c7be8c52f3d0e605a1c5379dc62ef9e486918a4c8c8f0598e39a50dd003 +size 23662 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en.png index 1df30bd8f9..54561d8eaa 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c438220907bd20f450a11a0a6efdcd333767c1fcfb78694980cec6ebe48da461 -size 34887 +oid sha256:b2d96886653f9ad35d50a3e45e6e579367dd92a99cae621f43f40334b2dbdcc1 +size 34854 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en.png index e7ec4beb77..77411d24e8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d30a402a904abbdb3ab0a1aec1d637219bef4491bd2541e30010aba0b7e6351 -size 24556 +oid sha256:f6f3d5f6ad7e08a807731fa468b6e4b2fc0cf1aa97e6360698bade55a92a9f04 +size 24529 diff --git a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en.png index 29bd1a834a..4cbc4e68ae 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a7d6984fc2fe26c2a02a3d9054698a3a7fcd611bd4a04914344f26a5da773fb -size 23604 +oid sha256:574f069c4eb05c08c815870929132ddec98cf3e96201d6dc4167e9b7dbe2b1bc +size 23572 From 5f5d1a21ba43f33281adece53661f8bb5df36703 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 10 Oct 2025 14:13:32 +0200 Subject: [PATCH 043/898] Replace Uri by String in State that are used in Composable function. --- .../configureroom/ConfigureRoomPresenter.kt | 3 ++- .../impl/configureroom/ConfigureRoomView.kt | 3 +-- .../impl/configureroom/CreateRoomConfig.kt | 6 +---- .../configureroom/CreateRoomConfigStore.kt | 2 +- .../ConfigureRoomPresenterTest.kt | 13 +++++----- .../editprofile/EditUserProfilePresenter.kt | 24 +++++++++++-------- .../user/editprofile/EditUserProfileState.kt | 6 +---- .../EditUserProfileStateProvider.kt | 6 ++--- .../EditUserProfilePresenterTest.kt | 20 +++++++++------- .../impl/edit/RoomDetailsEditPresenter.kt | 20 ++++++++-------- .../impl/edit/RoomDetailsEditState.kt | 6 +---- .../impl/edit/RoomDetailsEditStateProvider.kt | 6 ++--- .../impl/edit/RoomDetailsEditPresenterTest.kt | 22 +++++++++-------- .../ui/components/EditableAvatarView.kt | 20 +++++++--------- .../matrix/ui/components/UnsavedAvatar.kt | 7 +++--- 15 files changed, 77 insertions(+), 87 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt index 29b9842abe..ae28b95bba 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.core.net.toUri import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.CreatedRoom import io.element.android.libraries.architecture.AsyncAction @@ -157,7 +158,7 @@ class ConfigureRoomPresenter( createRoomAction: MutableState> ) = launch { suspend { - val avatarUrl = config.avatarUri?.let { uploadAvatar(it) } + val avatarUrl = config.avatarUri?.let { uploadAvatar(it.toUri()) } val params = if (config.roomVisibility is RoomVisibilityState.Public) { CreateRoomParameters( name = config.roomName, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt index 8c56607a22..cd8c1e7674 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt @@ -7,7 +7,6 @@ package io.element.android.features.createroom.impl.configureroom -import android.net.Uri import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -192,7 +191,7 @@ private fun ConfigureRoomToolbar( @Composable private fun RoomNameWithAvatar( - avatarUri: Uri?, + avatarUri: String?, roomName: String, onAvatarClick: () -> Unit, onChangeRoomName: (String) -> Unit, diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt index f157dda2d5..797000b21e 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfig.kt @@ -7,18 +7,14 @@ package io.element.android.features.createroom.impl.configureroom -import android.net.Uri -import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.user.MatrixUser import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf -// Annotate with @Immutable since `Uri` is unstable -@Immutable data class CreateRoomConfig( val roomName: String? = null, val topic: String? = null, - val avatarUri: Uri? = null, + val avatarUri: String? = null, val invites: ImmutableList = persistentListOf(), val roomVisibility: RoomVisibilityState = RoomVisibilityState.Private, ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfigStore.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfigStore.kt index f2701216c3..671141bf5a 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfigStore.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/CreateRoomConfigStore.kt @@ -62,7 +62,7 @@ class CreateRoomConfigStore( fun setAvatarUri(uri: Uri?, cached: Boolean = false) { cachedAvatarUri = uri.takeIf { cached } createRoomConfigFlow.getAndUpdate { config -> - config.copy(avatarUri = uri) + config.copy(avatarUri = uri?.toString()) } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/startchat/impl/configureroom/ConfigureRoomPresenterTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/startchat/impl/configureroom/ConfigureRoomPresenterTest.kt index 635a2b330e..08dd1e904f 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/startchat/impl/configureroom/ConfigureRoomPresenterTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/startchat/impl/configureroom/ConfigureRoomPresenterTest.kt @@ -8,6 +8,7 @@ package io.element.android.features.startchat.impl.configureroom import android.net.Uri +import androidx.core.net.toUri import app.cash.turbine.TurbineTestContext import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.CreatedRoom @@ -155,15 +156,15 @@ class ConfigureRoomPresenterTest { // Pick avatar pickerProvider.givenResult(null) // From gallery - val uriFromGallery = Uri.parse(AN_URI_FROM_GALLERY) - pickerProvider.givenResult(uriFromGallery) + val uriFromGallery = AN_URI_FROM_GALLERY + pickerProvider.givenResult(uriFromGallery.toUri()) newState.eventSink(ConfigureRoomEvents.HandleAvatarAction(AvatarAction.ChoosePhoto)) newState = awaitItem() expectedConfig = expectedConfig.copy(avatarUri = uriFromGallery) assertThat(newState.config).isEqualTo(expectedConfig) // From camera - val uriFromCamera = Uri.parse(AN_URI_FROM_CAMERA) - pickerProvider.givenResult(uriFromCamera) + val uriFromCamera = AN_URI_FROM_CAMERA + pickerProvider.givenResult(uriFromCamera.toUri()) assertThat(newState.cameraPermissionState.permissionGranted).isFalse() newState.eventSink(ConfigureRoomEvents.HandleAvatarAction(AvatarAction.TakePhoto)) newState = awaitItem() @@ -175,8 +176,8 @@ class ConfigureRoomPresenterTest { expectedConfig = expectedConfig.copy(avatarUri = uriFromCamera) assertThat(newState.config).isEqualTo(expectedConfig) // Do it again, no permission is requested - val uriFromCamera2 = Uri.parse(AN_URI_FROM_CAMERA_2) - pickerProvider.givenResult(uriFromCamera2) + val uriFromCamera2 = AN_URI_FROM_CAMERA_2 + pickerProvider.givenResult(uriFromCamera2.toUri()) newState.eventSink(ConfigureRoomEvents.HandleAvatarAction(AvatarAction.TakePhoto)) newState = awaitItem() expectedConfig = expectedConfig.copy(avatarUri = uriFromCamera2) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt index 0cd0144986..c894aae05d 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt @@ -62,21 +62,21 @@ class EditUserProfilePresenter( @Composable override fun present(): EditUserProfileState { val cameraPermissionState = cameraPermissionPresenter.present() - var userAvatarUri by rememberSaveable { mutableStateOf(matrixUser.avatarUrl?.toUri()) } + var userAvatarUri by rememberSaveable { mutableStateOf(matrixUser.avatarUrl) } var userDisplayName by rememberSaveable { mutableStateOf(matrixUser.displayName) } val cameraPhotoPicker = mediaPickerProvider.registerCameraPhotoPicker( onResult = { uri -> if (uri != null) { - temporaryUriDeleter.delete(userAvatarUri) - userAvatarUri = uri + temporaryUriDeleter.delete(userAvatarUri?.toUri()) + userAvatarUri = uri.toString() } } ) val galleryImagePicker = mediaPickerProvider.registerGalleryImagePicker( onResult = { uri -> if (uri != null) { - temporaryUriDeleter.delete(userAvatarUri) - userAvatarUri = uri + temporaryUriDeleter.delete(userAvatarUri?.toUri()) + userAvatarUri = uri.toString() } } ) @@ -102,7 +102,12 @@ class EditUserProfilePresenter( val localCoroutineScope = rememberCoroutineScope() fun handleEvents(event: EditUserProfileEvents) { when (event) { - is EditUserProfileEvents.Save -> localCoroutineScope.saveChanges(userDisplayName, userAvatarUri, matrixUser, saveAction) + is EditUserProfileEvents.Save -> localCoroutineScope.saveChanges( + name = userDisplayName, + avatarUri = userAvatarUri?.toUri(), + currentUser = matrixUser, + action = saveAction, + ) is EditUserProfileEvents.HandleAvatarAction -> { when (event.action) { AvatarAction.ChoosePhoto -> galleryImagePicker.launch() @@ -113,7 +118,7 @@ class EditUserProfilePresenter( cameraPermissionState.eventSink(PermissionsEvents.RequestPermissions) } AvatarAction.Remove -> { - temporaryUriDeleter.delete(userAvatarUri) + temporaryUriDeleter.delete(userAvatarUri?.toUri()) userAvatarUri = null } } @@ -145,9 +150,8 @@ class EditUserProfilePresenter( private fun hasDisplayNameChanged(name: String?, currentUser: MatrixUser) = name?.trim() != currentUser.displayName?.trim() - private fun hasAvatarUrlChanged(avatarUri: Uri?, currentUser: MatrixUser) = - // Need to call `toUri()?.toString()` to make the test pass (we mockk Uri) - avatarUri?.toString()?.trim() != currentUser.avatarUrl?.toUri()?.toString()?.trim() + private fun hasAvatarUrlChanged(avatarUri: String?, currentUser: MatrixUser) = + avatarUri?.trim() != currentUser.avatarUrl?.trim() private fun CoroutineScope.saveChanges( name: String?, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt index a2d5d7a653..c2bdf11a63 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileState.kt @@ -7,20 +7,16 @@ package io.element.android.features.preferences.impl.user.editprofile -import android.net.Uri -import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.permissions.api.PermissionsState import kotlinx.collections.immutable.ImmutableList -// Annotate with @Immutable since `Uri` is unstable -@Immutable data class EditUserProfileState( val userId: UserId, val displayName: String, - val userAvatarUrl: Uri?, + val userAvatarUrl: String?, val avatarActions: ImmutableList, val saveButtonEnabled: Boolean, val saveAction: AsyncAction, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt index 0e4c1b4f2d..6af3c185c2 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfileStateProvider.kt @@ -7,9 +7,7 @@ package io.element.android.features.preferences.impl.user.editprofile -import android.net.Uri import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import androidx.core.net.toUri import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.permissions.api.aPermissionsState @@ -19,13 +17,13 @@ open class EditUserProfileStateProvider : PreviewParameterProvider get() = sequenceOf( aEditUserProfileState(), - aEditUserProfileState(userAvatarUrl = "example://uri".toUri()), + aEditUserProfileState(userAvatarUrl = "example://uri"), // Add other states here ) } fun aEditUserProfileState( - userAvatarUrl: Uri? = null, + userAvatarUrl: String? = null, ) = EditUserProfileState( userId = UserId("@john.doe:matrix.org"), displayName = "John Doe", diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt index 947be54785..237951af19 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenterTest.kt @@ -66,7 +66,9 @@ class EditUserProfilePresenterTest { mockkStatic(Uri::class) every { Uri.parse(AN_AVATAR_URL) } returns userAvatarUri + every { userAvatarUri.toString() } returns AN_AVATAR_URL every { Uri.parse(ANOTHER_AVATAR_URL) } returns anotherAvatarUri + every { anotherAvatarUri.toString() } returns ANOTHER_AVATAR_URL } @After @@ -102,7 +104,7 @@ class EditUserProfilePresenterTest { val initialState = awaitItem() assertThat(initialState.userId).isEqualTo(user.userId) assertThat(initialState.displayName).isEqualTo(user.displayName) - assertThat(initialState.userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(initialState.userAvatarUrl).isEqualTo(AN_AVATAR_URL) assertThat(initialState.avatarActions).containsExactly( AvatarAction.ChoosePhoto, AvatarAction.TakePhoto, @@ -127,16 +129,16 @@ class EditUserProfilePresenterTest { }.test { val initialState = awaitItem() assertThat(initialState.displayName).isEqualTo("Name") - assertThat(initialState.userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(initialState.userAvatarUrl).isEqualTo(AN_AVATAR_URL) initialState.eventSink(EditUserProfileEvents.UpdateDisplayName("Name II")) awaitItem().apply { assertThat(displayName).isEqualTo("Name II") - assertThat(userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(userAvatarUrl).isEqualTo(AN_AVATAR_URL) } initialState.eventSink(EditUserProfileEvents.UpdateDisplayName("Name III")) awaitItem().apply { assertThat(displayName).isEqualTo("Name III") - assertThat(userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(userAvatarUrl).isEqualTo(AN_AVATAR_URL) } initialState.eventSink(EditUserProfileEvents.HandleAvatarAction(AvatarAction.Remove)) awaitItem().apply { @@ -160,10 +162,10 @@ class EditUserProfilePresenterTest { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(initialState.userAvatarUrl).isEqualTo(AN_AVATAR_URL) initialState.eventSink(EditUserProfileEvents.HandleAvatarAction(AvatarAction.ChoosePhoto)) awaitItem().apply { - assertThat(userAvatarUrl).isEqualTo(anotherAvatarUri) + assertThat(userAvatarUrl).isEqualTo(ANOTHER_AVATAR_URL) } } } @@ -185,7 +187,7 @@ class EditUserProfilePresenterTest { presenter.present() }.test { val initialState = awaitItem() - assertThat(initialState.userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(initialState.userAvatarUrl).isEqualTo(AN_AVATAR_URL) assertThat(initialState.cameraPermissionState.permissionGranted).isFalse() initialState.eventSink(EditUserProfileEvents.HandleAvatarAction(AvatarAction.TakePhoto)) val stateWithAskingPermission = awaitItem() @@ -194,12 +196,12 @@ class EditUserProfilePresenterTest { val stateWithPermission = awaitItem() assertThat(stateWithPermission.cameraPermissionState.permissionGranted).isTrue() val stateWithNewAvatar = awaitItem() - assertThat(stateWithNewAvatar.userAvatarUrl).isEqualTo(anotherAvatarUri) + assertThat(stateWithNewAvatar.userAvatarUrl).isEqualTo(ANOTHER_AVATAR_URL) // Do it again, no permission is requested fakePickerProvider.givenResult(userAvatarUri) stateWithNewAvatar.eventSink(EditUserProfileEvents.HandleAvatarAction(AvatarAction.TakePhoto)) val stateWithNewAvatar2 = awaitItem() - assertThat(stateWithNewAvatar2.userAvatarUrl).isEqualTo(userAvatarUri) + assertThat(stateWithNewAvatar2.userAvatarUrl).isEqualTo(AN_AVATAR_URL) deleteCallback.assertions().isCalledExactly(2).withSequence( listOf(value(userAvatarUri)), listOf(value(anotherAvatarUri)), diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt index 2520d0d29c..6e318d5f45 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt @@ -61,11 +61,11 @@ class RoomDetailsEditPresenter( val cameraPermissionState = cameraPermissionPresenter.present() val roomSyncUpdateFlow = room.syncUpdateFlow.collectAsState() - val roomAvatarUri = room.avatarUrl()?.toUri() - var roomAvatarUriEdited by rememberSaveable { mutableStateOf(null) } + val roomAvatarUri = room.avatarUrl() + var roomAvatarUriEdited by rememberSaveable { mutableStateOf(null) } LaunchedEffect(roomAvatarUri) { // Every time the roomAvatar change (from sync), we can set the new avatar. - temporaryUriDeleter.delete(roomAvatarUriEdited) + temporaryUriDeleter.delete(roomAvatarUriEdited?.toUri()) roomAvatarUriEdited = roomAvatarUri } @@ -107,16 +107,16 @@ class RoomDetailsEditPresenter( val cameraPhotoPicker = mediaPickerProvider.registerCameraPhotoPicker( onResult = { uri -> if (uri != null) { - temporaryUriDeleter.delete(roomAvatarUriEdited) - roomAvatarUriEdited = uri + temporaryUriDeleter.delete(roomAvatarUriEdited?.toUri()) + roomAvatarUriEdited = uri.toString() } } ) val galleryImagePicker = mediaPickerProvider.registerGalleryImagePicker( onResult = { uri -> if (uri != null) { - temporaryUriDeleter.delete(roomAvatarUriEdited) - roomAvatarUriEdited = uri + temporaryUriDeleter.delete(roomAvatarUriEdited?.toUri()) + roomAvatarUriEdited = uri.toString() } } ) @@ -147,8 +147,8 @@ class RoomDetailsEditPresenter( newNameTrimmed = roomRawNameEdited.trim(), currentTopicTrimmed = roomTopicTrimmed, newTopicTrimmed = roomTopicEdited.trim(), - currentAvatar = roomAvatarUri, - newAvatarUri = roomAvatarUriEdited, + currentAvatar = roomAvatarUri?.toUri(), + newAvatarUri = roomAvatarUriEdited?.toUri(), action = saveAction, ) is RoomDetailsEditEvents.HandleAvatarAction -> { @@ -161,7 +161,7 @@ class RoomDetailsEditPresenter( cameraPermissionState.eventSink(PermissionsEvents.RequestPermissions) } AvatarAction.Remove -> { - temporaryUriDeleter.delete(roomAvatarUriEdited) + temporaryUriDeleter.delete(roomAvatarUriEdited?.toUri()) roomAvatarUriEdited = null } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt index d9a51e8e06..6f44190461 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditState.kt @@ -7,16 +7,12 @@ package io.element.android.features.roomdetails.impl.edit -import android.net.Uri -import androidx.compose.runtime.Immutable import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.permissions.api.PermissionsState import kotlinx.collections.immutable.ImmutableList -// Annotate with @Immutable since `Uri` is unstable -@Immutable data class RoomDetailsEditState( val roomId: RoomId, /** The raw room name (i.e. the room name from the state event `m.room.name`), not the display name. */ @@ -24,7 +20,7 @@ data class RoomDetailsEditState( val canChangeName: Boolean, val roomTopic: String, val canChangeTopic: Boolean, - val roomAvatarUrl: Uri?, + val roomAvatarUrl: String?, val canChangeAvatar: Boolean, val avatarActions: ImmutableList, val saveButtonEnabled: Boolean, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt index 7ae59febc0..f1dcc2463d 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt @@ -7,9 +7,7 @@ package io.element.android.features.roomdetails.impl.edit -import android.net.Uri import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import androidx.core.net.toUri import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.ui.media.AvatarAction @@ -23,7 +21,7 @@ open class RoomDetailsEditStateProvider : PreviewParameterProvider = emptyList(), saveButtonEnabled: Boolean = true, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt index 996cbcfece..ab80113870 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenterTest.kt @@ -66,7 +66,9 @@ class RoomDetailsEditPresenterTest { mockkStatic(Uri::class) every { Uri.parse(AN_AVATAR_URL) } returns roomAvatarUri + every { roomAvatarUri.toString() } returns AN_AVATAR_URL every { Uri.parse(ANOTHER_AVATAR_URL) } returns anotherAvatarUri + every { anotherAvatarUri.toString() } returns ANOTHER_AVATAR_URL } @After @@ -107,7 +109,7 @@ class RoomDetailsEditPresenterTest { val initialState = awaitFirstItem() assertThat(initialState.roomId).isEqualTo(room.roomId) assertThat(initialState.roomRawName).isEqualTo(A_ROOM_RAW_NAME) - assertThat(initialState.roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(initialState.roomAvatarUrl).isEqualTo(AN_AVATAR_URL) assertThat(initialState.roomTopic).isEqualTo(room.info().topic.orEmpty()) assertThat(initialState.avatarActions).containsExactly( AvatarAction.ChoosePhoto, @@ -233,24 +235,24 @@ class RoomDetailsEditPresenterTest { val initialState = awaitFirstItem() assertThat(initialState.roomTopic).isEqualTo("My topic") assertThat(initialState.roomRawName).isEqualTo("Name") - assertThat(initialState.roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(initialState.roomAvatarUrl).isEqualTo(AN_AVATAR_URL) initialState.eventSink(RoomDetailsEditEvents.UpdateRoomName("Name II")) awaitItem().apply { assertThat(roomTopic).isEqualTo("My topic") assertThat(roomRawName).isEqualTo("Name II") - assertThat(roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(roomAvatarUrl).isEqualTo(AN_AVATAR_URL) } initialState.eventSink(RoomDetailsEditEvents.UpdateRoomName("Name III")) awaitItem().apply { assertThat(roomTopic).isEqualTo("My topic") assertThat(roomRawName).isEqualTo("Name III") - assertThat(roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(roomAvatarUrl).isEqualTo(AN_AVATAR_URL) } initialState.eventSink(RoomDetailsEditEvents.UpdateRoomTopic("Another topic")) awaitItem().apply { assertThat(roomTopic).isEqualTo("Another topic") assertThat(roomRawName).isEqualTo("Name III") - assertThat(roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(roomAvatarUrl).isEqualTo(AN_AVATAR_URL) } initialState.eventSink(RoomDetailsEditEvents.HandleAvatarAction(AvatarAction.Remove)) awaitItem().apply { @@ -277,10 +279,10 @@ class RoomDetailsEditPresenterTest { ) presenter.test { val initialState = awaitFirstItem() - assertThat(initialState.roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(initialState.roomAvatarUrl).isEqualTo(AN_AVATAR_URL) initialState.eventSink(RoomDetailsEditEvents.HandleAvatarAction(AvatarAction.ChoosePhoto)) awaitItem().apply { - assertThat(roomAvatarUrl).isEqualTo(anotherAvatarUri) + assertThat(roomAvatarUrl).isEqualTo(anotherAvatarUri.toString()) } } } @@ -303,7 +305,7 @@ class RoomDetailsEditPresenterTest { ) presenter.test { val initialState = awaitFirstItem() - assertThat(initialState.roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(initialState.roomAvatarUrl).isEqualTo(AN_AVATAR_URL) assertThat(initialState.cameraPermissionState.permissionGranted).isFalse() initialState.eventSink(RoomDetailsEditEvents.HandleAvatarAction(AvatarAction.TakePhoto)) val stateWithAskingPermission = awaitItem() @@ -312,12 +314,12 @@ class RoomDetailsEditPresenterTest { val stateWithPermission = awaitItem() assertThat(stateWithPermission.cameraPermissionState.permissionGranted).isTrue() val stateWithNewAvatar = awaitItem() - assertThat(stateWithNewAvatar.roomAvatarUrl).isEqualTo(anotherAvatarUri) + assertThat(stateWithNewAvatar.roomAvatarUrl).isEqualTo(anotherAvatarUri.toString()) // Do it again, no permission is requested fakePickerProvider.givenResult(roomAvatarUri) stateWithNewAvatar.eventSink(RoomDetailsEditEvents.HandleAvatarAction(AvatarAction.TakePhoto)) val stateWithNewAvatar2 = awaitItem() - assertThat(stateWithNewAvatar2.roomAvatarUrl).isEqualTo(roomAvatarUri) + assertThat(stateWithNewAvatar2.roomAvatarUrl).isEqualTo(AN_AVATAR_URL) deleteCallback.assertions().isCalledExactly(3).withSequence( listOf(value(null)), listOf(value(roomAvatarUri)), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt index ad06985ab7..156b488c60 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/EditableAvatarView.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.ui.components -import android.net.Uri import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource @@ -28,7 +27,6 @@ import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp -import androidx.core.net.toUri import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.components.avatar.Avatar @@ -47,7 +45,7 @@ import io.element.android.libraries.ui.strings.CommonStrings fun EditableAvatarView( matrixId: String, displayName: String?, - avatarUrl: Uri?, + avatarUrl: String?, avatarSize: AvatarSize, avatarType: AvatarType, onAvatarClick: () -> Unit, @@ -71,13 +69,13 @@ fun EditableAvatarView( contentDescription = a11yAvatar }, ) { - when (avatarUrl?.scheme) { - null, "mxc" -> { + when { + avatarUrl == null || avatarUrl.startsWith("mxc://") -> { Avatar( avatarData = AvatarData( id = matrixId, name = displayName, - url = avatarUrl?.toString(), + url = avatarUrl, size = avatarSize, ), avatarType = avatarType, @@ -114,7 +112,7 @@ fun EditableAvatarView( @PreviewsDayNight @Composable internal fun EditableAvatarViewPreview( - @PreviewParameter(EditableAvatarViewUriProvider::class) uri: Uri? + @PreviewParameter(EditableAvatarViewUriProvider::class) uri: String? ) = ElementPreview( drawableFallbackForImages = CommonDrawables.sample_avatar, ) { @@ -128,11 +126,11 @@ internal fun EditableAvatarViewPreview( ) } -open class EditableAvatarViewUriProvider : PreviewParameterProvider { - override val values: Sequence +open class EditableAvatarViewUriProvider : PreviewParameterProvider { + override val values: Sequence get() = sequenceOf( null, - "mxc://matrix.org/123456".toUri(), - "https://example.com/avatar.jpg".toUri(), + "mxc://matrix.org/123456", + "https://example.com/avatar.jpg", ) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt index 1e041a69fe..58dba0183c 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/UnsavedAvatar.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.matrix.ui.components -import android.net.Uri import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -43,7 +42,7 @@ import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial */ @Composable fun UnsavedAvatar( - avatarUri: Uri?, + avatarUri: String?, avatarSize: AvatarSize, avatarType: AvatarType, modifier: Modifier = Modifier, @@ -86,8 +85,8 @@ internal fun UnsavedAvatarPreview() = ElementPreview { horizontalArrangement = Arrangement.spacedBy(8.dp), ) { UnsavedAvatar(null, AvatarSize.EditRoomDetails, AvatarType.User) - UnsavedAvatar(Uri.EMPTY, AvatarSize.EditRoomDetails, AvatarType.User) + UnsavedAvatar("", AvatarSize.EditRoomDetails, AvatarType.User) UnsavedAvatar(null, AvatarSize.EditRoomDetails, AvatarType.Space()) - UnsavedAvatar(Uri.EMPTY, AvatarSize.EditRoomDetails, AvatarType.Space()) + UnsavedAvatar("", AvatarSize.EditRoomDetails, AvatarType.Space()) } } From 84774cdc90073923a27b19acce76376a68d566ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:55:28 +0200 Subject: [PATCH 044/898] fix(deps): update wysiwyg to v2.40.0 (#5400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(deps): update wysiwyg to v2.40.0 * Fix API mismatches --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín --- .../impl/messagecomposer/suggestions/SuggestionsProcessor.kt | 1 + gradle/libs.versions.toml | 2 +- .../textcomposer/components/markdown/MarkdownTextInput.kt | 1 + .../element/android/libraries/textcomposer/model/Suggestion.kt | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt index 4f008705a5..85d1220543 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/SuggestionsProcessor.kt @@ -69,6 +69,7 @@ class SuggestionsProcessor { } } SuggestionType.Command, + SuggestionType.Emoji, is SuggestionType.Custom -> { // Clear suggestions emptyList() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6b0f33153f..0cad174a31 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -44,7 +44,7 @@ coil = "3.3.0" showkase = "1.0.5" appyx = "1.7.1" sqldelight = "2.1.0" -wysiwyg = "2.39.0" +wysiwyg = "2.40.0" telephoto = "0.18.0" haze = "1.6.10" diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt index ffce571dc4..99fb298211 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/markdown/MarkdownTextInput.kt @@ -167,6 +167,7 @@ private fun Editable.checkSuggestionNeeded(): Suggestion? { '@' -> SuggestionType.Mention '#' -> SuggestionType.Room '/' -> SuggestionType.Command + ':' -> SuggestionType.Emoji else -> error("Unknown suggestion type. This should never happen.") } Suggestion(startOfWord, endOfWord, suggestionType, text) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt index fc56b7f150..dcf8552099 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/Suggestion.kt @@ -28,6 +28,7 @@ sealed interface SuggestionType { data object Mention : SuggestionType data object Command : SuggestionType data object Room : SuggestionType + data object Emoji : SuggestionType data class Custom(val pattern: String) : SuggestionType companion object { @@ -36,6 +37,7 @@ sealed interface SuggestionType { PatternKey.At -> Mention PatternKey.Slash -> Command PatternKey.Hash -> Room + PatternKey.Colon -> Emoji is PatternKey.Custom -> Custom(key.v1) } } From 57e8b476835f84b48544b77bececea1eb56c146e Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Mon, 13 Oct 2025 08:01:58 +0200 Subject: [PATCH 045/898] Sync Strings from Localazy (#5515) Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com> --- .../src/main/res/values-da/translations.xml | 2 +- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-hu/translations.xml | 10 + .../src/main/res/values-nb/translations.xml | 2 +- .../src/main/res/values-pl/translations.xml | 11 + .../src/main/res/values-pl/translations.xml | 2 +- .../src/main/res/values-et/translations.xml | 2 + .../src/main/res/values-hu/translations.xml | 1 + .../src/main/res/values-pl/translations.xml | 4 + .../src/main/res/values-eo/translations.xml | 9 + .../src/main/res/values-et/translations.xml | 2 +- .../src/main/res/values-hu/translations.xml | 10 +- .../src/main/res/values-pl/translations.xml | 13 +- .../src/main/res/values-pl/translations.xml | 1 + .../src/main/res/values-pl/translations.xml | 5 + .../src/main/res/values-et/translations.xml | 1 + .../src/main/res/values-hu/translations.xml | 6 + .../src/main/res/values-pl/translations.xml | 13 + .../src/main/res/values-pl/translations.xml | 2 + .../src/main/res/values-pl/translations.xml | 4 +- .../src/main/res/values-eo/translations.xml | 5 +- .../src/main/res/values-hu/translations.xml | 3 + .../src/main/res/values-nb/translations.xml | 4 + .../src/main/res/values-pl/translations.xml | 14 + .../src/main/res/values-pl/translations.xml | 4 +- .../src/main/res/values-sv/translations.xml | 2 +- .../src/main/res/values-hu/translations.xml | 3 + .../src/main/res/values-pl/translations.xml | 12 + .../src/main/res/values-eo/translations.xml | 35 +- .../src/main/res/values-et/translations.xml | 2 + .../src/main/res/values-hu/translations.xml | 5 + .../src/main/res/values-nb/translations.xml | 1 + .../src/main/res/values-pl/translations.xml | 58 +- ...om.joined_LoadingRoomNodeView_Day_1_de.png | 4 +- ...ytics.impl_AnalyticsOptInView_Day_0_de.png | 4 +- ...ytics.impl_AnalyticsOptInView_Day_1_de.png | 4 +- ....spaces_SpaceAnnouncementView_Day_0_de.png | 4 +- ...ll.impl.ui_IncomingCallScreen_Day_0_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_0_de.png | 4 +- ...erroles.impl_ChangeRolesView_Day_10_de.png | 4 +- ...erroles.impl_ChangeRolesView_Day_11_de.png | 4 +- ...erroles.impl_ChangeRolesView_Day_12_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_1_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_2_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_3_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_4_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_6_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_7_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_8_de.png | 4 +- ...berroles.impl_ChangeRolesView_Day_9_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_0_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_1_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_2_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_3_de.png | 2 +- ...nfigureroom_ConfigureRoomViewDark_4_de.png | 4 +- ...nfigureroom_ConfigureRoomViewDark_5_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_0_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_1_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_2_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_3_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_4_de.png | 4 +- ...figureroom_ConfigureRoomViewLight_5_de.png | 4 +- ...ations_NotificationsOptInView_Day_0_de.png | 4 +- ...hooseSelfVerificationModeView_Day_0_de.png | 4 +- ...hooseSelfVerificationModeView_Day_1_de.png | 4 +- ...hooseSelfVerificationModeView_Day_2_de.png | 4 +- ...hooseSelfVerificationModeView_Day_3_de.png | 4 +- ...nts_BatteryOptimizationBanner_Day_0_de.png | 4 +- ...ents_ConfirmRecoveryKeyBanner_Day_0_de.png | 4 +- ...ultRoomListTopBarMultiAccount_Day_0_de.png | 4 +- ...ltRoomListTopBarWithIndicator_Day_0_de.png | 4 +- ...ponents_DefaultRoomListTopBar_Day_0_de.png | 4 +- ...lScreenIntentPermissionBanner_Day_0_de.png | 4 +- ...ts_NewNotificationSoundBanner_Day_0_de.png | 4 +- ...omponents_RoomListContentView_Day_3_de.png | 4 +- ...omponents_RoomListContentView_Day_4_de.png | 4 +- ...omponents_RoomListContentView_Day_5_de.png | 4 +- ...onents_SetUpRecoveryKeyBanner_Day_0_de.png | 4 +- ...l.filters_RoomListFiltersView_Day_1_de.png | 4 +- ...omListModalBottomSheetContent_Day_0_de.png | 4 +- ...omListModalBottomSheetContent_Day_1_de.png | 4 +- ...omListModalBottomSheetContent_Day_2_de.png | 4 +- ....search_RoomListSearchContent_Day_1_de.png | 4 +- ...me.impl.spaces_HomeSpacesView_Day_0_de.png | 4 +- ...me.impl.spaces_HomeSpacesView_Day_1_de.png | 4 +- .../features.home.impl_HomeView_Day_0_de.png | 4 +- .../features.home.impl_HomeView_Day_10_de.png | 4 +- .../features.home.impl_HomeView_Day_13_de.png | 4 +- .../features.home.impl_HomeView_Day_14_de.png | 4 +- .../features.home.impl_HomeView_Day_15_de.png | 4 +- .../features.home.impl_HomeView_Day_1_de.png | 4 +- .../features.home.impl_HomeView_Day_2_de.png | 4 +- .../features.home.impl_HomeView_Day_3_de.png | 4 +- .../features.home.impl_HomeView_Day_4_de.png | 4 +- .../features.home.impl_HomeView_Day_5_de.png | 4 +- .../features.home.impl_HomeView_Day_6_de.png | 4 +- .../features.home.impl_HomeView_Day_7_de.png | 4 +- .../features.home.impl_HomeView_Day_8_de.png | 4 +- .../features.home.impl_HomeView_Day_9_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_0_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_1_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_2_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_3_de.png | 4 +- ...eandblock_DeclineAndBlockView_Day_4_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_0_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_1_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_4_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_5_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_6_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_7_de.png | 4 +- ...epeople.impl_InvitePeopleView_Day_9_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_10_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_11_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_12_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_13_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_14_de.png | 2 +- ...s.joinroom.impl_JoinRoomView_Day_15_de.png | 4 +- ...s.joinroom.impl_JoinRoomView_Day_16_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_1_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_2_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_3_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_4_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_5_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_6_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_7_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_8_de.png | 4 +- ...es.joinroom.impl_JoinRoomView_Day_9_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_0_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_1_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_2_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_3_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_4_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_5_de.png | 4 +- ...anner_KnockRequestsBannerView_Day_6_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_0_de.png | 4 +- ...l.list_KnockRequestsListView_Day_10_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_1_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_2_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_3_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_4_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_5_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_6_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_7_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_8_de.png | 4 +- ...pl.list_KnockRequestsListView_Day_9_de.png | 4 +- ...st_DependencyLicensesListView_Day_0_de.png | 4 +- ...st_DependencyLicensesListView_Day_1_de.png | 4 +- ...st_DependencyLicensesListView_Day_2_de.png | 2 +- ...st_DependencyLicensesListView_Day_3_de.png | 4 +- ...internal_StaticMapPlaceholder_Day_0_de.png | 4 +- ...on.impl.send_SendLocationView_Day_0_de.png | 4 +- ...on.impl.send_SendLocationView_Day_1_de.png | 4 +- ...on.impl.send_SendLocationView_Day_2_de.png | 4 +- ...on.impl.send_SendLocationView_Day_3_de.png | 4 +- ...on.impl.send_SendLocationView_Day_4_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_0_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_1_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_2_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_3_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_4_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_5_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_6_de.png | 4 +- ...on.impl.show_ShowLocationView_Day_7_de.png | 4 +- ...ttings_LockScreenSettingsView_Day_0_de.png | 4 +- ...ttings_LockScreenSettingsView_Day_1_de.png | 4 +- ...ttings_LockScreenSettingsView_Day_2_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_0_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_1_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_2_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_3_de.png | 4 +- ...n.impl.setup.pin_SetupPinView_Day_4_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_0_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_1_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_2_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_3_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_4_de.png | 4 +- ...mpl.unlock_PinUnlockViewInApp_Day_5_de.png | 2 +- ...mpl.unlock_PinUnlockViewInApp_Day_6_de.png | 2 +- ...mpl.unlock_PinUnlockViewInApp_Day_7_de.png | 2 +- ...een.impl.unlock_PinUnlockView_Day_0_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_1_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_2_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_3_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_4_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_5_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_6_de.png | 4 +- ...een.impl.unlock_PinUnlockView_Day_7_de.png | 4 +- ...ider_AccountProviderOtherView_Day_0_de.png | 4 +- ...der_ChangeAccountProviderView_Day_0_de.png | 4 +- ...der_ChangeAccountProviderView_Day_1_de.png | 4 +- ...der_ChooseAccountProviderView_Day_0_de.png | 4 +- ...der_ChooseAccountProviderView_Day_1_de.png | 4 +- ...der_ChooseAccountProviderView_Day_2_de.png | 4 +- ...er_ConfirmAccountProviderView_Day_0_de.png | 4 +- ...er_ConfirmAccountProviderView_Day_1_de.png | 4 +- ...er_ConfirmAccountProviderView_Day_2_de.png | 4 +- ...eateaccount_CreateAccountView_Day_0_de.png | 4 +- ...eateaccount_CreateAccountView_Day_1_de.png | 4 +- ...eateaccount_CreateAccountView_Day_2_de.png | 4 +- ...eateaccount_CreateAccountView_Day_3_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_0_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_1_de.png | 4 +- ...ginpassword_LoginPasswordView_Day_2_de.png | 4 +- ...ens.onboarding_OnBoardingView_Day_7_de.png | 4 +- ...mation_QrCodeConfirmationView_Day_0_de.png | 4 +- ...mation_QrCodeConfirmationView_Day_1_de.png | 4 +- ...mation_QrCodeConfirmationView_Day_2_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_0_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_1_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_2_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_3_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_4_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_5_de.png | 4 +- ....qrcode.error_QrCodeErrorView_Day_6_de.png | 4 +- ....qrcode.intro_QrCodeIntroView_Day_0_de.png | 4 +- ....qrcode.intro_QrCodeIntroView_Day_1_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_0_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_1_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_2_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_3_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_4_de.png | 4 +- ...ns.qrcode.scan_QrCodeScanView_Day_5_de.png | 4 +- ...der_SearchAccountProviderView_Day_0_de.png | 4 +- ...der_SearchAccountProviderView_Day_1_de.png | 4 +- ....impl_AccountDeactivationView_Day_0_de.png | 4 +- ....impl_AccountDeactivationView_Day_1_de.png | 4 +- ....impl_AccountDeactivationView_Day_2_de.png | 4 +- ....impl_AccountDeactivationView_Day_3_de.png | 4 +- ....impl_AccountDeactivationView_Day_4_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_0_de.png | 4 +- ...tures.logout.impl_LogoutView_Day_10_de.png | 4 +- ...tures.logout.impl_LogoutView_Day_11_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_1_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_2_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_3_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_4_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_5_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_6_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_7_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_8_de.png | 4 +- ...atures.logout.impl_LogoutView_Day_9_de.png | 4 +- ...onlist_ActionListViewContent_Day_10_de.png | 4 +- ...onlist_ActionListViewContent_Day_11_de.png | 4 +- ...onlist_ActionListViewContent_Day_12_de.png | 4 +- ...ionlist_ActionListViewContent_Day_2_de.png | 4 +- ...ionlist_ActionListViewContent_Day_3_de.png | 4 +- ...ionlist_ActionListViewContent_Day_4_de.png | 4 +- ...ionlist_ActionListViewContent_Day_5_de.png | 4 +- ...ionlist_ActionListViewContent_Day_6_de.png | 4 +- ...ionlist_ActionListViewContent_Day_7_de.png | 4 +- ...ionlist_ActionListViewContent_Day_8_de.png | 4 +- ...ionlist_ActionListViewContent_Day_9_de.png | 4 +- ...tachments.preview_AttachmentsView_0_de.png | 4 +- ...tachments.preview_AttachmentsView_1_de.png | 4 +- ...tachments.preview_AttachmentsView_2_de.png | 4 +- ...tachments.preview_AttachmentsView_3_de.png | 4 +- ...tachments.preview_AttachmentsView_4_de.png | 4 +- ...tachments.preview_AttachmentsView_5_de.png | 4 +- ...tachments.preview_AttachmentsView_6_de.png | 4 +- ...tachments.preview_AttachmentsView_7_de.png | 4 +- ...tachments.preview_AttachmentsView_8_de.png | 4 +- ...essagesViewWithIdentityChange_Day_0_de.png | 4 +- ...essagesViewWithIdentityChange_Day_1_de.png | 4 +- ...essagesViewWithIdentityChange_Day_2_de.png | 4 +- ...veVerifiedUserSendFailureView_Day_1_de.png | 4 +- ...veVerifiedUserSendFailureView_Day_2_de.png | 4 +- ...er_AttachmentSourcePickerMenu_Day_0_de.png | 4 +- ...ecomposer_MessageComposerView_Day_0_de.png | 2 +- ...d.list_PinnedMessagesListView_Day_0_de.png | 4 +- ...d.list_PinnedMessagesListView_Day_1_de.png | 4 +- ...d.list_PinnedMessagesListView_Day_2_de.png | 4 +- ...d.list_PinnedMessagesListView_Day_3_de.png | 4 +- ...impl.report_ReportMessageView_Day_0_de.png | 4 +- ...impl.report_ReportMessageView_Day_1_de.png | 4 +- ...impl.report_ReportMessageView_Day_2_de.png | 4 +- ...impl.report_ReportMessageView_Day_3_de.png | 4 +- ...impl.report_ReportMessageView_Day_4_de.png | 4 +- ...impl.report_ReportMessageView_Day_5_de.png | 4 +- ...omreaction.picker_EmojiPicker_Day_0_de.png | 4 +- ...omreaction.picker_EmojiPicker_Day_1_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_0_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_1_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_2_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_3_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_4_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_5_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_6_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_7_de.png | 4 +- ...ent_TimelineItemEncryptedView_Day_8_de.png | 4 +- ...elineItemLegacyCallInviteView_Day_0_de.png | 4 +- ...ts.event_TimelineItemPollView_Day_0_de.png | 4 +- ...ts.event_TimelineItemPollView_Day_1_de.png | 4 +- ...ts.event_TimelineItemPollView_Day_2_de.png | 4 +- ...ts.event_TimelineItemPollView_Day_3_de.png | 4 +- ...vent_TimelineItemRedactedView_Day_0_de.png | 4 +- ...event_TimelineItemUnknownView_Day_0_de.png | 4 +- ...eline.components_CallMenuItem_Day_2_de.png | 4 +- ...eline.components_CallMenuItem_Day_3_de.png | 2 +- ....components_MessageShieldView_Day_0_de.png | 4 +- ...ts_TimelineEventTimestampView_Day_4_de.png | 4 +- ...ts_TimelineItemCallNotifyView_Day_0_de.png | 4 +- ...TimelineItemEventRowTimestamp_Day_4_de.png | 4 +- ...TimelineItemEventRowTimestamp_Day_7_de.png | 4 +- ...nents_TimelineItemEventRowUtd_Day_0_de.png | 4 +- ...ItemEventRowWithManyReactions_Day_0_de.png | 4 +- ...mEventRowWithReplyInformative_Day_0_de.png | 4 +- ...mEventRowWithReplyInformative_Day_1_de.png | 4 +- ...TimelineItemEventRowWithReply_Day_4_de.png | 4 +- ...ItemEventRowWithThreadSummary_Day_0_de.png | 4 +- ...nts_TimelineItemEventTimestampBelow_de.png | 4 +- ...oupedEventsRowContentCollapse_Day_0_de.png | 4 +- ...oupedEventsRowContentExpanded_Day_0_de.png | 2 +- ...s_TimelineItemReactionsLayout_Day_0_de.png | 4 +- ...lineItemReactionsViewIncoming_Day_0_de.png | 4 +- ...lineItemReactionsViewOutgoing_Day_0_de.png | 2 +- ...ine_TimelineViewMessageShield_Day_0_de.png | 4 +- ...es.impl.timeline_TimelineView_Day_0_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_11_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_12_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_13_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_14_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_15_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_16_de.png | 4 +- ...s.impl.timeline_TimelineView_Day_17_de.png | 4 +- ...es.impl.timeline_TimelineView_Day_1_de.png | 4 +- ...es.impl.timeline_TimelineView_Day_4_de.png | 4 +- ...es.impl.timeline_TimelineView_Day_6_de.png | 4 +- ...es.impl.timeline_TimelineView_Day_8_de.png | 4 +- ...pl.topbars_MessagesViewTopBar_Day_0_de.png | 4 +- ...ges.impl.topbars_ThreadTopBar_Day_0_de.png | 4 +- ...es.messages.impl_MessagesView_Day_0_de.png | 4 +- ...s.messages.impl_MessagesView_Day_10_de.png | 4 +- ...es.messages.impl_MessagesView_Day_1_de.png | 4 +- ...es.messages.impl_MessagesView_Day_2_de.png | 4 +- ...es.messages.impl_MessagesView_Day_3_de.png | 4 +- ...es.messages.impl_MessagesView_Day_4_de.png | 4 +- ...es.messages.impl_MessagesView_Day_5_de.png | 4 +- ...es.messages.impl_MessagesView_Day_6_de.png | 4 +- ...es.messages.impl_MessagesView_Day_7_de.png | 4 +- ...es.messages.impl_MessagesView_Day_8_de.png | 4 +- ...es.messages.impl_MessagesView_Day_9_de.png | 4 +- ...nswerViewDisclosedNotSelected_Day_0_de.png | 4 +- ...llAnswerViewDisclosedSelected_Day_0_de.png | 4 +- ...t_PollAnswerViewEndedSelected_Day_0_de.png | 4 +- ...werViewEndedWinnerNotSelected_Day_0_de.png | 4 +- ...AnswerViewEndedWinnerSelected_Day_0_de.png | 4 +- ...ollContentViewCreatorEditable_Day_0_de.png | 4 +- ...t_PollContentViewCreatorEnded_Day_0_de.png | 4 +- ...ontent_PollContentViewCreator_Day_0_de.png | 4 +- ...tent_PollContentViewDisclosed_Day_0_de.png | 4 +- ...lcontent_PollContentViewEnded_Day_0_de.png | 4 +- ...nt_PollContentViewUndisclosed_Day_0_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_0_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_1_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_2_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_3_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_4_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_5_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_6_de.png | 4 +- ...ll.impl.create_CreatePollView_Day_7_de.png | 4 +- ....impl.history_PollHistoryView_Day_0_de.png | 4 +- ....impl.history_PollHistoryView_Day_1_de.png | 4 +- ....impl.history_PollHistoryView_Day_2_de.png | 4 +- ....impl.history_PollHistoryView_Day_3_de.png | 4 +- ....impl.history_PollHistoryView_Day_4_de.png | 4 +- ...ferences.impl.about_AboutView_Day_0_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_0_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_1_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_2_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_3_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_4_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_5_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_6_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_7_de.png | 4 +- ...advanced_AdvancedSettingsViewDark_8_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_0_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_1_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_2_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_3_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_4_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_5_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_6_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_7_de.png | 4 +- ...dvanced_AdvancedSettingsViewLight_8_de.png | 4 +- ...alytics_AnalyticsSettingsView_Day_0_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_0_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_1_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_2_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_3_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_4_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_5_de.png | 4 +- ...blockedusers_BlockedUsersView_Day_6_de.png | 4 +- ...veloper_DeveloperSettingsView_Day_0_de.png | 4 +- ...veloper_DeveloperSettingsView_Day_1_de.png | 4 +- ...veloper_DeveloperSettingsView_Day_2_de.png | 4 +- ...references.impl.labs_LabsView_Day_0_de.png | 4 +- ...references.impl.labs_LabsView_Day_1_de.png | 2 +- ...efaultNotificationSettingView_Day_0_de.png | 4 +- ...efaultNotificationSettingView_Day_1_de.png | 4 +- ...efaultNotificationSettingView_Day_2_de.png | 4 +- ...efaultNotificationSettingView_Day_3_de.png | 4 +- ...efaultNotificationSettingView_Day_4_de.png | 4 +- ...ions_NotificationSettingsView_Day_0_de.png | 4 +- ...ons_NotificationSettingsView_Day_10_de.png | 4 +- ...ons_NotificationSettingsView_Day_11_de.png | 4 +- ...ons_NotificationSettingsView_Day_12_de.png | 4 +- ...ons_NotificationSettingsView_Day_13_de.png | 4 +- ...ions_NotificationSettingsView_Day_1_de.png | 4 +- ...ions_NotificationSettingsView_Day_2_de.png | 4 +- ...ions_NotificationSettingsView_Day_3_de.png | 4 +- ...ions_NotificationSettingsView_Day_4_de.png | 4 +- ...ions_NotificationSettingsView_Day_5_de.png | 4 +- ...ions_NotificationSettingsView_Day_6_de.png | 4 +- ...ions_NotificationSettingsView_Day_7_de.png | 4 +- ...ions_NotificationSettingsView_Day_8_de.png | 4 +- ...ions_NotificationSettingsView_Day_9_de.png | 4 +- ...impl.root_MultiAccountSection_Day_0_de.png | 2 +- ...impl.root_PreferencesRootViewDark_0_de.png | 4 +- ...impl.root_PreferencesRootViewDark_1_de.png | 4 +- ...mpl.root_PreferencesRootViewLight_0_de.png | 2 +- ...mpl.root_PreferencesRootViewLight_1_de.png | 4 +- ...itprofile_EditUserProfileView_Day_0_de.png | 4 +- ...itprofile_EditUserProfileView_Day_1_de.png | 4 +- ....impl.bugreport_BugReportView_Day_0_de.png | 4 +- ....impl.bugreport_BugReportView_Day_1_de.png | 4 +- ....impl.bugreport_BugReportView_Day_2_de.png | 2 +- ....impl.bugreport_BugReportView_Day_3_de.png | 4 +- ....impl.bugreport_BugReportView_Day_4_de.png | 4 +- ...eportroom.impl_ReportRoomView_Day_0_de.png | 4 +- ...eportroom.impl_ReportRoomView_Day_1_de.png | 4 +- ...eportroom.impl_ReportRoomView_Day_2_de.png | 4 +- ...eportroom.impl_ReportRoomView_Day_3_de.png | 4 +- ...eportroom.impl_ReportRoomView_Day_4_de.png | 4 +- ...er.impl_RoomAliasResolverView_Day_1_de.png | 4 +- ...er.impl_RoomAliasResolverView_Day_2_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_0_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_1_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_2_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_3_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_4_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_5_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_6_de.png | 4 +- ...impl.edit_RoomDetailsEditView_Day_7_de.png | 4 +- ....invite_RoomInviteMembersView_Day_0_de.png | 4 +- ....invite_RoomInviteMembersView_Day_1_de.png | 4 +- ....invite_RoomInviteMembersView_Day_2_de.png | 4 +- ....invite_RoomInviteMembersView_Day_3_de.png | 4 +- ...bers_RoomMemberListViewBanned_Day_0_de.png | 4 +- ...bers_RoomMemberListViewBanned_Day_1_de.png | 2 +- ...bers_RoomMemberListViewBanned_Day_2_de.png | 4 +- ...pl.members_RoomMemberListView_Day_0_de.png | 4 +- ...pl.members_RoomMemberListView_Day_1_de.png | 4 +- ...pl.members_RoomMemberListView_Day_2_de.png | 2 +- ...pl.members_RoomMemberListView_Day_3_de.png | 2 +- ...pl.members_RoomMemberListView_Day_4_de.png | 2 +- ...pl.members_RoomMemberListView_Day_5_de.png | 4 +- ...pl.members_RoomMemberListView_Day_7_de.png | 4 +- ...pl.members_RoomMemberListView_Day_8_de.png | 4 +- ...pl.members_RoomMemberListView_Day_9_de.png | 4 +- ..._RoomNotificationSettingsView_Day_0_de.png | 4 +- ..._RoomNotificationSettingsView_Day_1_de.png | 4 +- ..._RoomNotificationSettingsView_Day_2_de.png | 4 +- ..._RoomNotificationSettingsView_Day_3_de.png | 4 +- ..._RoomNotificationSettingsView_Day_4_de.png | 4 +- ..._RoomNotificationSettingsView_Day_5_de.png | 4 +- ..._RoomNotificationSettingsView_Day_6_de.png | 4 +- ...dRoomNotificationSettingsView_Day_0_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_0_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_1_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_2_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_3_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_4_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_5_de.png | 4 +- ...ons_ChangeRoomPermissionsView_Day_6_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_0_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_1_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_2_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_3_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_4_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_5_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_6_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_7_de.png | 4 +- ...sions_RolesAndPermissionsView_Day_8_de.png | 4 +- ...omaddress_EditRoomAddressView_Day_0_de.png | 4 +- ...omaddress_EditRoomAddressView_Day_1_de.png | 2 +- ...omaddress_EditRoomAddressView_Day_2_de.png | 4 +- ...omaddress_EditRoomAddressView_Day_3_de.png | 4 +- ...omaddress_EditRoomAddressView_Day_4_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_0_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_1_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_2_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_3_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_4_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_5_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_6_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_7_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_8_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_0_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_1_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_2_de.png | 2 +- ...ivacy_SecurityAndPrivacyViewLight_3_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_4_de.png | 2 +- ...ivacy_SecurityAndPrivacyViewLight_5_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_6_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_7_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_8_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_0_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_10_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_11_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_12_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_13_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_14_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_15_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_16_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_17_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_18_de.png | 4 +- ...roomdetails.impl_RoomDetailsDark_19_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_1_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_2_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_3_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_4_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_5_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_6_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_7_de.png | 4 +- ....roomdetails.impl_RoomDetailsDark_8_de.png | 2 +- ....roomdetails.impl_RoomDetailsDark_9_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_0_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_10_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_11_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_12_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_13_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_14_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_15_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_16_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_17_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_18_de.png | 4 +- ...res.roomdetails.impl_RoomDetails_19_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_1_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_2_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_3_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_4_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_5_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_6_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_7_de.png | 2 +- ...ures.roomdetails.impl_RoomDetails_8_de.png | 4 +- ...ures.roomdetails.impl_RoomDetails_9_de.png | 4 +- ...y.impl.root_RoomDirectoryView_Day_0_de.png | 4 +- ...y.impl.root_RoomDirectoryView_Day_1_de.png | 4 +- ...y.impl.root_RoomDirectoryView_Day_2_de.png | 4 +- ...impl_RoomMemberModerationView_Day_0_de.png | 4 +- ...impl_RoomMemberModerationView_Day_1_de.png | 4 +- ...impl_RoomMemberModerationView_Day_2_de.png | 4 +- ...impl_RoomMemberModerationView_Day_3_de.png | 4 +- ...sable_SecureBackupDisableView_Day_0_de.png | 4 +- ...sable_SecureBackupDisableView_Day_1_de.png | 4 +- ...sable_SecureBackupDisableView_Day_2_de.png | 4 +- ...sable_SecureBackupDisableView_Day_3_de.png | 4 +- ...ureBackupEnterRecoveryKeyView_Day_0_de.png | 4 +- ...ureBackupEnterRecoveryKeyView_Day_1_de.png | 4 +- ...ureBackupEnterRecoveryKeyView_Day_2_de.png | 4 +- ...ureBackupEnterRecoveryKeyView_Day_3_de.png | 4 +- ...ureBackupEnterRecoveryKeyView_Day_4_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_0_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_1_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_2_de.png | 4 +- ...ord_ResetIdentityPasswordView_Day_3_de.png | 4 +- ...et.root_ResetIdentityRootView_Day_0_de.png | 4 +- ...et.root_ResetIdentityRootView_Day_1_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_0_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_10_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_11_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_12_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_13_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_14_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_15_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_16_de.png | 4 +- ...pl.root_SecureBackupRootView_Day_17_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_1_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_2_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_3_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_4_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_5_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_6_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_7_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_8_de.png | 4 +- ...mpl.root_SecureBackupRootView_Day_9_de.png | 4 +- ....setup.views_RecoveryKeyView_Day_10_de.png | 4 +- ....setup.views_RecoveryKeyView_Day_11_de.png | 4 +- ....setup.views_RecoveryKeyView_Day_12_de.png | 4 +- ....setup.views_RecoveryKeyView_Day_13_de.png | 2 +- ....setup.views_RecoveryKeyView_Day_14_de.png | 4 +- ...l.setup.views_RecoveryKeyView_Day_8_de.png | 4 +- ...l.setup.views_RecoveryKeyView_Day_9_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_0_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_1_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_2_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_3_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_4_de.png | 4 +- ...p_SecureBackupSetupViewChange_Day_5_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_0_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_1_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_2_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_3_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_4_de.png | 4 +- ...l.setup_SecureBackupSetupView_Day_5_de.png | 4 +- ....signedout.impl_SignedOutView_Day_0_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_0_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_1_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_2_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_3_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_4_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_5_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_6_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_7_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_8_de.png | 4 +- ...ace.impl.leave_LeaveSpaceView_Day_9_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_0_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_1_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_2_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_3_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_4_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_5_de.png | 4 +- ...nents_SearchMultipleUsersResultItem_de.png | 4 +- ...mponents_SearchSingleUserResultItem_de.png | 4 +- ....impl.components_UserListView_Day_0_de.png | 4 +- ....impl.components_UserListView_Day_1_de.png | 4 +- ....impl.components_UserListView_Day_2_de.png | 4 +- ....impl.components_UserListView_Day_7_de.png | 4 +- ....impl.components_UserListView_Day_9_de.png | 4 +- ...address_JoinRoomByAddressView_Day_2_de.png | 4 +- ...address_JoinRoomByAddressView_Day_4_de.png | 4 +- ...address_JoinRoomByAddressView_Day_5_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_0_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_1_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_2_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_3_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_4_de.png | 4 +- ...tchat.impl.root_StartChatView_Day_5_de.png | 4 +- ...ared_UserProfileHeaderSection_Day_0_de.png | 4 +- ...rofile.shared_UserProfileView_Day_0_de.png | 4 +- ...rofile.shared_UserProfileView_Day_1_de.png | 4 +- ...rofile.shared_UserProfileView_Day_2_de.png | 4 +- ...rofile.shared_UserProfileView_Day_3_de.png | 4 +- ...rofile.shared_UserProfileView_Day_4_de.png | 4 +- ...rofile.shared_UserProfileView_Day_5_de.png | 4 +- ...rofile.shared_UserProfileView_Day_6_de.png | 4 +- ...rofile.shared_UserProfileView_Day_7_de.png | 4 +- ...rofile.shared_UserProfileView_Day_8_de.png | 4 +- ...rofile.shared_UserProfileView_Day_9_de.png | 4 +- ...ncoming.ui_SessionDetailsView_Day_0_de.png | 4 +- ...ming_IncomingVerificationView_Day_0_de.png | 4 +- ...ing_IncomingVerificationView_Day_10_de.png | 4 +- ...ing_IncomingVerificationView_Day_11_de.png | 4 +- ...ing_IncomingVerificationView_Day_12_de.png | 4 +- ...ing_IncomingVerificationView_Day_13_de.png | 4 +- ...ming_IncomingVerificationView_Day_1_de.png | 4 +- ...ming_IncomingVerificationView_Day_2_de.png | 4 +- ...ming_IncomingVerificationView_Day_3_de.png | 4 +- ...ming_IncomingVerificationView_Day_4_de.png | 4 +- ...ming_IncomingVerificationView_Day_5_de.png | 4 +- ...ming_IncomingVerificationView_Day_6_de.png | 4 +- ...ming_IncomingVerificationView_Day_7_de.png | 4 +- ...ming_IncomingVerificationView_Day_8_de.png | 4 +- ...ming_IncomingVerificationView_Day_9_de.png | 4 +- ...oing_OutgoingVerificationView_Day_0_de.png | 4 +- ...ing_OutgoingVerificationView_Day_10_de.png | 4 +- ...ing_OutgoingVerificationView_Day_11_de.png | 4 +- ...oing_OutgoingVerificationView_Day_1_de.png | 4 +- ...oing_OutgoingVerificationView_Day_2_de.png | 4 +- ...oing_OutgoingVerificationView_Day_3_de.png | 4 +- ...oing_OutgoingVerificationView_Day_4_de.png | 4 +- ...oing_OutgoingVerificationView_Day_5_de.png | 4 +- ...oing_OutgoingVerificationView_Day_6_de.png | 4 +- ...oing_OutgoingVerificationView_Day_7_de.png | 4 +- ...oing_OutgoingVerificationView_Day_8_de.png | 4 +- ...oing_OutgoingVerificationView_Day_9_de.png | 4 +- ...folder.impl.file_ViewFileView_Day_3_de.png | 4 +- ...select.impl_AccountSelectView_Day_0_de.png | 4 +- ...select.impl_AccountSelectView_Day_1_de.png | 4 +- ...logs_TextFieldDialogWithError_Day_0_de.png | 2 +- ...BarActiveWithNoResults_Search_views_de.png | 4 +- ...nents_AvatarActionBottomSheet_Day_0_de.png | 4 +- ...mponents_CheckableUnresolvedUserRow_de.png | 4 +- ...eateDmConfirmationBottomSheet_Day_0_de.png | 4 +- ...eateDmConfirmationBottomSheet_Day_1_de.png | 4 +- ...omponents_SpaceHeaderRootView_Day_0_de.png | 4 +- ...ui.components_SpaceHeaderView_Day_0_de.png | 4 +- ...ix.ui.components_SpaceInfoRow_Day_0_de.png | 4 +- ....components_SpaceRoomItemView_Day_0_de.png | 2 +- ....components_SpaceRoomItemView_Day_1_de.png | 4 +- ....components_SpaceRoomItemView_Day_2_de.png | 4 +- ....components_SpaceRoomItemView_Day_3_de.png | 2 +- ....components_SpaceRoomItemView_Day_4_de.png | 4 +- ....components_SpaceRoomItemView_Day_5_de.png | 4 +- ....components_SpaceRoomItemView_Day_6_de.png | 2 +- ....components_SpaceRoomItemView_Day_7_de.png | 2 +- ....components_SpaceRoomItemView_Day_8_de.png | 3 + ...rix.ui.components_UnresolvedUserRow_de.png | 4 +- ....messages.reply_InReplyToView_Day_4_de.png | 2 +- ...DeleteConfirmationBottomSheet_Day_0_de.png | 4 +- ...tails_MediaDetailsBottomSheet_Day_0_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_0_de.png | 4 +- ...mpl.gallery_MediaGalleryView_Day_10_de.png | 4 +- ...mpl.gallery_MediaGalleryView_Day_11_de.png | 4 +- ...mpl.gallery_MediaGalleryView_Day_12_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_1_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_2_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_3_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_4_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_5_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_6_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_7_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_8_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_9_de.png | 4 +- ...ewer.impl.viewer_MediaViewerView_11_de.png | 4 +- ...ewer.impl.viewer_MediaViewerView_12_de.png | 4 +- ...ewer.impl.viewer_MediaViewerView_14_de.png | 4 +- ...iewer.impl.viewer_MediaViewerView_2_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_0_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_1_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_2_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_3_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_4_de.png | 4 +- ...oomselect.impl_RoomSelectView_Day_5_de.png | 4 +- ...ser_CaptionWarningBottomSheet_Day_0_de.png | 4 +- ...textcomposer_ComposerModeView_Day_0_de.png | 4 +- ...oser_MarkdownTextComposerEdit_Day_0_de.png | 4 +- ...mposer_TextComposerAddCaption_Day_0_de.png | 4 +- ...tcomposer_TextComposerCaption_Day_0_de.png | 4 +- ...poser_TextComposerEditCaption_Day_0_de.png | 4 +- ..._TextComposerEditNotEncrypted_Day_0_de.png | 4 +- ...textcomposer_TextComposerEdit_Day_0_de.png | 4 +- ...omposerFormattingNotEncrypted_Day_0_de.png | 4 +- ...mposer_TextComposerFormatting_Day_0_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_0_de.png | 4 +- ...extComposerReplyNotEncrypted_Day_10_de.png | 4 +- ...extComposerReplyNotEncrypted_Day_11_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_1_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_2_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_3_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_4_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_5_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_6_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_7_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_8_de.png | 4 +- ...TextComposerReplyNotEncrypted_Day_9_de.png | 4 +- ...extcomposer_TextComposerReply_Day_0_de.png | 4 +- ...xtcomposer_TextComposerReply_Day_10_de.png | 4 +- ...xtcomposer_TextComposerReply_Day_11_de.png | 4 +- ...extcomposer_TextComposerReply_Day_1_de.png | 4 +- ...extcomposer_TextComposerReply_Day_2_de.png | 4 +- ...extcomposer_TextComposerReply_Day_3_de.png | 4 +- ...extcomposer_TextComposerReply_Day_4_de.png | 4 +- ...extcomposer_TextComposerReply_Day_5_de.png | 4 +- ...extcomposer_TextComposerReply_Day_6_de.png | 4 +- ...extcomposer_TextComposerReply_Day_7_de.png | 4 +- ...extcomposer_TextComposerReply_Day_8_de.png | 4 +- ...extcomposer_TextComposerReply_Day_9_de.png | 4 +- ...extComposerSimpleNotEncrypted_Day_0_de.png | 4 +- ...xtcomposer_TextComposerSimple_Day_0_de.png | 4 +- ...TextComposerVoiceNotEncrypted_Day_0_de.png | 4 +- ....impl.history_PushHistoryView_Day_0_de.png | 4 +- ....impl.history_PushHistoryView_Day_1_de.png | 4 +- ....impl.history_PushHistoryView_Day_2_de.png | 4 +- ....impl.history_PushHistoryView_Day_3_de.png | 4 +- ...TroubleshootNotificationsView_Day_0_de.png | 4 +- ...TroubleshootNotificationsView_Day_1_de.png | 4 +- ...TroubleshootNotificationsView_Day_2_de.png | 4 +- ...TroubleshootNotificationsView_Day_3_de.png | 4 +- ...TroubleshootNotificationsView_Day_4_de.png | 4 +- ...TroubleshootNotificationsView_Day_5_de.png | 4 +- ...TroubleshootNotificationsView_Day_6_de.png | 4 +- ...TroubleshootNotificationsView_Day_7_de.png | 4 +- screenshots/html/data.js | 1942 ++++++++--------- 774 files changed, 2575 insertions(+), 2516 deletions(-) create mode 100644 features/announcement/impl/src/main/res/values-hu/translations.xml create mode 100644 features/announcement/impl/src/main/res/values-pl/translations.xml create mode 100644 features/joinroom/impl/src/main/res/values-eo/translations.xml create mode 100644 features/space/impl/src/main/res/values-pl/translations.xml create mode 100644 screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png diff --git a/features/announcement/impl/src/main/res/values-da/translations.xml b/features/announcement/impl/src/main/res/values-da/translations.xml index 933ae95d6d..76540962e1 100644 --- a/features/announcement/impl/src/main/res/values-da/translations.xml +++ b/features/announcement/impl/src/main/res/values-da/translations.xml @@ -5,7 +5,7 @@ "Finde alle rum, du kan deltage i, i dine klynger" "Deltage i offentlige klynger" "Forlade de klynger, du har tilsluttet dig" - "Oprettelse og administration af klynger kommer snart." + "Filtrering, oprettelse og administration af klynger kommer snart." "Velkommen til betaversionen af Klynger! Med denne første version kan du:" "Introduktion til Klynger" diff --git a/features/announcement/impl/src/main/res/values-de/translations.xml b/features/announcement/impl/src/main/res/values-de/translations.xml index c38a9b5cd9..11f5f3a99c 100644 --- a/features/announcement/impl/src/main/res/values-de/translations.xml +++ b/features/announcement/impl/src/main/res/values-de/translations.xml @@ -5,7 +5,7 @@ "Chats innerhalb deiner Spaces entdecken, um ihnen beizutreten" "Öffentlichen Spaces beitreten" "Spaces verlassen, bei denen du Mitglied bist" - "Das Erstellen und Verwalten von Spaces ist bald verfügbar." + "Das Filtern, Erstellen und Verwalten von Spaces ist bald verfügbar." "Willkommen bei der Beta-Version von Spaces! Mit dieser ersten Version kannst du:" "Einführung in Spaces" diff --git a/features/announcement/impl/src/main/res/values-hu/translations.xml b/features/announcement/impl/src/main/res/values-hu/translations.xml new file mode 100644 index 0000000000..854c9f558b --- /dev/null +++ b/features/announcement/impl/src/main/res/values-hu/translations.xml @@ -0,0 +1,10 @@ + + + "Az Ön által létrehozott vagy csatlakozott térek megtekintése" + "A meghívások elfogadására vagy elutasítására a terekhez" + "Szobák felfedezése a terekben, amelyekhez csatlakozhat" + "Csatlakozás nyilvános terekhez" + "Terek elhagyása" + "Terek szűrése, készítése és kezelése hamarosan érkezik." + "Üdvözöljük a tér béta verziójában! Ezzel az első verzióval a következőket teheti:" + diff --git a/features/announcement/impl/src/main/res/values-nb/translations.xml b/features/announcement/impl/src/main/res/values-nb/translations.xml index 0765e557f8..553ff9f997 100644 --- a/features/announcement/impl/src/main/res/values-nb/translations.xml +++ b/features/announcement/impl/src/main/res/values-nb/translations.xml @@ -5,7 +5,7 @@ "Oppdag alle rom du kan bli med i i dine områder" "Bli med i offentlige områder" "Forlat områder du har blitt med i" - "Oppretting og administrasjon av områder kommer snart." + "Oppretting, filtrering og administrasjon av områder kommer snart." "Velkommen til betaversjonen av Områder! Med denne første versjonen kan du:" "Vi introduserer Områder" diff --git a/features/announcement/impl/src/main/res/values-pl/translations.xml b/features/announcement/impl/src/main/res/values-pl/translations.xml new file mode 100644 index 0000000000..4308bdd81d --- /dev/null +++ b/features/announcement/impl/src/main/res/values-pl/translations.xml @@ -0,0 +1,11 @@ + + + "Wyświetlić przestrzenie, które stworzyłeś lub do których dołączyłeś" + "Akceptować lub odrzucać zaproszenia" + "Odkrywać wszystkie pokoje, do których możesz dołączyć w swoich przestrzeniach" + "Dołączać do przestrzeni publicznych" + "Opuszczać jakąkolwiek przestrzeń, do której dołączyłeś" + "Filtrowanie, tworzenie i zarządzanie przestrzeniami pojawi się wkrótce." + "Witamy w wersji beta przestrzeni! W tej wersji możesz:" + "Przedstawiamy przestrzenie" + diff --git a/features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml b/features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml index ad4c7239d7..f8fa74bd1e 100644 --- a/features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml +++ b/features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml @@ -2,7 +2,7 @@ "Tylko administratorzy" "Banowanie osób" - "Usuwanie wiadomości" + "Usuń wiadomości" "Wszyscy" "Zapraszanie osób i akceptowanie próśb o dołączenie" "Moderacja członków" diff --git a/features/home/impl/src/main/res/values-et/translations.xml b/features/home/impl/src/main/res/values-et/translations.xml index 43dd57cdfa..d5b6fa06d4 100644 --- a/features/home/impl/src/main/res/values-et/translations.xml +++ b/features/home/impl/src/main/res/values-et/translations.xml @@ -3,6 +3,8 @@ "Kui tahad olla kindel, et näed õigel ajal kõiki teavitusi, siis palun lülita akukasutuse optimeerimine välja." "Lülita akukasutuse optimeerimine välja" "Sa ei näe kõiki teavitusi?" + "Sinu nutiseadme teavituste heli on uuenenud - see on nüüd selgem, kiirem ja vähem häiriv." + "Oleme sinu helisid värskendanud" "Loo uus taastevõti, mida saad kasutada oma krüptitud sõnumite ajaloo taastamisel olukorras, kus kaotad ligipääsu oma seadmetele." "Seadista andmete taastamine" "Seadista taastamine" diff --git a/features/home/impl/src/main/res/values-hu/translations.xml b/features/home/impl/src/main/res/values-hu/translations.xml index 7250794095..6f6f2cc8b5 100644 --- a/features/home/impl/src/main/res/values-hu/translations.xml +++ b/features/home/impl/src/main/res/values-hu/translations.xml @@ -3,6 +3,7 @@ "Kapcsolja ki az alkalmazás akkumulátoroptimalizálását, hogy biztosan megkapja az összes értesítést." "Optimalizálás letiltása" "Nem érkeznek meg az értesítések?" + "Értesítési hangja frissült – tisztább, gyorsabb és kevésbé zavaró lett." "Hozzon létre egy új helyreállítási kulcsot, amellyel visszaállíthatja a titkosított üzenetek előzményeit, ha elveszíti az eszközökhöz való hozzáférést." "Helyreállítás beállítása" "Helyreállítás beállítása a fiókja védelméhez" diff --git a/features/home/impl/src/main/res/values-pl/translations.xml b/features/home/impl/src/main/res/values-pl/translations.xml index 51dbc0512b..73e0b5e52e 100644 --- a/features/home/impl/src/main/res/values-pl/translations.xml +++ b/features/home/impl/src/main/res/values-pl/translations.xml @@ -3,6 +3,8 @@ "Wyłącz optymalizację baterii dla tej aplikacji, aby upewnić się, że wszystkie powiadomienia są odbierane." "Wyłącz optymalizację" "Powiadomienia nie dochodzą?" + "Sygnał powiadomień został zaktualizowany — jest wyraźniejszy, szybszy i mniej uciążliwy." + "Odświeżyliśmy Twoje dźwięki" "Wygeneruj nowy klucz przywracania, którego można użyć do przywrócenia historii wiadomości szyfrowanych w przypadku utraty dostępu do swoich urządzeń." "Skonfiguruj przywracanie" "Skonfiguruj przywracanie" @@ -13,6 +15,7 @@ "Upewnij się, że nie pominiesz żadnego połączenia. Zmień swoje ustawienia i zezwól na powiadomienia na blokadzie ekranu." "Popraw jakość swoich rozmów" "Wszystkie czaty" + "Przestrzenie" "Czy na pewno chcesz odrzucić zaproszenie dołączenia do %1$s?" "Odrzuć zaproszenie" "Czy na pewno chcesz odrzucić rozmowę prywatną z %1$s?" @@ -32,6 +35,7 @@ Na razie możesz wyczyścić filtry, aby zobaczyć pozostałe czaty" "Zaproszenia" "Nie masz żadnych oczekujących zaproszeń." "Niski priorytet" + "Nie masz jeszcze żadnych czatów o niskim priorytecie" "Wyczyść filtry, aby zobaczyć pozostałe czaty" "Brak czatów dla podanych kryteriów" "Osoby" diff --git a/features/joinroom/impl/src/main/res/values-eo/translations.xml b/features/joinroom/impl/src/main/res/values-eo/translations.xml new file mode 100644 index 0000000000..eb5e0b7156 --- /dev/null +++ b/features/joinroom/impl/src/main/res/values-eo/translations.xml @@ -0,0 +1,9 @@ + + + "You were banned from this room by %1$s." + "You were banned from this room" + "Joining the room failed." + "This room is either invite-only or there might be restrictions to access at space level." + "Forget this room" + "You need an invite in order to join this room" + diff --git a/features/joinroom/impl/src/main/res/values-et/translations.xml b/features/joinroom/impl/src/main/res/values-et/translations.xml index b3c51abbf1..c18fdaef2a 100644 --- a/features/joinroom/impl/src/main/res/values-et/translations.xml +++ b/features/joinroom/impl/src/main/res/values-et/translations.xml @@ -11,7 +11,7 @@ "Kas sa oled kindel, et soovid keelduda kutsest sellesse jututuppa? Samaga kaob kasutajal %1$s võimalus sinuga suhelda ja saata sulle jututubade kutseid." "Keeldu kutsest ja blokeeri" "Keeldu ja blokeeri" - "Jututoaga liitumine ei õnnestunud." + "Jututoaga liitumine ei õnnestunud" "Ligipääs siia jututuppa on võimalik vaid kutse alusel või kehtivad siin kogukonnakohased piirangud." "Unusta see jututuba" "Selle jututoaga liitumiseks vajad sa kutset" diff --git a/features/joinroom/impl/src/main/res/values-hu/translations.xml b/features/joinroom/impl/src/main/res/values-hu/translations.xml index 8fafb9aa7a..facb3edbf2 100644 --- a/features/joinroom/impl/src/main/res/values-hu/translations.xml +++ b/features/joinroom/impl/src/main/res/values-hu/translations.xml @@ -1,7 +1,7 @@ "%1$s kitiltotta a szobából." - "Kitiltották ebből a szobából" + "Kitiltották" "Ok: %1$s." "Kérés visszavonása" "Igen, visszavonás" @@ -11,10 +11,10 @@ "Biztos, hogy elutasítja a meghívást, hogy csatlakozzon ehhez a szobához? Ez azt is megakadályozza, hogy %1$s kapcsolatba lépjen Önnel, vagy szobákba hívja." "Meghívó elutasítása és blokkolás" "Elutasítás és letiltás" - "A szobához való csatlakozás sikertelen." - "Ebbe a szobába csak meghívóval vagy tértagsággal lehet belépni." - "Szoba elfelejtése" - "Meghívóra van szüksége ahhoz, hogy csatlakozzon ehhez a szobához" + "A csatlakozás sikertelen" + "Csatlakozáshoz meghívóra van szükség, vagy lehet, hogy korlátozva van a hozzáférés." + "Elfelejt" + "A csatlakozáshoz meghívóra van szükség." "Meghívta:" "Csatlakozás" "A csatlakozáshoz meghívásra vagy tértagságra lehet szüksége." 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 dea02ea7cd..fcac55d546 100644 --- a/features/joinroom/impl/src/main/res/values-pl/translations.xml +++ b/features/joinroom/impl/src/main/res/values-pl/translations.xml @@ -1,7 +1,7 @@ - "Zostałeś zbanowany z tego pokoju przez %1$s." - "Zostałeś zbanowany z tego pokoju" + "Zostałeś zbanowany przez %1$s ." + "Zostałeś zbanowany" "Powód: %1$s." "Anuluj prośbę" "Tak, anuluj" @@ -11,10 +11,11 @@ "Czy na pewno chcesz odrzucić zaproszenie dołączenia do tego pokoju? %1$s nie będzie mógł się również z Tobą skontaktować, ani zaprosić Cię do pokoju." "Odrzuć zaproszenie i zablokuj" "Odrzuć i zablokuj" - "Nie udało się dołączyć do pokoju." - "Ten pokój wymaga zaproszenia lub jest ograniczony z poziomu przestrzeni." - "Zapomnij o tym pokoju" - "Potrzebujesz zaproszenia, aby dołączyć do tego pokoju" + "Nie udało się dołączyć do pokoju" + "Ten pokój wymaga zaproszenia lub dołączanie zostało ograniczone." + "Zapomnij" + "Aby dołączyć, potrzebujesz zaproszenia" + "Zaproszony przez" "Dołącz" "Aby dołączyć, musisz uzyskać zaproszenie lub być członkiem danej przestrzeni." "Wyślij prośbę o dołączenie" diff --git a/features/login/impl/src/main/res/values-pl/translations.xml b/features/login/impl/src/main/res/values-pl/translations.xml index 84c8c5307b..0c7810abe7 100644 --- a/features/login/impl/src/main/res/values-pl/translations.xml +++ b/features/login/impl/src/main/res/values-pl/translations.xml @@ -13,6 +13,7 @@ "Inne" "Użyj innego dostawcy konta, takiego jak własny serwer lub konta służbowego." "Zmień dostawcę konta" + "Google Play" "Wymagana jest aplikacja Element Pro na %1$s. Znajdziesz ją w sklepie z aplikacjami." "Wymagany jest Element Pro" "Nie mogliśmy połączyć się z tym serwerem domowym. Sprawdź, czy adres URL serwera został wprowadzony poprawnie. Jeśli adres URL jest poprawny, skontaktuj się z administratorem serwera w celu uzyskania dalszej pomocy." diff --git a/features/messages/impl/src/main/res/values-pl/translations.xml b/features/messages/impl/src/main/res/values-pl/translations.xml index b7925c7865..bd9f649522 100644 --- a/features/messages/impl/src/main/res/values-pl/translations.xml +++ b/features/messages/impl/src/main/res/values-pl/translations.xml @@ -7,13 +7,18 @@ "Obiekty" "Buźki i osoby" "Podróż i miejsca" + "Ostatnie emoji" "Symbole" "Opis może być niedostępny dla osób korzystających ze starszej wersji aplikacji." + "Dotknij, aby zmienić jakość przesyłania wideo." "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ć." + "Pozycja %1$d z %2$d" + "Zoptymalizuj jakość obrazu" + "Przetwarzanie…" "Zablokuj użytkownika" "Sprawdź, czy chcesz ukryć wszystkie bieżące i przyszłe wiadomości od tego użytkownika." "Ta wiadomość zostanie zgłoszona do administratora Twojego serwera domowego. Nie będzie mógł on przeczytać żadnych zaszyfrowanych wiadomości." diff --git a/features/preferences/impl/src/main/res/values-et/translations.xml b/features/preferences/impl/src/main/res/values-et/translations.xml index 9b2f04a9f7..4f803fb50f 100644 --- a/features/preferences/impl/src/main/res/values-et/translations.xml +++ b/features/preferences/impl/src/main/res/values-et/translations.xml @@ -43,6 +43,7 @@ "Profiili uuendamine ei õnnestunud" "Muuda profiili" "Profiil on muutmisel…" + "Kas tahad katsetada?" "Täiendavad seadistused" "Hääl- ja videokõned" "Eelistused ei sobi omavahel" diff --git a/features/preferences/impl/src/main/res/values-hu/translations.xml b/features/preferences/impl/src/main/res/values-hu/translations.xml index 9cc5a97a44..c588e60eaf 100644 --- a/features/preferences/impl/src/main/res/values-hu/translations.xml +++ b/features/preferences/impl/src/main/res/values-hu/translations.xml @@ -10,6 +10,7 @@ "Érvénytelen webcím, győződjön meg arról, hogy szerepel-e benne a protokoll (http/https), és hogy helyes-e a cím." "Profilképek elrejtése a szobameghívókban" "Médiaelőnézetek elrejtése az idővonalon" + "Kísérletek" "Töltse fel gyorsabban a fényképeket és videókat, valamint csökkentse az adatforgalmat" "Média minőségének optimalizálása" "Moderálás és biztonság" @@ -43,6 +44,11 @@ "Nem sikerült frissíteni a profilt" "Profil szerkesztése" "Profil frissítése…" + "Üzenetszál válaszok engedélyezése" + "Az alkalmazás újraindul, hogy a változás érvénybe lépjen." + "Próbálja ki legújabb fejlesztéseinket. Ezek a funkciók még nem véglegesek, instabilak lehetnek és változhatnak." + "Kísérletezni szeretne?" + "Kísérletek" "További beállítások" "Hang- és videóhívások" "Konfigurációs eltérés" diff --git a/features/preferences/impl/src/main/res/values-pl/translations.xml b/features/preferences/impl/src/main/res/values-pl/translations.xml index 8ae089b170..9e2c56e580 100644 --- a/features/preferences/impl/src/main/res/values-pl/translations.xml +++ b/features/preferences/impl/src/main/res/values-pl/translations.xml @@ -10,9 +10,17 @@ "Nieprawidłowy adres URL, upewnij się, że zawiera protokół (http/https) i poprawny adres." "Ukryj awatary w prośbach o dołączenie do pokoju" "Ukryj podglądy multimediów na osi czasu" + "Laboratoria" "Przesyłaj zdjęcia i filmy szybciej, zmniejszając zużycie danych" "Optymalizuj jakość multimediów" "Moderacja i bezpieczeństwo" + "Automatycznie optymalizuj obrazy, aby szybciej je przesyłać i zmniejszać rozmiar plików." + "Zoptymalizuj jakość przesyłania obrazów" + "%1$s. Dotknij tutaj, aby zmienić." + "Wysoka (1080p)" + "Niska (480p)" + "Standardowa (720p)" + "Jakość przesyłania wideo" "Dostawca powiadomień push" "Wyłącz edytor tekstu bogatego, aby pisać tekst Markdown ręcznie." "Potwierdzenia odczytania" @@ -36,6 +44,11 @@ "Nie można zaktualizować profilu" "Edytuj profil" "Aktualizuję profil…" + "Włącz odpowiedzi w wątkach" + "Aplikacja uruchomi się ponownie, aby zastosować tę zmianę." + "Wypróbuj nasze najnowsze pomysły w fazie rozwoju. Funkcje te nie są jeszcze sfinalizowane; mogą być niestabilne i ulec zmianie." + "Chcesz poeksperymentować?" + "Laboratoria" "Dodatkowe ustawienia" "Połączenia audio i wideo" "Niezgodność konfiguracji" diff --git a/features/rageshake/impl/src/main/res/values-pl/translations.xml b/features/rageshake/impl/src/main/res/values-pl/translations.xml index e421d747bf..c433071584 100644 --- a/features/rageshake/impl/src/main/res/values-pl/translations.xml +++ b/features/rageshake/impl/src/main/res/values-pl/translations.xml @@ -14,5 +14,7 @@ "Wyślij zrzut ekranu" "Logi zostaną dołączone do Twojej wiadomości, aby upewnić się, że wszystko działa poprawnie. Aby wysłać wiadomość bez logów, wyłącz to ustawienie." "%1$s uległ awarii podczas ostatniego użycia. Czy chcesz przesłać nam raport o awarii?" + "Jeśli posiadasz problemy z powiadomieniami, przesłanie nam swoich ustawień pomoże nam ustalić przyczynę usterki." + "Ustawienia powiadomień" "Wyświetl logi" 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 b9847c6cfd..ccefae7223 100644 --- a/features/roomdetails/impl/src/main/res/values-pl/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-pl/translations.xml @@ -7,7 +7,7 @@ "Ankiety" "Tylko administratorzy" "Banowanie osób" - "Usuwanie wiadomości" + "Usuń wiadomości" "Wszyscy" "Zapraszanie osób i akceptowanie próśb o dołączenie" "Moderacja członków" @@ -50,6 +50,8 @@ "Wystąpił błąd podczas ładowania ustawień powiadomień." "Wyciszenie tego pokoju nie powiodło się, spróbuj ponownie." "Nie udało się wyłączyć wyciszenia tego pokoju. Spróbuj ponownie." + "Nie zamykaj aplikacji przed zakończeniem." + "Przygotowywanie zaproszeń…" "Zaproś znajomych" "Opuść rozmowę" "Opuść pokój" diff --git a/features/securebackup/impl/src/main/res/values-eo/translations.xml b/features/securebackup/impl/src/main/res/values-eo/translations.xml index 4b8e1833a3..046dbfee88 100644 --- a/features/securebackup/impl/src/main/res/values-eo/translations.xml +++ b/features/securebackup/impl/src/main/res/values-eo/translations.xml @@ -14,8 +14,8 @@ "When asked to confirm your device, select %1$s" "Follow the instructions to create a new backup password" "Save your new backup password in a password manager or encrypted note" - "You will need to confirm all your existing devices and verify contacts again" - "Only start fresh if you don\'t have access to another signed-in device and you\'ve lost your backup password." + "You will need to confirm all your linked devices and verify contacts again" + "Only start fresh if you don\'t have access to another signed-in device and you\'ve lost your backup password. You will get a new Digital ID." "Can\'t confirm? You\'ll need to start fresh." "Deleting message backup will remove your account security and messages from the server and turn off the following security features:" "Are you sure you want to turn off message backup and delete it?" @@ -41,6 +41,7 @@ "Generate your backup password" "Backup setup successful" "Set up backup" + "This process is irreversible. You will get a new Digital ID." "Are you sure you want to start fresh?" "Confirm that you want to start fresh." diff --git a/features/space/impl/src/main/res/values-hu/translations.xml b/features/space/impl/src/main/res/values-hu/translations.xml index 79a8733df2..dd02f3101a 100644 --- a/features/space/impl/src/main/res/values-hu/translations.xml +++ b/features/space/impl/src/main/res/values-hu/translations.xml @@ -6,5 +6,8 @@ "%1$d szoba és tér elhagyása" "Ez a tér összes szobájából is eltávolítja." + "Mielőtt elhagyhatná ezt a teret, ki kell jelölnie egy másik adminisztrátort." + "Nem lesz eltávolítva a következő szobá(k)ból, mert ön az egyetlen adminisztrátor:" "Kilép innen: %1$s?" + "Ön az egyetlen adminisztrátor itt: %1$s" diff --git a/features/space/impl/src/main/res/values-nb/translations.xml b/features/space/impl/src/main/res/values-nb/translations.xml index aafe1d756f..b27995ff5b 100644 --- a/features/space/impl/src/main/res/values-nb/translations.xml +++ b/features/space/impl/src/main/res/values-nb/translations.xml @@ -1,6 +1,10 @@ "%1$s (Admin)" + + "Forlat %1$d rom og område" + "Forlat %1$d rom og område" + "Velg rommene du vil forlate, som du ikke er den eneste administratoren for:" "Du må tildele en annen administrator for dette området før du kan forlate det." "Du vil ikke bli fjernet fra følgende rom fordi du er den eneste administratoren:" diff --git a/features/space/impl/src/main/res/values-pl/translations.xml b/features/space/impl/src/main/res/values-pl/translations.xml new file mode 100644 index 0000000000..035db5f7da --- /dev/null +++ b/features/space/impl/src/main/res/values-pl/translations.xml @@ -0,0 +1,14 @@ + + + "%1$s (Administrator)" + + "Opuść %1$d pokój i przestrzeń" + "Opuść %1$d pokoje i przestrzeń" + "Opuść %1$d pokojów i przestrzeń" + + "Wybierz pokoje, które chcesz opuścić, a których nie jesteś jedynym administratorem:" + "Aby opuścić tę przestrzeń, musisz przypisać do niej innego administratora." + "Nie zostaniesz usunięty z następujących pokoi, ponieważ jesteś ich jedynym administratorem:" + "Opuścić %1$s?" + "Jesteś jedynym administratorem %1$s" + diff --git a/features/verifysession/impl/src/main/res/values-pl/translations.xml b/features/verifysession/impl/src/main/res/values-pl/translations.xml index f76f2c31fa..92b0572d08 100644 --- a/features/verifysession/impl/src/main/res/values-pl/translations.xml +++ b/features/verifysession/impl/src/main/res/values-pl/translations.xml @@ -16,7 +16,7 @@ "Upewnij się, że emoji poniżej odpowiadają tym na urządzeniu drugiego użytkownika." "Upewnij się, że liczby poniżej pasują do tych wyświetlanych na innej sesji." "Porównaj liczby" - "Twoja nowa sesja jest teraz zweryfikowana. Ma ona dostęp do Twoich zaszyfrowanych wiadomości, a inni użytkownicy będą widzieć ją jako zaufaną." + "Teraz możesz bezpiecznie czytać i wysyłać wiadomości na swoim drugim urządzeniu." "Teraz możesz zaufać tożsamości tego użytkownika podczas wysyłania lub odbierania wiadomości." "Urządzenie zweryfikowane" "Wprowadź klucz przywracania" @@ -33,7 +33,7 @@ "Weryfikacja nie powiodła się" "Kontynuuj tylko, jeśli to Ty zainicjowałeś tę weryfikację." "Zweryfikuj drugie urządzenie, aby zabezpieczyć historię wiadomości." - "Twoja nowa sesja jest teraz zweryfikowana. Ma ona dostęp do Twoich zaszyfrowanych wiadomości, a inni użytkownicy będą widzieć ją jako zaufaną." + "Teraz możesz bezpiecznie czytać i wysyłać wiadomości na swoim drugim urządzeniu." "Urządzenie zweryfikowane" "Zażądano weryfikacji" "Nie pasują do siebie" diff --git a/features/verifysession/impl/src/main/res/values-sv/translations.xml b/features/verifysession/impl/src/main/res/values-sv/translations.xml index 3e92ab0189..53b26d75de 100644 --- a/features/verifysession/impl/src/main/res/values-sv/translations.xml +++ b/features/verifysession/impl/src/main/res/values-sv/translations.xml @@ -11,7 +11,7 @@ "Använd en annan enhet" "Väntar på annan enhet …" "Något verkar inte stämma. Antingen gick tidsgränsen för begäran ut eller så avvisades begäran." - "Bekräfta att emojierna nedan matchar de som visas på din andra session." + "Bekräfta att emojierna nedan matchar de som visas på din andra enhet." "Jämför emojis" "Bekräfta att emojierna nedan matchar de som visas på den andra användarens enhet." "Bekräfta att siffrorna nedan matchar de som visas på din andra session." diff --git a/libraries/push/impl/src/main/res/values-hu/translations.xml b/libraries/push/impl/src/main/res/values-hu/translations.xml index fb067af5c4..a6e58c4c75 100644 --- a/libraries/push/impl/src/main/res/values-hu/translations.xml +++ b/libraries/push/impl/src/main/res/values-hu/translations.xml @@ -64,7 +64,10 @@ "Letiltott felhasználók" "A jelenlegi szolgáltató nevének lekérdezése." "Nincs kiválasztva leküldéses értesítési szolgáltató." + "Jelenlegi leküldéses értesítések szolgáltatója: %1$s és jelenlegi terjesztő: %2$s. De a terjesztő %3$s nem található. Lehet, hogy az alkalmazást eltávolították?" + "Jelenlegi leküldéses értesítések szolgáltatója: %1$s, de még nem konfiguráltak forgalmazókat." "Jelenlegi leküldéses értesítési szolgáltató: %1$s." + "Jelenlegi leküldéses értesítések szolgáltatója: %1$s (%2$s)" "Jelenlegi leküldéses értesítési szolgáltató" "Győződjön meg arról, hogy az alkalmazás legalább egy leküldéses értesítési szolgáltatóval rendelkezik." "Nem található leküldéses értesítési szolgáltató." diff --git a/libraries/push/impl/src/main/res/values-pl/translations.xml b/libraries/push/impl/src/main/res/values-pl/translations.xml index 1525997b12..b9ae289507 100644 --- a/libraries/push/impl/src/main/res/values-pl/translations.xml +++ b/libraries/push/impl/src/main/res/values-pl/translations.xml @@ -60,9 +60,21 @@ "Synchronizacja w tle" "Usługi Google" "Nie znaleziono usług Google Play. Powiadomienia mogą nie działać prawidłowo." + "Sprawdzam zablokowanych użytkowników" + "Wyświetl zablokowanych użytkowników" + "Żaden użytkownik nie jest zablokowany." + + "Zablokowano %1$d użytkownika. Nie otrzymasz od niego żadnych powiadomień." + "Zablokowano %1$d użytkowników. Nie otrzymasz od nich żadnych powiadomień." + "Zablokowano %1$d użytkowników. Nie otrzymasz od nich żadnych powiadomień." + + "Zablokowani użytkownicy" "Uzyskaj nazwę bieżącego dostawcy." "Nie wybrano dostawców push." + "Aktualny dostawca usług push: %1$s, dystrybutor: %2$s. Nie znaleziono dystrybutora %3$s. Sprawdź czy aplikacja nie została usunięta." + "Aktualny dostawca usługi push: %1$s, nie skonfigurowano żadnych dystrybutorów." "Bieżący dostawca push: %1$s." + "Aktualny dostawca usług push: %1$s (%2$s)" "Bieżący dostawca push" "Upewnij się, że aplikacja ma co najmniej jednego dostawcę push." "Nie znaleziono dostawców push." diff --git a/libraries/ui-strings/src/main/res/values-eo/translations.xml b/libraries/ui-strings/src/main/res/values-eo/translations.xml index 6f796aef09..761620bffa 100644 --- a/libraries/ui-strings/src/main/res/values-eo/translations.xml +++ b/libraries/ui-strings/src/main/res/values-eo/translations.xml @@ -1,26 +1,31 @@ "Manage linked devices" - "Start fresh" + "Start fresh with a new Digital ID" "Backup password" "Sent from an unconfirmed device" - "Sender\'s security verification has changed" + "Sender\'s Digital ID has changed" "Confirm device" - "Verify user" - "%1$s\'s security verification has changed. %2$s" - "%1$s\'s %2$s security verification has changed. %3$s" - "%1$s\'s security verification has changed." - "%1$s\'s %2$s security verification has changed. %3$s" + "Verify Digital ID of a user" + "Verify Digital ID of a user" + "%1$s\'s Digital ID has changed. %2$s" + "%1$s\'s %2$s Digital ID has changed. %3$s" + "%1$s\'s Digital ID has changed." + "%1$s\'s %2$s Digital ID has changed. %3$s" + "Withdraw verification of Digital ID" + "Encrypted by a user with an unverified Digital ID." "You\'re about to go to your %1$s account to start fresh. Afterwards you\'ll be taken back to the app." "Can\'t confirm? Go to your account to start fresh." - "Your message was not sent because %1$s\'s security verification has changed" - "%1$s is using one or more unconfirmed devices. You can send the message anyway, or you can cancel for now and try again later after %2$s has confirmed all their devices." - "Your message was not sent because %1$s has not confirmed all devices" - "One or more of your linked devices are unconfirmed. You can send the message anyway, or you can cancel for now and try again later after you have confirmed all of your linked devices." - "Your message was not sent because you have not confirmed one or more of your linked devices" - "Message not sent because %1$s\'s security verification has changed." - "Message not sent because %1$s has not confirmed all their devices." - "Message not sent because you have not confirmed one or more of your linked devices." + "Send anyway" + "The Digital ID of %1$s has changed, which means you can no longer be sure that nobody is listening in. You can send this message anyway, or you cancel for now and try again later after reverifying the Digital ID of %1$s." + "Your message was not sent because %1$s\'s Digital ID has changed" + "%1$s is using one or more unconfirmed linked devices, which means you can no longer be sure that nobody is listening in. You can send the message anyway, or you cancel for now and try again later after %2$s has confirmed all their linked devices." + "Your message was not sent because %1$s has not confirmed all linked devices" + "Some of your linked devices are unconfirmed, which means the message recipient can no longer be sure that nobody is listening in. You can send the message anyway, or you cancel for now and try again later after you have confirmed all of your linked devices." + "Your message was not sent because you have not confirmed all your linked devices" + "Message not sent because %1$s\'s Digital ID has changed." + "Message not sent because %1$s has not confirmed all their linked devices." + "Message not sent because you have not confirmed all of your linked devices." "You need to confirm this device for access to historical messages" "This message was blocked either because you did not confirm your device or because the sender needs to verify you." 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 dd6bae100e..36a0a113b7 100644 --- a/libraries/ui-strings/src/main/res/values-et/translations.xml +++ b/libraries/ui-strings/src/main/res/values-et/translations.xml @@ -95,6 +95,7 @@ "Kas unustasid salasõna?" "Edasta" "Tagasi eelmisesse vaatesse" + "Ava seadistused" "Eira" "Kutsu" "Kutsu osalejaid" @@ -179,6 +180,7 @@ "Sa olid sessioonist väljaloginud" "Välimus" "Heli" + "Beetaversioon" "Blokeeritud kasutajad" "Mullid" "Kõne algas" 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 40afdf7c1d..a55b85b944 100644 --- a/libraries/ui-strings/src/main/res/values-hu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-hu/translations.xml @@ -95,6 +95,7 @@ "Elfelejtette a jelszót?" "Tovább" "Visszalépés" + "Ugrás a beállításokhoz" "Mellőzés" "Meghívás" "Ismerősök meghívása" @@ -111,6 +112,7 @@ "Fiók kezelése" "Eszközök kezelése" "Üzenet" + "Minimalizálás" "Következő" "Nem" "Most nem" @@ -178,6 +180,7 @@ "Ki lett jelentkeztetve a munkamenetből" "Megjelenítés" "Hang" + "Béta" "Letiltott felhasználók" "Buborékok" "A hívás elindult" @@ -226,6 +229,7 @@ Ok: %1$s." "APK telepítése" "Ez a Matrix-azonosító nem található, ezért előfordulhat, hogy a meghívó nem érkezik meg." "Szoba elhagyása" + "Tér elhagyása" "Világos" "A sor a vágólapra másolva" "Hivatkozás a vágólapra másolva" @@ -313,6 +317,7 @@ Ok: %1$s." "Beállítások" "Tér megosztása" "Megosztott tartózkodási hely" + "Megosztott tér" "Kijelentkezés" "Valamilyen hiba történt" "Problémába ütköztünk. Próbálja újra." diff --git a/libraries/ui-strings/src/main/res/values-nb/translations.xml b/libraries/ui-strings/src/main/res/values-nb/translations.xml index 6b0db984ea..54a0ab8cbc 100644 --- a/libraries/ui-strings/src/main/res/values-nb/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nb/translations.xml @@ -251,6 +251,7 @@ "%1$s (%2$s)" "Ingen resultater" "Ingen romnavn" + "Ikke noe områdenavn" "Ikke kryptert" "Frakoblet" "Åpen kildekode-lisenser" 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 71c60b5f6d..e4186fd0f2 100644 --- a/libraries/ui-strings/src/main/res/values-pl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pl/translations.xml @@ -2,6 +2,7 @@ "Dodaj reakcję: %1$s" "Awatar" + "Zmniejsz pole tekstowe wiadomości" "Usuń" "Wprowadzono %1$d cyfrę" @@ -11,6 +12,7 @@ "Edytuj awatar" "Podgląd pełnego adresu %1$s" "Szczegóły szyfrowania" + "Powiększ pole tekstowe wiadomości" "Ukryj hasło" "Dołącz do połączenia" "Przejdź na dół" @@ -42,7 +44,7 @@ "Usuń reakcję z %1$s" "Awatar pokoju" "Wyślij pliki" - "Wymagane jest działanie ograniczone czasowo" + "Wymagane jest działanie ograniczone czasowo, została jedna minuta" "Pokaż hasło" "Rozpocznij rozmowę" "Pokój nagrobkowy" @@ -80,6 +82,7 @@ "Odrzuć" "Odrzuć i zablokuj" "Usuń ankietę" + "Odznacz wszystko" "Wyłącz" "Odrzuć" "Zamknij" @@ -90,9 +93,11 @@ "Włącz" "Zakończ ankietę" "Wprowadź PIN" + "Zakończ" "Nie pamiętasz hasła?" "Przekaż dalej" "Wróć" + "Przejdź do ustawień" "Ignoruj" "Zaproś" "Zaproś znajomych" @@ -104,10 +109,12 @@ "Opuść" "Opuść rozmowę" "Opuść pokój" + "Opuść przestrzeń" "Załaduj więcej" "Zarządzaj kontem" "Zarządzaj urządzeniami" "Wiadomość" + "Minimalizuj" "Dalej" "Nie" "Nie teraz" @@ -136,6 +143,7 @@ "Ponów próbę odszyfrowania" "Zapisz" "Szukaj" + "Zaznacz wszystko" "Wyślij" "Wyślij edytowaną wiadomość" "Wyślij wiadomość" @@ -164,12 +172,17 @@ "Dostępna aktualizacja" "O programie" "Polityka użytkowania" + "Dodaj konto" + "Dodaj kolejne konto" "Dodawanie opisu" "Ustawienia zaawansowane" "obraz" "Dane analityczne" + "Opuściłeś pokój" + "Zostałeś wylogowany z sesji" "Wygląd" "Dźwięk" + "Beta" "Zablokowani użytkownicy" "Bąbelki" "Rozpoczęto rozmowę" @@ -179,9 +192,11 @@ "Tworzenie pokoju…" "Anulowano żądanie" "Opuszczono pokój" + "Opuścił przestrzeń" "Odrzucono zaproszenie" "Ciemny" "Błąd deszyfrowania" + "Opis" "Opcje programisty" "ID urządzenia" "Czat prywatny" @@ -216,6 +231,7 @@ Powód: %1$s." "Zainstaluj APK" "Nie można znaleźć identyfikatora Matrix ID, zaproszenie mogło nie dotrzeć." "Opuszczanie pokoju" + "Opuszczam przestrzeń" "Jasny" "Wiersz skopiowany do schowka" "Link został skopiowany do schowka" @@ -228,7 +244,7 @@ Powód: %1$s." "%1$d członek" - "%1$d członki" + "%1$d członków" "%1$d członków" "Wiadomość" @@ -240,6 +256,7 @@ Powód: %1$s." "%1$s (%2$s)" "Brak wyników" "Brak nazwy pokoju" + "Brak nazwy przestrzeni" "Nieszyfrowane" "Offline" "Licencje open-source" @@ -263,7 +280,9 @@ Powód: %1$s." "Przygotowuję…" "Polityka prywatności" "Pokój prywatny" + "Prywatna przestrzeń" "Pokój publiczny" + "Przestrzeń publiczna" "Reakcja" "Reakcje" "Powód" @@ -282,6 +301,11 @@ Powód: %1$s." "Pokój" "Nazwa pokoju" "np. nazwa projektu" + + "%1$d Pokój" + "%1$d Pokoje" + "%1$d Pokoi" + "Zapisano zmiany" "Zapisywanie" "Blokada ekranu" @@ -289,18 +313,28 @@ Powód: %1$s." "Wyniki wyszukiwania" "Bezpieczeństwo" "Wyświetlone przez" + "Wybierz konto" "Wyślij do" "Wysyłanie…" "Błąd wysyłania" "Wysłano" ". " "Serwer nie jest obsługiwany" + "Serwer niedostępny" "Adres URL serwera" "Ustawienia" + "Udostępnij przestrzeń" "Udostępniona lokalizacja" + "Udostępniona przestrzeń" "Wylogowywanie" "Coś poszło nie tak" "Napotkaliśmy problem. Spróbuj ponownie." + "Przestrzeń" + + "%1$d Przestrzeń" + "%1$d Przestrzenie" + "%1$d Przestrzeni" + "Rozpoczynanie czatu…" "Naklejka" "Sukces" @@ -331,6 +365,12 @@ Powód: %1$s." "Zweryfikuj tożsamość" "Zweryfikuj użytkownika" "Film" + "Wysoka jakość" + "Najlepsza jakość, większy rozmiar pliku" + "Niska jakość" + "Największa prędkość przesyłania i najmniejszy rozmiar pliku" + "Jakość standardowa" + "Balans między jakością a szybkością przesyłania" "Wiadomość głosowa" "Oczekiwanie…" "Oczekiwanie na tę wiadomość" @@ -345,6 +385,10 @@ Powód: %1$s." Czy na pewno chcesz kontynuować?" "Sprawdź dwukrotnie ten link" + "Wybierz domyślną jakość przesyłanych filmów." + "Jakość przesyłania wideo" + "Maksymalny dozwolony rozmiar pliku to: %1$s" + "Rozmiar pliku jest za duży, aby go przesłać" "Pokój zgłoszony" "Opuszczono i zgłoszono pokój" "Potwierdzenie" @@ -353,6 +397,11 @@ Czy na pewno chcesz kontynuować?" "Ostrzeżenie" "Zmiany nie zostały zapisane. Czy na pewno chcesz wrócić?" "Zapisać zmiany?" + "Maksymalny dozwolony rozmiar pliku to: %1$s" + "Wybierz jakość filmu, który chcesz przesłać." + "Wybierz jakość przesyłania wideo" + "Wyszukaj emoji" + "Jesteś już zalogowany na tym urządzeniu jako %1$s." "Twój serwer domowy wymaga aktualizacji, aby uzyskać wsparcie usługi Matrix Authentication Service i tworzenia kont." "Nie udało się utworzyć linku bezpośredniego" "%1$s nie mogło wczytać mapy. Spróbuj ponownie później." @@ -404,6 +453,7 @@ Czy na pewno chcesz kontynuować?" "Twoja wiadomość nie została wysłana, ponieważ %1$s nie zweryfikował swoich wszystkich urządzeń" "Jedno lub więcej z Twoich urządzeń jest niezweryfikowanych. Wyślij wiadomość mimo to lub anuluj i spróbuj ponownie po zweryfikowaniu wszystkich swoich urządzeń." "Twoja wiadomość nie została wysłana, ponieważ nie zweryfikowałeś jednego lub więcej swoich urządzeń." + "Edytuj administratorów lub właścicieli" "Przetwarzanie multimediów do przesłania nie powiodło się, spróbuj ponownie." "Nie można pobrać danych użytkownika" "Wiadomość w %1$s" @@ -421,6 +471,10 @@ Czy na pewno chcesz kontynuować?" "Otwórz w Google Maps" "Otwórz w OpenStreetMap" "Udostępnij tę lokalizację" + "Przestrzenie, które stworzyłeś lub do których dołączyłeś." + "%1$s • %2$s" + "Przestrzeń %1$s" + "Przestrzenie" "Wiadomość nie została wysłana, ponieważ tożsamość %1$s została zresetowana." "Wiadomość nie została wysłana, ponieważ %1$s nie zweryfikował wszystkich urządzeń." "Wiadomość nie została wysłana, ponieważ nie zweryfikowałeś jednego lub więcej swoich urządzeń." diff --git a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png index ec1170a517..f8d44dc7ff 100644 --- a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png +++ b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ced98c61dd5c65e3ea9037dd6f5989fb9fa3626744ffe02afe7ed21c75645717 -size 13009 +oid sha256:8d31cd962cf5a731c94c478c2e7d5e9e67dd1d0976855c25d420e6ac5eca5b17 +size 13046 diff --git a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png index daaa90702b..fc8f13e941 100644 --- a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png +++ b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6ca3832f5bfd853eb8a46f229269292b41deea505946972f6c181d3f916487c -size 85831 +oid sha256:04f10a69293c264deb83f19c3adc4b223e7f722f99154d86dac0743d30eebabe +size 85812 diff --git a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png index 7fac6ab0b0..53a3abcafa 100644 --- a/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png +++ b/screenshots/de/features.analytics.impl_AnalyticsOptInView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ae6e7a291307b66aa36e59bb8a0b0e1e06e030d87a21a134e25e60ab1aa78dd -size 87419 +oid sha256:ab07d3cedec320578a200ac7e428b861198a09e54f68971a274c27c399d840c6 +size 87441 diff --git a/screenshots/de/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_de.png b/screenshots/de/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_de.png index 6c1f2b970f..503aad1715 100644 --- a/screenshots/de/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_de.png +++ b/screenshots/de/features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:064b8f0aae8eefbac4b70f7836bbd41d27954f8c7c580f7f306fb8fad2ee1022 -size 69465 +oid sha256:bd3a50849007792a0f7c8a2d2662dd156e48f9251f1108b6748bf6b52ace8cf8 +size 69441 diff --git a/screenshots/de/features.call.impl.ui_IncomingCallScreen_Day_0_de.png b/screenshots/de/features.call.impl.ui_IncomingCallScreen_Day_0_de.png index b7aad0695a..b690bf51da 100644 --- a/screenshots/de/features.call.impl.ui_IncomingCallScreen_Day_0_de.png +++ b/screenshots/de/features.call.impl.ui_IncomingCallScreen_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4589bdb8f0a2e14cc1588acb0f914f50b459bc4395f22d4a9303447773c59cfe -size 68453 +oid sha256:cde6ab80c5e68ad7f9ce6911405f5abdc52994ad0829a6657bd8abdd7b7be22b +size 68451 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_0_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_0_de.png index 60e591d166..39882e6a27 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_0_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b45f2dd9fa60e7f72b138e7e82d5a8cdc30467cdc5ea9c0afe09aa54c1686a7 -size 16120 +oid sha256:483f7a76717c263bfd76df2487c548c16d159e5a150149671b540d84b4a5a326 +size 16124 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_10_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_10_de.png index 0e4b5b1562..d17592a23b 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_10_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12634dceaef537d5431771d900e476409d7efd4cca1d278c21ef424d609e0596 -size 53107 +oid sha256:c69a3dbfca46e010898fa574df4ca20e0ef2c92810b58413125c911bdb1f88ed +size 53040 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_11_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_11_de.png index 7f1cba04c2..fd537c7a4e 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_11_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10ff5140b95d150a0541cc4d05eb415ccceccf82e797af1cd1074ee387def109 -size 55455 +oid sha256:855d5b61a769766d83a20afc32cef6477bb09cb84b29669a8807481373b3f958 +size 55451 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_12_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_12_de.png index a4b949a6da..2e3a538aaa 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_12_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c50792d349bfd0cb583ba51f754102a25475375c498941a0d113581274c2b3a4 -size 55478 +oid sha256:4b70e827c255d99cc8f976b8ea1dd247c060eccaac1db132d0fa5d2a7bba8dd1 +size 55489 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_1_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_1_de.png index caee19be3f..613fc7b48d 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_1_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfaee10346f165f2f27723494d1c2506fbd753e6876f98047059346815940ea5 -size 71902 +oid sha256:08f1af124411ce01ff24b6b47ccb3e8f02ba17ec6bc6aed98acd62f3dbd32bb7 +size 71876 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_2_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_2_de.png index 311b2cd71c..749c220c31 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_2_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c505ae703366d52fa9e9b0c0ef723c9fc33b073b8bd84882f3fa5aa31f976de0 -size 65504 +oid sha256:19845c2e90dd9a5c3bc13f5ba66b38c02ac0ec961d3dac8713d1db465d826f41 +size 65497 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_3_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_3_de.png index 6aa02e515a..92aa51f8f4 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_3_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b466cab816ec224a7434ec143bbc086941afd01a5370f7d0f8126af603a1634 -size 65339 +oid sha256:68887295c717d5a10e594bcfe4d6c84369bf2d468d7f998b2ccd82d27798d56d +size 65331 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_4_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_4_de.png index d351bb2ab9..2617a69130 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_4_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64ffef7fbc235b64797dfd89f96b75323f345115b63530aba97e1be8e75b9458 -size 59221 +oid sha256:b139e5a7a55132a5bbe260cf300a86f2437feacb62ddf5d4144ed0718545d6c6 +size 59210 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_6_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_6_de.png index 6739289e2e..d536b91189 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_6_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c485a47e58864cfa945c609cc53f3b2875623208f25505af4ac9338728e26f81 -size 66039 +oid sha256:c0bc99152df9a9fc1e8ae63bf1d40ded275d178555659981042649555db1c8be +size 65977 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_7_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_7_de.png index f2a53e604e..20109519a7 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_7_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fce675e4f044f255c306e917d7473bad6a22c244629b9c5729d08ce3ec7dcd7 -size 66276 +oid sha256:ee106780e3dea8be63a63e22c5c9d44e6402a40729f90fe47a2ca2959395ee07 +size 66214 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_8_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_8_de.png index 2b14561f41..6f446ed016 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_8_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b822c8431d2e90a1c484b78edf3eda9db70485669dea0638c5f74c286f94cd20 -size 55755 +oid sha256:2214de9f67c410ea11669fc9846286e6ad8ce6210a60fabcb8da3928a0ab6920 +size 55686 diff --git a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_9_de.png b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_9_de.png index dfb0b4f039..87c4c27cce 100644 --- a/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_9_de.png +++ b/screenshots/de/features.changeroommemberroles.impl_ChangeRolesView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65594c19b36303f28c6580aa1d0861f65483f91fc69dfa97a9744895a1c910f9 -size 67794 +oid sha256:b67e38275728e1e37f14176587fda587d5e043e139bf98549222e76ae8b75dd2 +size 67796 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png index b44c8aff18..bd0e8752b4 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c44e406f4576869def5292961e4201f68e9668d17bf79315e313fccacf58bc76 -size 34201 +oid sha256:bba0a8575b618446b61d69372af6b8c9a87aec8dd925066bea543c9bda4de758 +size 34195 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png index dfc55ad0bf..d996235ee9 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef7d027bb08c6c74716f588ab90b41cbf21c8eadbdc5cfabc8c843a82e6647cc -size 40227 +oid sha256:0a95826d38ba306dad54a21fea3f0c3b348bb388ce3f734d084fb36bb689678b +size 40246 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png index 91a7ed7f55..3633454c89 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e3188c26344223653bd7f8aa2b787d3a2fffebc7e4d9bf1c41d8d911dedac90 -size 61456 +oid sha256:09c5bc608b79db788c1ac883bf15b4c71cdd5884a1dcf31fb1ce233eb861fae2 +size 61472 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png index e255d8edc1..8bd30e7a75 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07c35a8d865a5902ffb0c382ca4c8daa04e20865dddd669e5c28f49f68223ebc +oid sha256:79337ad96f1aa328d0fd572a2c309f4444c3a41a5d2f3d3d32c14f1871ca0d1e size 62218 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png index 9d08205d11..3305c1aef3 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36cfb0c3a753eb56e10384cd2228074d3303bb213fec06e654daf79d2dbaa8ae -size 63630 +oid sha256:cf068e283d7415e070c474fa27481df64e723cb60d041551dbce89bf671403d2 +size 63628 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png index 91a7ed7f55..3633454c89 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e3188c26344223653bd7f8aa2b787d3a2fffebc7e4d9bf1c41d8d911dedac90 -size 61456 +oid sha256:09c5bc608b79db788c1ac883bf15b4c71cdd5884a1dcf31fb1ce233eb861fae2 +size 61472 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png index 99e09224b5..74ba252140 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0261e3244d154a88d9544821c3ec3517425553d311b06a7a586c225677ae01f -size 35291 +oid sha256:bf37caa5c17b00d268041c4897b9b148f7d7d4e16dd4c0938c05b6e1b9fd0e84 +size 35289 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png index c855175cb1..32acfffcc8 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7dbbfaa3f7113abc3d7b3d2c6451f7b6c20bf3a28f64d7407682c88576c62300 -size 41590 +oid sha256:43586d8414cb23ab363491c57b7c4bb22a95d2bb55b8dc1d1507054a67a69f7f +size 41598 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png index 86dfef35db..07701eed27 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cff0e19fb2f6f09a7173fde3612c55cc2cbe3028c5a8c09ac3efc623bd35da1 -size 63502 +oid sha256:20d6c7aa86418f95449b1aab75c1b241e9f0417508fddcff906eedefd175b54c +size 63509 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png index 4fc3002681..55a5c1aedb 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4ff4eb745d680311927f55512cc24b04a87b28faf3845ab31b50fcc8749c382 -size 64292 +oid sha256:237373ed70efc1a6fc65647fbc7286f8c91fe57ca371ddb2c4fa393a9ccb2281 +size 64302 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png index fc4c6cbc45..a8ab967974 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:900c16973cf8d59b6ace320c848e07eb92056be8e4e14b148a852fd46abeaa69 -size 65817 +oid sha256:f103594b26618b7e76f0ea3f272fa01d894095242db8b008807e80bd58ae0dac +size 65823 diff --git a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png index 86dfef35db..07701eed27 100644 --- a/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png +++ b/screenshots/de/features.createroom.impl.configureroom_ConfigureRoomViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cff0e19fb2f6f09a7173fde3612c55cc2cbe3028c5a8c09ac3efc623bd35da1 -size 63502 +oid sha256:20d6c7aa86418f95449b1aab75c1b241e9f0417508fddcff906eedefd175b54c +size 63509 diff --git a/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png b/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png index 2aaf45271a..84017fc504 100644 --- a/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png +++ b/screenshots/de/features.ftue.impl.notifications_NotificationsOptInView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72a797ea50aef8b2de09aaa54e9710a77ed7f696075be904d6b95032ccce44b6 -size 71406 +oid sha256:dea8fb3f80552e387fc8a0e1bb196b60a98e9c49e6a0c3e2f0e8fad75bbd44f9 +size 71400 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png index ea50869a7d..1a8c87d2dd 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cc57222ee6166b3b415315497191cbc2b90ff4a41f11eb0f19fceb7e097a87a -size 36917 +oid sha256:9838926418f0a3e9ac8f9d90558372f523a0eac63d456bfb711219c37212f7b9 +size 36911 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png index e8e553710b..94c1100ea5 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:236c8f484745747889248205a566b313b98b35332271cd2c890aaafe2724a30d -size 30272 +oid sha256:1840c34892a469caf8cc794d608b70edf437318b406e2bd6301966455af01515 +size 30266 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png index 7a1f14f76c..fd3afd132f 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2193e2bab199ad3783eb3b4d524c099c35374ede78adf1ed49d1f04e5bd4d132 -size 43031 +oid sha256:781c324b5ec66937a82b0a59a3b31c8d242adc60c4b5628519ac57bba727d104 +size 43027 diff --git a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png index 13be141568..ad0fdc98d8 100644 --- a/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png +++ b/screenshots/de/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23b34487e8c852788102c9bcd5a9eca498a2c4165678d8ae4ea7c21d3a62bde3 -size 36594 +oid sha256:3da672ece75f846bd08ce5ee6290059ac00f407d93123f026a59cb49a62987a9 +size 36588 diff --git a/screenshots/de/features.home.impl.components_BatteryOptimizationBanner_Day_0_de.png b/screenshots/de/features.home.impl.components_BatteryOptimizationBanner_Day_0_de.png index 03a5750716..42a7a323cf 100644 --- a/screenshots/de/features.home.impl.components_BatteryOptimizationBanner_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_BatteryOptimizationBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:670d308317209e4a8e64a34d0529ae96f313a7e18fbb3aad6ca85e68b3ed2eb6 -size 33325 +oid sha256:6a77c71e8acd0b1710b22958cfe5cc4f8f67445da635135dabbbd9b7e7871b07 +size 33329 diff --git a/screenshots/de/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_de.png b/screenshots/de/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_de.png index be25e57899..e18604695f 100644 --- a/screenshots/de/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58cb364d4b03cc76ca2244bd59d844c3bf1133231d92c580229dc69bcb70b40f -size 34442 +oid sha256:85785b8f45de2e378eb31538aaacc83e09ecb9e6284d2832ef32ac59f107761f +size 34461 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png index 6cfe101073..e9795a870e 100644 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baac8c8251f75553c31d68ab3c56435303fcf918ebdcbe5986f96222112f4b2c -size 26452 +oid sha256:a39cbb798077b38fb6b4c5b016d2c8568b75bf8b2206769779248488ff9924af +size 26434 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png index 7693af2408..d463d4eee0 100644 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6a48914499aafcd7f65c7f0adc9c9660742308317ed136e2f1a72aa9d7aea8d -size 26794 +oid sha256:6561c3cbc4c9fbeeb40d1e7fab0b33ca9d593153bde585d95c2f02bc8ef87a2e +size 26781 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png index c0ee6482c6..00eb6affe1 100644 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96aa21d1c28dbfbc328a76c2f3fd0df12692b27905ff80274e04d11f8cfab04a -size 26545 +oid sha256:6271f6669484010729aef39d821144b0c90930551b8343cd05d9bdcdac4d8324 +size 26527 diff --git a/screenshots/de/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png b/screenshots/de/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png index e35da5b224..c8ebd7d369 100644 --- a/screenshots/de/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00f0ef61028de8ad1c9886987872f1cf3dfe31f80f313a49099ab3017ccbbfd5 -size 33220 +oid sha256:83721f6cb5a98f7e67c62cc9b05dd3cc49f9701ba7ef2aefc6a220cf6b01f30b +size 33237 diff --git a/screenshots/de/features.home.impl.components_NewNotificationSoundBanner_Day_0_de.png b/screenshots/de/features.home.impl.components_NewNotificationSoundBanner_Day_0_de.png index cbaec95e4e..7bed6a049c 100644 --- a/screenshots/de/features.home.impl.components_NewNotificationSoundBanner_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_NewNotificationSoundBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91a7fc2676cb7271eb85ffe1e8bf42892a0f40fa4b8310f3385afd790f28c17f -size 25724 +oid sha256:f93ac9e09873a777bbfb1de4124b276c1a836af500500f0ff0d94c1a13707e48 +size 25734 diff --git a/screenshots/de/features.home.impl.components_RoomListContentView_Day_3_de.png b/screenshots/de/features.home.impl.components_RoomListContentView_Day_3_de.png index de59c20f97..73e75b9f21 100644 --- a/screenshots/de/features.home.impl.components_RoomListContentView_Day_3_de.png +++ b/screenshots/de/features.home.impl.components_RoomListContentView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5520723fc98d5c041c5f13c445f8fe5ce456119ddda8c2eb6b5cdac036aeaa3f -size 21532 +oid sha256:26aa60982538d671935f47c815ef13b55d36b1dc62b6bbd1cd18c09f5684d7cf +size 21544 diff --git a/screenshots/de/features.home.impl.components_RoomListContentView_Day_4_de.png b/screenshots/de/features.home.impl.components_RoomListContentView_Day_4_de.png index c2c5f858d7..3d3f7a3cd7 100644 --- a/screenshots/de/features.home.impl.components_RoomListContentView_Day_4_de.png +++ b/screenshots/de/features.home.impl.components_RoomListContentView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:329befa1d030a76d8a772a69cea1296b31b7d2715c0d74553b26a63845a39caf -size 56164 +oid sha256:92df0dc469ebbe7d631de2034588d5f19190519949d446965a34c90bfa4ff2d3 +size 56182 diff --git a/screenshots/de/features.home.impl.components_RoomListContentView_Day_5_de.png b/screenshots/de/features.home.impl.components_RoomListContentView_Day_5_de.png index d1173d8bb1..3a04710ab3 100644 --- a/screenshots/de/features.home.impl.components_RoomListContentView_Day_5_de.png +++ b/screenshots/de/features.home.impl.components_RoomListContentView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ecfd2bb5f3fa6d1828dd63ffb6b97169b138d1899f999b3a40f8f45c6b74297 -size 64057 +oid sha256:cf1ae6e0f2fbdb68ef717a5dc96b25ac771a3ad32f3434f75564550816f72eb2 +size 64067 diff --git a/screenshots/de/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png b/screenshots/de/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png index 101ebd6709..b0a2c81647 100644 --- a/screenshots/de/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png +++ b/screenshots/de/features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4095db1fc771634666d8a741094154f0199057cc4f4826e834fa7979d9695b04 -size 39140 +oid sha256:b65bedce0b61249766d7e75ff74a8113a6bc5905f10b475118e924b9eb5a72ce +size 39155 diff --git a/screenshots/de/features.home.impl.filters_RoomListFiltersView_Day_1_de.png b/screenshots/de/features.home.impl.filters_RoomListFiltersView_Day_1_de.png index 1316133253..524d9586f5 100644 --- a/screenshots/de/features.home.impl.filters_RoomListFiltersView_Day_1_de.png +++ b/screenshots/de/features.home.impl.filters_RoomListFiltersView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b59a077729a19c882de527df5d72c82e68d7a4afc0dfe1c29032b93ea7e23ab -size 12342 +oid sha256:abacece900ccdccb3933652195c411b9ea02801baef04fcc5e73eeb6d594cbd9 +size 12325 diff --git a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_de.png b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_de.png index f37924b4b0..c4742e5739 100644 --- a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_de.png +++ b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d368c5876bb66ee82422e0a896660d44f6106a1b81b06c0fe4af6a5475602f94 -size 23644 +oid sha256:1e4bca9f466aa446dca37659f33f1f31f3d98bff1fae33243ea00e987f050886 +size 23622 diff --git a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_de.png b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_de.png index 6b9d582870..1bb3353e61 100644 --- a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_de.png +++ b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29ce8b1546df7121cf3f28218b6c6d4c91a7888c22c02ebfe1aceb58b35dad2a -size 23844 +oid sha256:7d9aaa7142e8d3d36be461f00e7d80e14c9960168199190208b54bd49dafccf3 +size 23838 diff --git a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_de.png b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_de.png index 908db1df3e..00e402cc2d 100644 --- a/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_de.png +++ b/screenshots/de/features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da9a37c55c9f569d29c5b28f6d7d59974296f69e6fb4d40f47f8cd1afc205118 -size 26032 +oid sha256:e322b890b936bebab3e5e2590aeffb7b4bcf82cc42e08b071ea6036b883dea15 +size 26028 diff --git a/screenshots/de/features.home.impl.search_RoomListSearchContent_Day_1_de.png b/screenshots/de/features.home.impl.search_RoomListSearchContent_Day_1_de.png index 9edf04bc2a..5c7cd8673c 100644 --- a/screenshots/de/features.home.impl.search_RoomListSearchContent_Day_1_de.png +++ b/screenshots/de/features.home.impl.search_RoomListSearchContent_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c028b77f53da31957dcb04ba9201c2a9f7345994f628081569bbd0601cd689f -size 46029 +oid sha256:1f6a4818c375c234a36c4187d92a394f4056bada31d7825c63806f4a81cdce1b +size 45989 diff --git a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png index a6e961cacb..33d9a33413 100644 --- a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png +++ b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f5dc2dfed0bc7951d5ddc45215fa7798157d5d807574ca4724549d706c56bea -size 90925 +oid sha256:82640aaead9b67a77800c3b1e442a6ca469d8b65f3d6dea8219b9d9debd91ddd +size 90899 diff --git a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png index 5521655e1a..fd8785c738 100644 --- a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png +++ b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a5878f4483056c91981bdaed225a5dfabb78ac3f55243c2f7323f259c00542e -size 42026 +oid sha256:43c692d301bfb5debf3f50d45267d981fe9106f807bff7e28326d65bf06da2bf +size 42010 diff --git a/screenshots/de/features.home.impl_HomeView_Day_0_de.png b/screenshots/de/features.home.impl_HomeView_Day_0_de.png index 5453ea83cc..efb8127d04 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_0_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd4033b18eacdf206e2b9d39006626c9eac96b3dc57b8a8200454f4b8b544c5e -size 68319 +oid sha256:7b387b975338b4a6c5af508200ca4abc83c131d3e0a47be00059b7175ba28898 +size 68301 diff --git a/screenshots/de/features.home.impl_HomeView_Day_10_de.png b/screenshots/de/features.home.impl_HomeView_Day_10_de.png index eb7a71d593..8190e9ccec 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_10_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:159c14c2f3aceed0993cda75af75d53cdcb7fe58b04a4412c768163328f95df5 -size 36852 +oid sha256:6705e70e07ce0110e659bca9f2ea12a204a9002283f5043833558c9e2dc294b6 +size 36843 diff --git a/screenshots/de/features.home.impl_HomeView_Day_13_de.png b/screenshots/de/features.home.impl_HomeView_Day_13_de.png index 2d7a61f711..60b1f4ac21 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_13_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdc61baac9b833fab3823e31910df8ef828848d673436c402113da92e4baf615 -size 92898 +oid sha256:e99a9f0b900086bc18da4033c4050f264ebbfaabde3a8eba6b1cd4b8fb981a43 +size 92798 diff --git a/screenshots/de/features.home.impl_HomeView_Day_14_de.png b/screenshots/de/features.home.impl_HomeView_Day_14_de.png index 5d5a764e7b..85c1d86240 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_14_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3c1fc65c761d7fa0b44ce916aee2ce4af5725877620de2f33b6e03b2c54789e -size 90356 +oid sha256:277368880dcfaaab43abf5f0e4fd647cd93505112806e2e313bc557f2dce54e7 +size 90259 diff --git a/screenshots/de/features.home.impl_HomeView_Day_15_de.png b/screenshots/de/features.home.impl_HomeView_Day_15_de.png index 040ac63243..f63d72f53c 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_15_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c360d5a74cb9cdf48066d18fc68ab4f12caca7d4de079fae7a12f7e99fc7e513 -size 54846 +oid sha256:4134daaad23e6f1ecdc4cb4d66df0e3c81d5be0fc67d8eb545f18c011eed98a0 +size 54843 diff --git a/screenshots/de/features.home.impl_HomeView_Day_1_de.png b/screenshots/de/features.home.impl_HomeView_Day_1_de.png index bfec21f772..704818bf84 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_1_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed1428c748522383c7f5c58cda95df6398a487d826188c53e285aa6ad3e9a16d -size 69704 +oid sha256:7923185211f71bd1a475ffb88082c5475f1d7c42a2d7ca850088dfebce79fe46 +size 69706 diff --git a/screenshots/de/features.home.impl_HomeView_Day_2_de.png b/screenshots/de/features.home.impl_HomeView_Day_2_de.png index 5453ea83cc..efb8127d04 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_2_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd4033b18eacdf206e2b9d39006626c9eac96b3dc57b8a8200454f4b8b544c5e -size 68319 +oid sha256:7b387b975338b4a6c5af508200ca4abc83c131d3e0a47be00059b7175ba28898 +size 68301 diff --git a/screenshots/de/features.home.impl_HomeView_Day_3_de.png b/screenshots/de/features.home.impl_HomeView_Day_3_de.png index c06b6ccbe6..fa5c6c7a6b 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_3_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9632d63be6dae2ccff6463cbc984b871223cab0cf044f10e453d871b6106d94 -size 63047 +oid sha256:1a13dd27e108bc6a89ea15c20b692763bd0d551f86545dbf5f8e14e27fba6ad4 +size 63059 diff --git a/screenshots/de/features.home.impl_HomeView_Day_4_de.png b/screenshots/de/features.home.impl_HomeView_Day_4_de.png index 1c1734ceee..dac228d352 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_4_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c6870cbb8fcca652d06ff492a900ef01f0272129ac6777e6f207c5c97dd5bfd -size 56530 +oid sha256:863298c4ae915960fb15bb06452cebe8f865359680e73097c2145120d326fabc +size 56479 diff --git a/screenshots/de/features.home.impl_HomeView_Day_5_de.png b/screenshots/de/features.home.impl_HomeView_Day_5_de.png index 5453ea83cc..efb8127d04 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_5_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd4033b18eacdf206e2b9d39006626c9eac96b3dc57b8a8200454f4b8b544c5e -size 68319 +oid sha256:7b387b975338b4a6c5af508200ca4abc83c131d3e0a47be00059b7175ba28898 +size 68301 diff --git a/screenshots/de/features.home.impl_HomeView_Day_6_de.png b/screenshots/de/features.home.impl_HomeView_Day_6_de.png index 5dfec9dbe3..a7a0b0b9ee 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_6_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f12c3c149d1aaaee451bc771accdaf5af6825bd5b2d0203af66aa0138dd8514b -size 55834 +oid sha256:661a48791a3ad29f5eca9f0f4d2cf706dd665d3aff1bc5a27b30d473bb64d083 +size 55819 diff --git a/screenshots/de/features.home.impl_HomeView_Day_7_de.png b/screenshots/de/features.home.impl_HomeView_Day_7_de.png index b1566559b0..b107c7dec9 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_7_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2faaaec56e952f4e50517073fc023736740b5ea6f50fce6554de3d2ac2b6871 -size 55158 +oid sha256:4e41548d16427c5657af3401c92998dc14a14946054c549a47c9e5593e129af9 +size 55148 diff --git a/screenshots/de/features.home.impl_HomeView_Day_8_de.png b/screenshots/de/features.home.impl_HomeView_Day_8_de.png index fb430bd3b2..92f7461f7f 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_8_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9dd1a22036e65045c84979c6623d4fa8d7548963dc1958434586a30bf3b2687 -size 53369 +oid sha256:c2695cf96a45cd600308b482aacb6adab6bd27c6f765eea8fcbfcc4fb3f8b6e8 +size 53360 diff --git a/screenshots/de/features.home.impl_HomeView_Day_9_de.png b/screenshots/de/features.home.impl_HomeView_Day_9_de.png index 73d2cf5470..894e80c9df 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_9_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:549c7644f0a20617bf8777175858ab08488d74871b8f027b44a34645a28148bc -size 88335 +oid sha256:cede5a861e7ea694a2c1473d055b8c6e91e3f1d730965b0d6969ecffa7383a31 +size 88268 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png index 06e1e4d73d..16603e1ad5 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14d48a5de0ed3ea22231f63e0c9505fa45b0ed49be9711ade65c3e971fdb90af -size 38115 +oid sha256:4125ed409129b21fbd135be095406ef6067796ab51af14f0a03e4e976a12ef40 +size 38129 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png index 84308ef475..a80a2921b4 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2663031de6e0be83865e6008f898ba06603132a03136c7f5c49959d883581828 -size 43019 +oid sha256:f117efb1ae1be195266ff14faf0223cf0e45ddfb881c2231aa166184145ec0e9 +size 43032 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png index 32ad3592b3..57660288f1 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e479455f6c45247609af474edf795e40298614aae7b0d91d28829ca47eaab41 -size 38313 +oid sha256:f70a4e76d086ce61717c84da62781fb167366e0e1ce516c1d5fcf59ede2aecbf +size 38333 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png index 389639d215..96a1e1c954 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a8c6ea3cb57beacb3ca3ebdfccb0dfc945861a75cedc74e3fd37f7306fd39f2 -size 33609 +oid sha256:1d14ff5d63ee27149dc21ae1c2cedb58244237b5303bbf7f45c299e61cefaea3 +size 33573 diff --git a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png index 06c106589a..530e34a0cf 100644 --- a/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png +++ b/screenshots/de/features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47ea6d76991c1a9d4dcd017186fc226150fe7f6fb0c3f772d9fe81c655f671fd -size 38622 +oid sha256:0b3568df86493ca9470dc99aa4f516f42d827fcadd1f9088d24749f777dd3193 +size 38583 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_0_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_0_de.png index 9f56a2e6a3..2a28b1e8f4 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_0_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32511b8f5a32774defea03b7c9765ff08322a2a59083c14f3a8d9b8e5807340c -size 9405 +oid sha256:4bae9cb2503981a199cf82e53a538e2cd5d5071a4d49ea0dd9ddc6efc8eaff69 +size 9393 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_1_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_1_de.png index 15bfd49357..f2d7135b76 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_1_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8590b5fd61453580add2dc93262f621b1dbefcff45ed9ef1004d0c5606c35dad -size 21730 +oid sha256:12e179c18e4fe4dd12f72be6e4dd3ea3f428220206ff179f11873156201bb8b0 +size 21703 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_4_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_4_de.png index 89363fb05e..7c2afb45b5 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_4_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:656f746cc9dc58566372c0a958d13307d2dc8b5a3c28da0c66f84acbb64489fd -size 9953 +oid sha256:bf1cafe9f59259e325cc772768436da6615bc8796c758882c2eab1f2ded58ac3 +size 9905 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_5_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_5_de.png index 37e477d72d..0155d2b086 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_5_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f289590cc23cf31013b55d95245d076bb37e6907a8b4409b57e0798847522859 -size 39288 +oid sha256:9f40663092e27a21969d6a7d43ecf384cb978c4ba473a2d3dc59d4c9a4896b63 +size 39241 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_6_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_6_de.png index 472cd1d139..ebc6bab03b 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_6_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d531da522778d5692a2f15f05aa4d75e412c8afe8e64aadeacd34b53517d4f8f -size 38254 +oid sha256:c64c5ad385c27b8db8ddf0612b6b45e6b77699292154c1291c862e110775f4cd +size 38286 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_7_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_7_de.png index eea89a228e..2324cdc8cd 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_7_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:361ffdc21a6bbe6d1e4d460c74e9fd8a2058d489f5d0e716a71a6dd970d7d8fa -size 30254 +oid sha256:d7ab5834d27935ba64544d7d768ba7aba1144bb127c6cf902d05c103394d2057 +size 30295 diff --git a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_9_de.png b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_9_de.png index 15bfd49357..f2d7135b76 100644 --- a/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_9_de.png +++ b/screenshots/de/features.invitepeople.impl_InvitePeopleView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8590b5fd61453580add2dc93262f621b1dbefcff45ed9ef1004d0c5606c35dad -size 21730 +oid sha256:12e179c18e4fe4dd12f72be6e4dd3ea3f428220206ff179f11873156201bb8b0 +size 21703 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_10_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_10_de.png index f0f67e6a31..af401c96b2 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_10_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcf5e51d91e309bfe97f696d45a0a3ef19c9139de30f3bbd0c1cd5cbb2aee22e -size 46807 +oid sha256:ae3bd5c35597acdd08b98069a29988cb640b5e18f88987d494235417d542cc5f +size 46833 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_11_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_11_de.png index 4ae703b23e..7daf68489a 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_11_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9399942211a13c9d871692dfd1b421fcd923ddde9f5922979ebfff07c0824060 -size 41067 +oid sha256:89eae936d074d8dd4b85b1bf2cea79cdc2e836c86c1af0666f6f99ba5958a761 +size 41109 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_12_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_12_de.png index 5dcd4a2ba3..08262a007a 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_12_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:296d74f3a3198f98599fd2c428268f67b4b70e09fdfbeead9f7c7436e9cf8758 -size 42259 +oid sha256:49e56a96b1484728cc32bbbf72aa1afb9a2832b9cc383b2f1c6196eaa6c106ba +size 42303 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png index f38dfd26a6..53905be788 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81ae149fcf6f1a6a52bb90618b2bd6b79192221d2decadd3d78f34ac227a0e86 -size 34158 +oid sha256:8020ec9606c7abb83beea3655c0093ea031dc73cb4999689c6351cec41774b72 +size 34186 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png index 5637757b98..b8e3885756 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26c22c76a3a13cdda38f9069adef8d6f17e2b5bf6bfa952812bde3575f62281f +oid sha256:40cc7f22caec6e0cea9d167d737f5320d68d628746283c928d4d8754d9fe8434 size 31974 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png index 06bb84c272..5a8abf5f49 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe3ea3e63387d40e0314b702a0e08bba8bee8b63dac6758fec713a929715b92c -size 35827 +oid sha256:969707f3c5e0989b2abf017f42887da3aed72393f0367ca4bb9b9ca713892100 +size 35839 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png index 5cd8ca5e77..2daa670c8e 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_16_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6367c2cb513ab5e26d3e16a1a7554251cd5051b55328cae99019eac84e6ef2bd -size 49735 +oid sha256:1169fceea83ba87555d57e1b46e7638033415dfe327ccb4d6d62baea28b9263e +size 49739 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_1_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_1_de.png index 4cadf347c5..9193157c9d 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_1_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff18fe6020711f81385f8e9e54fb685d49f95dbb720fdab37de2acc35896647b -size 41101 +oid sha256:1208ae724a5b274922aca200adca9245e5bcd8e8655f8cb47feacbc4d06e51f9 +size 41128 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_2_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_2_de.png index 013b1aa259..ae737b2a00 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_2_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f96ada2da82b7265fc655e4826069b395e07dedb28ad86761f956e398ced79cf -size 39667 +oid sha256:603d9de02688eda3d7de1c7af80473699656cb0b5e5e2f794c57acaa78946d46 +size 39701 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_3_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_3_de.png index d822cfb9f7..19c210a15c 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_3_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a6338d8c9baed45e73eb8eab8f9b097a708f1b2c0864de80911d8ddc3f9c361 -size 29854 +oid sha256:13d148d82875b231dc056d23bff5851df6c00a5f98d708a8a0329f66ef38c2a2 +size 29877 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png index 6744cd39a9..e7bd9cc356 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0fb1a5fc06cd64bcdb5b75e56fdaeccad017bf17b11c8cb8f9714e9c7eaab2c -size 46214 +oid sha256:292558f746830bbb4a4fe00282d2e3f8d6c99e57dd209568003a86af273759b7 +size 46246 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_5_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_5_de.png index b3a4eeb0d5..5311b37ec0 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_5_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:428dfda0652172cc9e9a2392db535fc51de5280b060d969863d0299142c1f35d -size 34643 +oid sha256:3f52fb45df883d18499a79d9c079b7eae379ebf358d71a507c9a97ea02191f2b +size 34623 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_6_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_6_de.png index 02b18e602d..c46327c62f 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_6_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1292c78624d48944ba94da85c8e56f2636d059458bbc330298dcca89131c143f -size 34720 +oid sha256:c997939cd44bf4532c43156848f6ea1d5623fba2e20cfda978be96d26add8c16 +size 34723 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_7_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_7_de.png index 5b96ed77a8..cdef83f98d 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_7_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d40fe4aa6b06f8b52ec5b4f94549c35613872b3c84843e814e400139c1ba1cd -size 41872 +oid sha256:3b171d116d25cdaf87e3437c71d94e0792654f91cb5f39ac34d83a2a1c4c946d +size 41874 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_8_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_8_de.png index 799892693d..456f06de2b 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_8_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:287dc0a75daeafebb50f79ec327a02eb019d3016b2e52e28613edf9c6e252315 -size 35560 +oid sha256:01f6142803fdf3e4adc9ecd640dca111baece2099899482776c11bfa98747673 +size 35544 diff --git a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png index b7606cbfb3..c00fccb6a4 100644 --- a/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png +++ b/screenshots/de/features.joinroom.impl_JoinRoomView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d097d473593e6cc6bd0cc7bc13ea40faaad312dde2450170c0bfaa7a96e7d2bd -size 43139 +oid sha256:878c10e2f1ca1bdbf15c09d9b46eb329f54d115f58a96eec4384036beb9c8223 +size 43166 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_de.png index afd3136705..6864e7af2d 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:175810c0046dfd28a9273ae6dbb9d4f89dc5bbfe719bf4a9dd4938b7e03d2e29 -size 32154 +oid sha256:d7320b17b7d09aedfb0af1d7a8cc63813cd11e9cbf94e6e3fc690f3d355ef24e +size 32142 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_de.png index ed3160dcf1..03ac3d6204 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:815272dff296fde43ba3cc8aaf6f7c8e763c8434a400ed2a9b09150f24614f1d -size 37721 +oid sha256:740d9ef181124f879df48739f96c84e734094e0d98b8e3e03b88fff392ce4cf6 +size 37713 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_de.png index cf38da1b6e..9bb9a4bb78 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30743c42e137b63960d18a76df1b488b055b62384e4d984320606ecf0f591e1c -size 21452 +oid sha256:d1469dc66914be97971ea643eeb70ab20a902bea9eb9da5effb8e9c3b7219d5a +size 21460 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_de.png index bba069deb0..40941f17e0 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f921e04c544b858f02165d15b1bdc48e71fb9572a6717e52e7c7dcd556e5f64 -size 22488 +oid sha256:20fdd043d471b0ba14bd8809ff9769b10e02da8b9f00f30295385a86eaee2f0c +size 22517 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_de.png index de8a818e1a..6e6cfccb1a 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:183f893c3b7ff13533f6130c85b293547dd505ec2ac223ff5cf4c0c1407171b6 -size 28889 +oid sha256:9eb82a3189364f26aad7d96e8efc79e8baf08844c34fd40e53659c632f48a3ec +size 28882 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_de.png index 1fadd8530d..f3493f3cd9 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef454c29137f961510691af29ba49066eb25a59655cb565243a74a08b0678d8a -size 35021 +oid sha256:c835567802dc08e802560d3740a7d6ce4e52ea74dc3bfd19a9a7a41b0b6069ca +size 35028 diff --git a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_de.png b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_de.png index 32dc93c205..034e4ee0f9 100644 --- a/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_de.png +++ b/screenshots/de/features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c01028c357b014744faa022ea93801a44d7f938b869a4db1c14992ea732665c -size 42277 +oid sha256:94834b539f3bce5590d87f4a2ae2290984cbd50298dbe4e0f877616d3d7ff074 +size 42278 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_0_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_0_de.png index 37057b18f4..c86d36691f 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_0_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbf0fa64351f2710f026b438753f426e4473bcdd3a71e8438013a1a1ee970699 -size 16357 +oid sha256:4e640f3696ef9ff12f1ce4cbdd4eb22294c3d97dcca419967df17d2ae8fb4631 +size 16370 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_10_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_10_de.png index 90deee1a55..e4a1ea49f9 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_10_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:208cca1b73135011b969b6b1c7ef30497a4f645fb531f7d666f223233d766791 -size 32066 +oid sha256:cbd9d5be0a2b6bbc69cd1ee2f82e5d6ee024d523acbdc552effaa8217b35c4c5 +size 32077 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_1_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_1_de.png index 05644c04d6..4acc94ba2f 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_1_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c76f2ea8f90917abce153e75fc162cd41856d122bf8958bc7b71bdc8107b167c -size 28133 +oid sha256:ce88197751c51e1c354a0fd35ab6b885782f2b88242e56d2707ddc8c97466edb +size 28114 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_2_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_2_de.png index b5e2221a4b..08335e8580 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_2_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2265efa921451e40b9959e4fa2724978eb118eba074e0d039c6a1c66aee97a41 -size 35666 +oid sha256:2523831ad6a9774c5ccc3884a66daa8db842772b81963c518efb323a2066ac6d +size 35677 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_3_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_3_de.png index 1dee560633..139f9d1ab5 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_3_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a3f77248ac32c2a6a86f47b8b5d40a57d205949e4d8f673c4735d0af833c47a -size 44390 +oid sha256:a8b78ec6109746d2ad7bc2e1fe6075bf1772e6ecd51cde4c445067fbc085e94e +size 44401 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_4_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_4_de.png index f3891ed3d4..332e7fce13 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_4_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77e42fe00de27f72afd6b7d2670f4dc72293eabfa800153052351d7cda20bbbf -size 57917 +oid sha256:96c9b9bc65a75419b3100138c3761b3729ead674793bc147047a2d295009ec57 +size 57926 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_5_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_5_de.png index f739c629e1..6776e58586 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_5_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb4b0c5968cf1859485f0a88e836017ce640e9e7ecc5a8db31df0cd51012da99 -size 48479 +oid sha256:9cd29f7afbbdbdb26a31156549fec3c969966076b35228c1777de7bfe060c09b +size 48468 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_6_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_6_de.png index fb5adf5e5f..15e8bb5ea6 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_6_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0948a04ca82c9826163898b5998e2a1e7e19a3e212a7718f4888b618aff0fad2 -size 37931 +oid sha256:b84f820edfb2283057f8e7d7fa2f7b1fda88dc166644d32a8b252b5eb6543330 +size 37921 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_7_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_7_de.png index 60d8909107..c9945d8f52 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_7_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7f9908bb1a05de0c4e97e830f9ee543deb29d8664cad5ae5a29a5a6cb5284d1 -size 44367 +oid sha256:10017c00cf317eda5996aea05dca42a654a5f63c3394d7a44172640cf704a4f2 +size 44355 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_8_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_8_de.png index 87ad6ef300..96bc96c8cd 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_8_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e961c29fe0c5fc1bb0fa8b15645f5ab4a48769b36a263261b1fff8ccbb141bba -size 32506 +oid sha256:2497c033e5671544adb216393b0289115ae423552428259195b7eb7fde155344 +size 32516 diff --git a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_9_de.png b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_9_de.png index 0f2f3b1442..a4ec2367d6 100644 --- a/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_9_de.png +++ b/screenshots/de/features.knockrequests.impl.list_KnockRequestsListView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3271c2b087197cecd7efa3cf8b5f4c4a2190a1b41551004d2a9466d3b5b8cc1c -size 28676 +oid sha256:42cef1b3e2ea03ee7fed2366b92b3c27ace1f404eb2538663ffbbfe3decc0c73 +size 28684 diff --git a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_0_de.png b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_0_de.png index 7b4740fadf..23ba7638ff 100644 --- a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_0_de.png +++ b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70176fa3a368a15308a8c22bcdda99b1670260b2ca7e6a5ffcc0595ae62178eb -size 10737 +oid sha256:66752c0c42fb8f5d7f4a8b1c30fae0a74915ba10c9dacf3e105385d16723061b +size 10746 diff --git a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_1_de.png b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_1_de.png index 4764b6c076..19d2b6837d 100644 --- a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_1_de.png +++ b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12761bf881ecc1787f48834d36f950d38d8dddbcb8fef8f21553cb695ba57e8c -size 10222 +oid sha256:8c28b57b1c32f82d34ff5182bd4b38159009189f35da96286bb7b7161cdd3e6f +size 10230 diff --git a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_2_de.png b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_2_de.png index 4d332c73df..ef0c4e20a6 100644 --- a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_2_de.png +++ b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04ad3a3f5f6e09d7f0e22509a22cbe0b7d252be9ec8bfcfc7208a6d7df1c76f5 +oid sha256:efde81467c111a977ce0bb7b5b170094e033eb12d258809bde0ae46f789069e5 size 29235 diff --git a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_3_de.png b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_3_de.png index efff44f56e..e7e8a3926c 100644 --- a/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_3_de.png +++ b/screenshots/de/features.licenses.impl.list_DependencyLicensesListView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2230c0dc8f812a9eb06e54fa08e3f3299090a8f2073b8b589a641b7eccca54fb -size 30494 +oid sha256:17f907c0005d8e818f74fd204799380350ec0a508c85365c763ba0195363746e +size 30490 diff --git a/screenshots/de/features.location.api.internal_StaticMapPlaceholder_Day_0_de.png b/screenshots/de/features.location.api.internal_StaticMapPlaceholder_Day_0_de.png index 2bea7fe6e7..897ab6acae 100644 --- a/screenshots/de/features.location.api.internal_StaticMapPlaceholder_Day_0_de.png +++ b/screenshots/de/features.location.api.internal_StaticMapPlaceholder_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8096f14cd637ca3042c54d17c6201b633e3f631e637fa5f4060b5c4e56d4faaf -size 440276 +oid sha256:819c1529fda6e1ccb661de3938ba24206164d92c7da38d186fe3c82eb7b66874 +size 440267 diff --git a/screenshots/de/features.location.impl.send_SendLocationView_Day_0_de.png b/screenshots/de/features.location.impl.send_SendLocationView_Day_0_de.png index e3b1a4d8f6..9423b39f9c 100644 --- a/screenshots/de/features.location.impl.send_SendLocationView_Day_0_de.png +++ b/screenshots/de/features.location.impl.send_SendLocationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:afd961db19f26c40b6811193b0f97130fd83cb7b06a4073666394c8d272c3d6c -size 19312 +oid sha256:b6f1f50d040889a65379d67fce0c5613b898d6cb094acb1aaa4dc0b92a7f657e +size 19347 diff --git a/screenshots/de/features.location.impl.send_SendLocationView_Day_1_de.png b/screenshots/de/features.location.impl.send_SendLocationView_Day_1_de.png index 3496a6c996..b3b8b971fa 100644 --- a/screenshots/de/features.location.impl.send_SendLocationView_Day_1_de.png +++ b/screenshots/de/features.location.impl.send_SendLocationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ec028bee93f35e79e812ae3b6319c29bbb49e3f22184db437c9ae05546b9ace -size 38189 +oid sha256:e7853a7f3e4df8122bda7f95a8f5c813b01ca4fc670e5529bee2df05d9f85ce1 +size 38178 diff --git a/screenshots/de/features.location.impl.send_SendLocationView_Day_2_de.png b/screenshots/de/features.location.impl.send_SendLocationView_Day_2_de.png index 864d79e548..00182b3b1c 100644 --- a/screenshots/de/features.location.impl.send_SendLocationView_Day_2_de.png +++ b/screenshots/de/features.location.impl.send_SendLocationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:057899a5bd1686949708242e9b96ca798cf2d8710c65347934216f7f99e67f15 -size 34558 +oid sha256:5a76e4f8f281da0ffe84d87ca3020ec6c55bf44d0dade2fe0c7fa0873e454b12 +size 34548 diff --git a/screenshots/de/features.location.impl.send_SendLocationView_Day_3_de.png b/screenshots/de/features.location.impl.send_SendLocationView_Day_3_de.png index e3b1a4d8f6..9423b39f9c 100644 --- a/screenshots/de/features.location.impl.send_SendLocationView_Day_3_de.png +++ b/screenshots/de/features.location.impl.send_SendLocationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:afd961db19f26c40b6811193b0f97130fd83cb7b06a4073666394c8d272c3d6c -size 19312 +oid sha256:b6f1f50d040889a65379d67fce0c5613b898d6cb094acb1aaa4dc0b92a7f657e +size 19347 diff --git a/screenshots/de/features.location.impl.send_SendLocationView_Day_4_de.png b/screenshots/de/features.location.impl.send_SendLocationView_Day_4_de.png index d2f67e9133..e827e499df 100644 --- a/screenshots/de/features.location.impl.send_SendLocationView_Day_4_de.png +++ b/screenshots/de/features.location.impl.send_SendLocationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:104c572c42f9a3c02939446d74202f04fa7fe7f1319b906381051090b450ca35 -size 19509 +oid sha256:05358d74019ef180be62dab139701eb94e562108b56015b09f044a89f418ea7e +size 19508 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_0_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_0_de.png index d2b37fa62d..a65b0a6525 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_0_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a74ec7c80ca76d340b5677a43b54eb2f37366fb5fedbdb0309200f85817a46f0 -size 11185 +oid sha256:ac0a0c4a5f23f042f67689ddf63f9206e727fd59970589a82c5f07546646002c +size 11188 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_1_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_1_de.png index b8dd2b8613..a801df51c3 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_1_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7e861fcd4411820176481f0286ef2761d315a4e360d1e11060c0ff81b79441d -size 32748 +oid sha256:bccf267283f170756cd967a55c393c18cc5c74bd8bd0eabe2a238a3f32ff68f6 +size 32723 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_2_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_2_de.png index 142072f53f..eeaf10476a 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_2_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28ea4c839cdadaac893336a2a4d010049a16318ade2ada6bd47b836813d1549d -size 29133 +oid sha256:bbe8b535438d0625174537e66afb33ec2448358d2de9aa3d34ec050471fbdf4a +size 29110 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_3_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_3_de.png index d2b37fa62d..a65b0a6525 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_3_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a74ec7c80ca76d340b5677a43b54eb2f37366fb5fedbdb0309200f85817a46f0 -size 11185 +oid sha256:ac0a0c4a5f23f042f67689ddf63f9206e727fd59970589a82c5f07546646002c +size 11188 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_4_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_4_de.png index 0fb5a74d8f..449afd5194 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_4_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ba7c229b92eff8bfb53cf729a8dfef6ea5287e83cd6037d1f66fbd9bcf0ad76 -size 11319 +oid sha256:f6732dc9ac50b55af934890c3d3c10bb028700926ce14a8cdfcbc667975a1e85 +size 11321 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_5_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_5_de.png index 067f9b76a8..62c2b50868 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_5_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdc4c2ee2bcb430249a629cb53f0685c0aba380cc32e127bd2fc3c48bdf69d2e -size 14918 +oid sha256:016b0b4fda7c09023987d6729eb426313d761ada684f3c2afad66eec0621618d +size 14920 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_6_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_6_de.png index 246df83592..ddd6b6584e 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_6_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6dc9fe8e6ce13b5752b36507c583f75069eabbd8c27e06e53bee1579cb0cf2b9 -size 23540 +oid sha256:f3854cf1fde4705b74af01d2e4bd69a0a545bfa6972b6f29f7ed4823c0ede6f0 +size 23548 diff --git a/screenshots/de/features.location.impl.show_ShowLocationView_Day_7_de.png b/screenshots/de/features.location.impl.show_ShowLocationView_Day_7_de.png index bee47c76cd..ac5be030e9 100644 --- a/screenshots/de/features.location.impl.show_ShowLocationView_Day_7_de.png +++ b/screenshots/de/features.location.impl.show_ShowLocationView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff97bdc5defa5188b66fec26e4693aacae40d05c7a0f50b829a187383bce8cf1 -size 26315 +oid sha256:8a975bd93798de9600bb9053dbfaaf3da9d93d288d6ba06322b184a56b75b8fd +size 26320 diff --git a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_de.png b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_de.png index b00e3db6b2..f4d77a6957 100644 --- a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ed749c9e3b21e56071e611fb75aed1292a9b35e36e52fd86d2798b8d4271924 -size 19294 +oid sha256:34026e4f96c633b50a0a89e227f6067a21691973625db8bfb0acdd895c6dd354 +size 19304 diff --git a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_de.png b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_de.png index 1e7f9e3026..610d2a91af 100644 --- a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fad10b820bfc20ea81d2c33c756d8acebbf2b2e44f952145bbd21ba24dce633 -size 21629 +oid sha256:120d9d3783d3b127e42afd559523487bf467442ddf26e4d0b8503a0ccd69c0ac +size 21638 diff --git a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png index 73d3587019..254a8ca813 100644 --- a/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7415217e713fd3f3828942be2fefa87c9f743c484d50ec60ea1c0a04949bfb65 -size 32895 +oid sha256:c1a9677e805c288bdf53400a985fd6b627088b503ea19ad741bd02973263f167 +size 32875 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png index 81d00f84b0..c79f74d6d7 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:417247c7f2485fb6f30cb3182b008d7f7c924c52930ad0db3b1113e5e641803a -size 30799 +oid sha256:e4c89b14ceb38ef06608b66930004f79964f61f73c0ee1cd15897f96c6918a2b +size 30819 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png index c292b6e7c9..47a6946820 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8258316042dfcb5f43fdcecf484a0c920a5b5269baf29ba4f00103c89d5308e8 -size 30385 +oid sha256:676b3fd586f5e7fc23feafea118a5e6f32d8c864d75676ca7667e87402da8dcf +size 30404 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png index 3650e95272..490fdfc456 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ccc829c98481c9af5680b23b50dec0c8abd5ba7fa4bb13c2713822438a7d0bc -size 32019 +oid sha256:5733b7e9ec399adf8ee44bff0766d15637b3570254fcc696cdaac93119dd62f9 +size 32038 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png index e67751b3c7..99599de08f 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:339e4dc13f6074ca938d6752878b54752f6c9002c92ebf291136079579f85bd5 -size 27776 +oid sha256:5063256beed2a629b85311e76383b5ffd443f29493e35e3a3c5c4b08a921a506 +size 27754 diff --git a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png index a7a98fafb1..92b90f6150 100644 --- a/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.setup.pin_SetupPinView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa5cf8e3bbd7116f1c8c27ac29d956929ed6a52e7b2b9a0cc425709ed83c3c1f -size 32583 +oid sha256:dcfd554e8853810fe9d6cf9acfea199e997f2ebd918b03cbb0994831b34848b1 +size 32563 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png index a41d3d7552..9017f4f468 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5b386b0228838abb900fa711998208c05f77dc87f760c43397058fcb3d02c19 -size 22679 +oid sha256:32025dce1538727710caf62b4b9bb2eb027eb639157ff09b7c478616ef38aac9 +size 22674 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png index 91bb9f0d72..4794d08d63 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee063246ef3d9f34f75806a5b6e772aaa9a60259d9d5fa19b1be5c0a932880f8 -size 22308 +oid sha256:6cbe5f05c4293284c0668baa8ede841abcbcdfbaf79227040e9a341ab95f3f55 +size 22302 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png index 1a29ac6b2f..8ec35e8d73 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dce56693ed4a6473f477e85ff548630bb72a0c1aa5f063d02abbb7c6c151013d -size 23375 +oid sha256:261596f177bf0e1dec85a351faa140cccd08225fffb7e4418c3809929b561330 +size 23371 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png index 2c73a48c43..46a40b50a2 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d5c7d1a7aef1ccceaa1837fd3483bf1067158a9edd0fe7a03aac74d313c3874 -size 37439 +oid sha256:79d4ee84ccc1ecd11b1c3f7653bda15aaf27d572a2000936027a718b71675337 +size 37438 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png index 78c17a0adb..c4b3ee574a 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91e32f6186bf16d4880b31b0648b211b9ea228cfc4fc74e0cdfdb6e66d3d32bf -size 20083 +oid sha256:ee69cce0a6a7e8a65f1c9d5901cbb73be21d23a0b6600312f0ae0b42218cb3b2 +size 20080 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png index 15bfc89256..7872dd1e63 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9706510016738e2b74b143c97deba9c7cfe3ecf4735b9f033c0cf4d0522005b0 +oid sha256:9840735ba05fa48377151a0613a1951f0058be4ed7f471ed63dd1dac11f2b7c0 size 34216 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png index 8c25e8ea0a..2e73dc9653 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ccaa6e9d59294afe6dbb65c2bb5e207bf81d3f14e71752518df78316434d706 +oid sha256:922c9e382f6cd0cda24766089320405d13a946c1f77052f088022128d7fb1d17 size 23541 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png index 9e2974f594..ff67c21880 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02cbbc16f07b45feeb638195be476483d68dd652462f8b069a6e1492f66d0089 +oid sha256:240850064c8c692a722b08292c47746b6709c6b7a2e88ed720599c76e1044f54 size 25068 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png index 019536128b..cc177bb9f6 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:007d4fbd2d36927ac9b27063b08cfbded0085b58bc4e5d9fbf1e4e1f84d2dd62 -size 38394 +oid sha256:d46d8b8f49f4a15e342099444367b5ea84d0663ce24d1b125f128e1a5e42c7ba +size 38378 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png index 4cf461ffff..f2d4e3c45e 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38dbf516ba28c75aa91b45e3e4f4e3afb1a6959038177bbbe5b0650aa42d1fd3 -size 38798 +oid sha256:442886da954416ff3d3d5a9833af2c906490f6e58792e5ac64435fc754545942 +size 38777 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png index 35c9c8c261..cf7f7a70b8 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e77abcfd3e6c9214efe1ef6fa40cb0dbc19a4eb7da184d1b4084479fe7d0b57e -size 39081 +oid sha256:0056002441e3a5632172c328ec764f08b7482b4c294aa46bc58517e97f333329 +size 39063 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png index f12bab73c8..78b50bdac7 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:727b36b17214000ed929f94b6bcbeb0da66278031e1ffee2fdf547201f542f2f -size 44275 +oid sha256:77b60d10bdf6f4805fd8414f2ac06550014cf7dae09741475dd9dd680969e32f +size 44276 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png index 35649b1c72..a933e30339 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1be354458cb21172f8d2e93aacc98228a074536f8dc3dce734fa81446f7f9c47 -size 35793 +oid sha256:dc498359b64e564bbe93584bf06a5dee85e69bf087739b06cf8f6b45f9ef8a38 +size 35777 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png index 78da42de5f..e4109aa848 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acc9e12a77d389bbcb17595e5d50f7efd99140eed5935f5c90d9ad82693446df -size 41195 +oid sha256:3d1c96ff639d6f90a5ac3d0602fa274be5b337f93ede86d67f4884a776c79690 +size 41196 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png index 7d8f9e851d..557ee76ac4 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63a908bfa15be2c537c5d1a20d3066fcfca4b5a60256696ad819fb45b59d7a76 -size 32088 +oid sha256:ff076d7a9b3ec5e47eaac119c674a06ed9701fae17b93bd33fd12fd0a730d5f0 +size 32089 diff --git a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png index 9f22132175..9a70572566 100644 --- a/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png +++ b/screenshots/de/features.lockscreen.impl.unlock_PinUnlockView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88c5747df737c777ca3e1fb039e6507489d2db418d46d970f25b7380ff0dfb40 -size 32282 +oid sha256:a85c15d3d4fd79b4ea8070675e416bac6fccee1976dbfee7f266afd8eb1ab4ce +size 32285 diff --git a/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png b/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png index c1f8569265..b25483cf6e 100644 --- a/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png +++ b/screenshots/de/features.login.impl.accountprovider_AccountProviderOtherView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90228e7dcbd071862d9a57bf5b2701630327fc93303587b61abe61b55fde86fb -size 6965 +oid sha256:2589bf106f1ded927f3c802e514af09d738f611f5eaa90f583e29efa17d11f87 +size 6974 diff --git a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png index 1c90dfe136..f5e194b762 100644 --- a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce9f67bc654d9248b1aa456ec2593c59b6a310ed946a665bce70b8b637004054 -size 55679 +oid sha256:5b4d9121e27dadf76263ecfeb97d799db3e96ed7f2b3bdafa45e6b2a4775514e +size 55706 diff --git a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png index e85c13a22f..96a34d853b 100644 --- a/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd69df898ead13a5db4c057bbdbf27ceaaea8666952f464ae75bd4c98e9f036e -size 52760 +oid sha256:6f800532b259209d2ced3a0f7bc0ca7df3acfd9481ecc4982f93610ec7caccd7 +size 52790 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png index 1d0be7b05e..e6c059af42 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02959fe7fd9afda6b339165eae70971bd007b9b3c5f3fb5a042c6a03b28b5571 -size 22391 +oid sha256:5427c0d2def74282d09a97ecf1c1f0d110a520d4defb5caa26e24c45a9cd62d6 +size 22399 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png index c4f94e01a0..55531fbea5 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89323d975ec3f4962317bb1763cc58e4e548f38538b6869cdd14b26f55b0698d -size 23293 +oid sha256:3e67cdb2ec597cfd13554de0bc654c701606f489f01aeb6447db6b9f51b4a167 +size 23298 diff --git a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png index 8b3a874a51..818e373c09 100644 --- a/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f267018e1a5eb31f728a724b46a086b1117d28e71792364b2a9e90d5093c421 -size 23947 +oid sha256:63de22015cc395b9429ce03cf0f487520f39b294f267f873b11d7651c8dda4ee +size 23952 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png index d1f5a7496b..be6b282de4 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a9d211cfab821ec51870368af03d20cfbaa30c6a439bbfb27e1ce37c52533fb -size 39101 +oid sha256:9af932ad48f8c3f79b993e6c08a4b86711fc50cdd970368ffa0c45d83fc67f6d +size 39092 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png index 804bc0e00d..1dee6b69ea 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d0a901c662f5595c50485e40c212b66528f7e1ecf19ce844c8360a6b22d0572 -size 39965 +oid sha256:0c2b946fddee79fa6c0bf6de966e8bfcfdbaa1b5d2827dd597e7355f7cb8eb5d +size 39950 diff --git a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png index 49eb1c3e50..aa1357c481 100644 --- a/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61d0f8e341e76fee533117b9724aec1e299519e7cff827d43b0977e7d6845ab9 -size 41284 +oid sha256:8f4994f2ebdf2f17efe55bad43cc3e5eb11596f7c70cbd06dc8314053b62b8e9 +size 41281 diff --git a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_0_de.png b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_0_de.png index ecce48b330..4c3049a595 100644 --- a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c60958307eff3de5780e439eb7cc4251b3995629253a94fae00bd8a4c444fcc -size 13398 +oid sha256:3dbb21dbcd474756d2f6ae7d8dafc76638d38758059d11224050484db5d563b3 +size 13421 diff --git a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_1_de.png b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_1_de.png index fa83d7cd5f..e9df8b4415 100644 --- a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8904cd72552ae43c390aa8d488398aa6c5d5df6e3b4420bf10b217d0587ecb4f -size 13513 +oid sha256:b454c821bd0825c76629230b4089c9b39d4f4b0239ed6236671eec226fe1b9f0 +size 13538 diff --git a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_2_de.png b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_2_de.png index 640b102480..96589b8f00 100644 --- a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbd1f46ac606ff3608b805c86651a676a8ebff6a74e946c6d6912417c572f69 -size 13484 +oid sha256:66fefc519b20374d3cf7e4bbee045733c2eb15df79a0cf54ffd0cc926d134679 +size 13465 diff --git a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_3_de.png b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_3_de.png index 61d358271f..e8812b49cc 100644 --- a/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_3_de.png +++ b/screenshots/de/features.login.impl.screens.createaccount_CreateAccountView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f55612c2279875c0d128d124097f6ed36378e16bf4d0a2ce27126e3f76b57147 -size 15587 +oid sha256:573bd2192b81bcd2c3d52f6367db452d2e3c10de55be107752b03cc1a199f58d +size 15570 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png index 5411eb86e6..f718eb02bc 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5e226015f1d493ec4cbfb1b11d7112cd4826190a60df0f9286a0f9c0f51cfad -size 38621 +oid sha256:23a64ef6fbb4578b07b7d50a9e78170343377d58484ce55491fb12ab8ee4fa38 +size 38637 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png index aee1a55cd2..a7abfb9d84 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92864d613ce5a68ed305bd0b1e337ae2b3fd9aa1c3ad1bdf625f062a25e50824 -size 39815 +oid sha256:1cf7ab528c61c3498d139eaaaa24c84a33b12279f27debd9ef0092ff95c6b010 +size 39825 diff --git a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png index 8c48a80d25..6b106a70e7 100644 --- a/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e73952f62b9f4addbf6c66e6929da91539a451660a6617ac53f995534726f52d -size 30406 +oid sha256:83ca19990a58cd0859f5dd1aa9c2b8bb898870479fc021fa7d88c5e64c7809d2 +size 30370 diff --git a/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_7_de.png b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_7_de.png index 247acb90dc..6c0221d4ca 100644 --- a/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_7_de.png +++ b/screenshots/de/features.login.impl.screens.onboarding_OnBoardingView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5dd50e66c81b2cdd21c7d3ebe9fa1ae1c56c43c271a9ffa57a6868b9e19d230e -size 22756 +oid sha256:8049495bd9db420baa3303f0fbc69e97e2f35f1078f5e55c846e95ce5c960a96 +size 22768 diff --git a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png index 7a4dd6c1b5..ace1448a65 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36a937b32ea014cc94dc00b14da82549ab4d8cc2c2de89f5eb490170c87cd5d4 -size 38356 +oid sha256:ba54da623ad58165e81d7becf04a0214ea599cac9a2d4156a0badfbff591bd6f +size 38354 diff --git a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_de.png b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_de.png index d78df8c9e6..54d9eacc08 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9bf45b8d4d39d6b5fc70852b4da0b2e2d7db438303ce4471c396449f0317c46 -size 35373 +oid sha256:640f78e1a5164099db2310b47225a13ebfafab3805e9596f5aa42636d153bb84 +size 35372 diff --git a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_de.png b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_de.png index 106d8548d6..beaaad553f 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db2df4d775b8b14a54e41e874d93d242d0e72fae3014e5c73b92fde96264e153 -size 37393 +oid sha256:8523e758a62b02b54a2d61cb1501c198ec47a21a1a89249433d6a6769c6b5dd0 +size 37387 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_de.png index 8ae128b8bf..65573d908f 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de48b52dabae33b439d732cd6ffa5eda5013ff5118cdf12392565cbbe1d7b469 -size 24998 +oid sha256:3fc70436b6ccb1afd77bed07598c020796341aa100b1eab6dc5b00868297dca6 +size 24990 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_de.png index f3855d5d23..c7cf5a7efa 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93a0d0551046745aa02e1529fe4f27fade32853e3ec7f8ed7573b0bde864feb5 -size 22041 +oid sha256:50c28eb8481b1101f75bf8341481ead0e77daf116207d27ddc5c95316daf8e41 +size 22035 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_de.png index 031d4b02f8..4468511356 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ca8caeac8dc4d9e4e405daa0377aaab0cf3acaa9f3a744c284450e9f63f9deb -size 29400 +oid sha256:20558650fc6a3859569d52baaab1c8af2a68e2944fd772f0d62ced5c1aa44208 +size 29397 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_de.png index ec0f4bbe6e..cc41086b2a 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5e20cccecd67e059b0f685f1716ac5f575b7d392ddb1fc752a61a04133565c7 -size 38714 +oid sha256:8b827b26498db3df6bf73b4a66b50be634d7c484c7078791c7a9caaf2f61eb9e +size 38702 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_de.png index 6cf5423d67..33122e6dea 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2b7da8d3fca41ce7908dcca66bc8ed5b4a00865e5999698267fcaa15f72ab41 -size 68949 +oid sha256:b39882c9c6d9920d0f76f3b80599b7b41cc6eab4480c6a10f09cf0992acbf203 +size 68940 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_de.png index c7b6fe4608..a5eae154ec 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a9f40df5c43f367b5851000f67a33093eb7d88772a8c0f7e698222aaec816d9 -size 21736 +oid sha256:dfa5cb9c32488940567a9db89a31b056095377a66a3c699e9137b42a5638b44f +size 21727 diff --git a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_de.png b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_de.png index 4cba75915b..5f79162d1b 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df30cbbc9165d7b181d8b436a3922a63ded70642ea9e83a2027bd6425496d28d -size 23972 +oid sha256:c184323fa1b1d87f46be6f49bf983f7d4048b5547906531b452924ee89110d30 +size 23962 diff --git a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_de.png b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_de.png index 80c19bbd5e..cda0b53b57 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:405463cb5f8c7a1fa1d05be06a392455644425a65656596c2dc804f1aa003a5a -size 57424 +oid sha256:a1b930e7b4ebb1e55e812a851c62994b846fcfc204df812e24982205f7386f2a +size 57447 diff --git a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png index 1c97360bff..fd58392211 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ae87ae2b64c271d0e43e9b51502eae24e5f3d917f765761e6840f04b3a417b5 -size 50945 +oid sha256:f4f08261d3e9dd275b271ab07cb9015547abd0cad6b90ed1e11e0c9d02fde4b2 +size 50926 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_de.png index 1aaea102cf..ff4a5d5785 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23c87cc1e2c91d5fc1795006e59930beec147ae40a63a93431f3910ef09cf58c -size 14509 +oid sha256:530e1e9747be0284eb2600abcca2ad6103d10aa1513712d610b797d0595190a3 +size 14532 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_de.png index 9ad95d1102..736fcfe796 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62ea7144b8df68b9af8671c96d8d726e7fdcf00a6187911bdc4d092dfc80534a -size 19385 +oid sha256:3ba23fbb4402878a5a249a997504d69fcc268a15b5ef00512dd15e12857280a2 +size 19411 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_de.png index 03b1051f57..303f7d4282 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fd74994f9ea6cf24a6e05ebf2e11b5b0bf3c13d33d43b4c923d428cf5761230 -size 30477 +oid sha256:26d79ad02e39da6cb3f5a5f962b302832dee465096a1269941f9eb6c74277971 +size 30499 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_de.png index b81d99193a..6fcadfdd61 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e724cbb9eef1073e6dbbe542da5455cf1991f2520f85516ad5294d2ee2eb9e27 -size 38989 +oid sha256:3562640bc228a3977c216d7981692029b0a94c2b109628121571cb9804a68024 +size 39016 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png index 31bcf59ca2..77f1733a60 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:464b9722b90078cbc7391592ed372655c9da484b1c7376f8a65587d79ef750fe -size 34092 +oid sha256:eafdb26bca443afa4921432073c560c48116c2d3e9d45f8afcc1e35d8819905d +size 34110 diff --git a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_de.png b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_de.png index 653caec071..11303295df 100644 --- a/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_de.png +++ b/screenshots/de/features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce738d099663f704b97259ac841dda2750f98d11670228a5e3b851a409d6499e -size 32198 +oid sha256:988384f6d8fc5b65e5e8d5c047ddb55a953867d34fa7d9d6543ff7f07c096b34 +size 32203 diff --git a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_de.png b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_de.png index e720188b16..2cedb5846a 100644 --- a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_de.png +++ b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:340b8755836b80fa0a0e19c01b1c454f0b5d3252deab7a21bac7426b94d041cf -size 27400 +oid sha256:cc98a0c12fcbc1d672ea731ff6b219d11349f4c52d2faca460e7e6925b81169d +size 27440 diff --git a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png index 22192e8b92..d1025cd434 100644 --- a/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png +++ b/screenshots/de/features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49001b1985590e67ee3db2fae8c221b4f11016d9a7806ed68eb48ce04c30ee75 -size 59981 +oid sha256:ae928b98d163bb95921fda90ea37df1bd5ab15b02216f98ef5b43d772648a4d0 +size 60034 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png index 6e765c4d2b..cd21f9ed18 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f80d0892014051edb5e84dfe11c6ee389c7fe168143b209b8272c6426582063b -size 91934 +oid sha256:d4749341fab25d56ceb80a838ae7769f2bc65f7640e39533c88ed1bdd480d824 +size 91956 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png index 978885749c..0e5669f7a2 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58b9692e7ca3fe21d0b7d99d29a57d5561f0132cc8a051e58a15164f7d840f22 -size 91634 +oid sha256:ff0fd10d253cd4f21870541d2ac4738180267bb5a2ef4e96cded9e47b0923200 +size 91663 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png index 52bed8eca4..b111f01643 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a9978fc6a551e92d64880cebac69380fa57cd793e790529db023111ea1f407c -size 79754 +oid sha256:2b2fec41e0b4a6f1e8bd8d4d4cdc6a0923c2df9f74e65f83b6ddab58fde6136a +size 79733 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png index 1f348e63fb..58a213486c 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11460a94377563f3d31bd808e562ced36f87768d2849624fc4f98fe2ab1ae46f -size 70252 +oid sha256:164f3d77fb45dab07038149c6a7082e2fc6a81b4c445720cf66fc0b30e8c474f +size 70219 diff --git a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png index f53bb77866..1abf890078 100644 --- a/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png +++ b/screenshots/de/features.logout.impl_AccountDeactivationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df52787c1b88af53738293ee058b67ddd08f78c857c2e3af3f006d12626cd250 -size 61807 +oid sha256:80eb9b831176e211b8bbf7651ef76111ae11bd34e6c71eb41727c46a3d6c17a9 +size 61787 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_0_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_0_de.png index f881738b4d..b8d08c2ade 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_0_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cff9a788308620d142f7feda91903d256520c7b86a8ff30e52fdb08454b2787 -size 11483 +oid sha256:53348dcb9da01db38dec34fc8b11893276a867aa84e18d5b0c1c87f0ab282be3 +size 11509 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png index 767dc73fe4..ee55736313 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3faff786fbadbc9d1fb919c0c9bb079b035d2719eb9719801cd075509b06bfce -size 31228 +oid sha256:85cfeed43ec40bb849282f25c63740903a4e373e26f7da97fe5e5df03b934065 +size 31252 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png index ba34786195..ae73822529 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b71f67aac5314063bed0e3cff4661a68fef37383df2525f67ccaef1aa28b45e2 -size 36602 +oid sha256:7b7487fceb9ad5cfc1625720cbcd651b123ea6639ff1d287cebc50bf7b2c1582 +size 36626 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png index 7a80f64d0b..d4906f3b2a 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76aee99a5482ab0036faa55dfae992f219e41be53096266677aa65dd9cfce719 -size 47491 +oid sha256:58cc7cb5b8bd73fe4e27d50f9655f61b588e85ae8bc6c4475c98b65ca623f80e +size 47519 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png index 7deccb7a51..d50789da96 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c58d212eeb59ed0a17a8a38e886192a519ed6ea3d868d5894175a3ecb004ca72 -size 32851 +oid sha256:23eb7945c08addad25570f5429d8822d21a27a96f9e9dc36d319eae6e5286d69 +size 32875 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png index 7a80f64d0b..d4906f3b2a 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76aee99a5482ab0036faa55dfae992f219e41be53096266677aa65dd9cfce719 -size 47491 +oid sha256:58cc7cb5b8bd73fe4e27d50f9655f61b588e85ae8bc6c4475c98b65ca623f80e +size 47519 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png index b3e323af1f..17d01e6734 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7eeac5aedd7c6de167cb96908a7b62f8dd066faca3ce33b6132df8c48dd1a97 -size 26021 +oid sha256:e485917141e850090ed9429510e83d31c532c14afce03d88bff5582f67d48c53 +size 26002 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_5_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_5_de.png index 3fa995c42c..7a4db3321a 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_5_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06e895ab0f6e19dfca98efdc6f2c32f8bba1b7c71f57b44eae9e5970528172cb -size 17009 +oid sha256:89fdefeb662bdc04365a8a641764adc7e01c381b6b39de28f7a4b33cb4ba81c2 +size 16987 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_6_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_6_de.png index d97f248616..da900ef8ba 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_6_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbb085f18507ad5448a6614bf2823879e7e6497a52eb9feb4265a3e717030b8f -size 27420 +oid sha256:6739f58e3cd8565be730d1e7a4c7afc470b1ae9dccd31f882cd9700c63623e79 +size 27404 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png index b85e5272e8..515a75d8e5 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0d4b1c29b4130c1301634cda4ac0c9bcf6ec8f7ca4703b3265bd51a93e58a47 -size 41402 +oid sha256:2b90aa079163cc02c1718083e06370e35aacd83af23d62b24ded7953ab1ac67b +size 41432 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png index 787d064a81..f6ec6c02f6 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01fd6bc9a856e78ed09690d895527ade133e6efaabe98122be281644904c81ca -size 42096 +oid sha256:41df9e71c5d0a8de4d6965e1b4dc353606c17b1c9d6ade7fec21cc2dc2cdab8f +size 42125 diff --git a/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png b/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png index c2375b4770..b058594a53 100644 --- a/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png +++ b/screenshots/de/features.logout.impl_LogoutView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf89f910c2d56965e0705b15f502e14073e569a0931e7ea5a2398a663b21ad57 -size 39801 +oid sha256:12a4f5d877a8a53b1e8e58b52c842aebca4c605e2c712d3b25bcff2dd398ac7d +size 39849 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_10_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_10_de.png index 8881e29e2b..a47381b147 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_10_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16d6e109bee5e1e9aa989191d95ace9d9142ead6f529e7bdb02ad8d180bd6435 -size 35399 +oid sha256:27561f13f31accde09568df3918aa603e3b030b542534216f85729ba3e85a713 +size 35401 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_11_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_11_de.png index 4632f2d972..c0bd9a510e 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_11_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37b929271600ddab0836c758faeabf3a810fab4fc93b6fee1821cfd627aaf145 -size 55370 +oid sha256:d90a66dfe145cfa4d2ca46e0d82bb535b3c96381bffd9c5d3a56f04822718fab +size 55353 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png index bb7b2152e4..314e801bde 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c0cf0fe1a0dbeb9808fac60cae7a9303254f8004bd8809242a372a468a0a749 -size 55912 +oid sha256:73111984ac544ed3a33d63f4ec40935593d6f39b3b4c9df4221e1378454f87c6 +size 55872 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_2_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_2_de.png index d53e510d4f..f371592e9b 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_2_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0231fe2d6f4d97ff35dea16c2cefbd19bde7e1a9d7814cb1bac5d43cb647ded6 -size 47281 +oid sha256:d12adb58ed0eb49922c0f6ad018efeadd58e2d288803e970b79422ae5aa9819e +size 47266 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_3_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_3_de.png index 698df60f9a..438a6a393b 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_3_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b29b1f2e1f8b339e608af09b9f49a6cb664c9a37130c312c75ca9ab29041665 -size 51544 +oid sha256:609ab3a3a4eaaf1d0b514e063f7182021b9a755452380ce5a3276a677048face +size 51534 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_4_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_4_de.png index 4d396b0f86..2917763d00 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_4_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f11362ebac1674b839f8adb9d749d9486b1bbd59c71a2ddae6c333cb0cc0a84 -size 49963 +oid sha256:d0232738667fda5ef6cf8cf6a29a3f975ca7e7d828c1fe0f4b8eaa3fdbeea6b6 +size 49943 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_5_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_5_de.png index 7759741a6f..0117d650b7 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_5_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18862f4d1303abde8f155f38d9057db7b9d990b288e7587dc58f94636f5927e0 -size 45504 +oid sha256:5c159a119a0b147139e08a0196f08b1e27386204bb6edb34fd41a5f5a9fbfc64 +size 45520 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_6_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_6_de.png index 4b978064ec..572dab2bec 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_6_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1882aaff8f678953c313b70ecc9d52d7b0e46ef29162b3cc8a24ced0704a7069 -size 50221 +oid sha256:241d8c77cf4c3f1176361a8b390dcad41998f0ae66ab298fa8fdd8c4c4a55edb +size 50206 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_7_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_7_de.png index 667c230b2a..52aed73f0c 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_7_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17c547e8a275eefac0de72ca58f6ec3a81e80c8878900a63723c5ccc738270a6 -size 46267 +oid sha256:181294efa5385141906d780d2b2620a47cdb798609c68092e9798c6ceb70e6be +size 46280 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_8_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_8_de.png index 68a9eeb68f..764efc0d93 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_8_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2299b225ffd05ed2e69e5f5c46c0623a0e54014cd1419ef1ce371b87b803e347 -size 49293 +oid sha256:a4f8b829c9cdf8aab81af22ce197e4540403f37505197857eed432f18a12250c +size 49277 diff --git a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_9_de.png b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_9_de.png index bb55ab2e0b..33b5a4b538 100644 --- a/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_9_de.png +++ b/screenshots/de/features.messages.impl.actionlist_ActionListViewContent_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed45f00f99eecca857ff85f235362b92a23a7aefcab2a3de5f9ee87bd4dfbc0c -size 38619 +oid sha256:5e3caf4a808432fce325e11964c55ec220a1fa220253e822c0f55ef375be06b4 +size 38573 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png index 6db978f3e3..0e811c2b60 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34c898bbf9bb08717b446664f39a1afdda1aaba0527a92e75555db89e1e7032c -size 401940 +oid sha256:013275dda1ccbcfea82e99623bc7b6558504711178e44a3b8c0dca7ff525f59e +size 401898 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png index ff47dd3148..7e355c5e65 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fa13a9ae160f9b22eb2a9d5117090759798b93cb8fd5a005c7acc2319a76e2b -size 400282 +oid sha256:50b9506be5b2110a67fb499be4d3e06d3745dc9eeb164e90d8c7c9aced9e971d +size 400248 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png index 89b6beb4b1..fd4159921d 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa105ee550380e5ab6f78cb32211d25009717698c98b8de3dec21bc5beeea6f9 -size 63108 +oid sha256:a962547b7d7d4c8bde5e895328ee5b86ecc60828667e4c880443d9d0687f70f4 +size 63069 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png index 6db978f3e3..0e811c2b60 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34c898bbf9bb08717b446664f39a1afdda1aaba0527a92e75555db89e1e7032c -size 401940 +oid sha256:013275dda1ccbcfea82e99623bc7b6558504711178e44a3b8c0dca7ff525f59e +size 401898 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png index 4561823c1e..ba27dd1aa3 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80b76fc36c84e48de46877503614cd6a6c289ee4defe1d57f3a4381a20560a6a -size 62914 +oid sha256:ab35fb3afeafba22816aa3f97f29b7e644994aa3d6e2b1e65fbf6f7e00cc8ea2 +size 62877 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png index f2979cc741..6bebc241b9 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c06481e9cc1787ac90268137a145790eab9929690e162ef22e7e0b1d4796d368 -size 68291 +oid sha256:c7bc279cec0778e772ec7eeaf679e2c1a7d781fb229fe4e7992f20a56cffe37b +size 68251 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_6_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_6_de.png index 6d0ad528db..9b9c0d482b 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_6_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a1c8211e71e899ee932c6016e1d44eceb340a55727b72f5055a7a57ade3e6e5 -size 72017 +oid sha256:40ec83fef8cf41389125f11d8a42c46b76b45225016e77ee2f9a49dcbcd4a006 +size 71980 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png index 73fff5485d..f0c2fff715 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e696c95ee71094650c0008ea618d4688796e8c093c4878ba4735b70487f4e36d -size 409171 +oid sha256:56182cde7b4d120ad6ee91943a38de5efff74d9a4c8fb457d47ad153906aa2ef +size 409133 diff --git a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_8_de.png b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_8_de.png index 0366e56484..4061478525 100644 --- a/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_8_de.png +++ b/screenshots/de/features.messages.impl.attachments.preview_AttachmentsView_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c356dd8df9ef8b414c68458828b20a709d55c3ffcd9010482c07e5e0ad501461 -size 89714 +oid sha256:c5e0b2b6866184d18ed0928af4450cadfa860e60b60713dac4399c9b0dedc16c +size 89678 diff --git a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_de.png b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_de.png index dca73ab6a1..12dbce8d1b 100644 --- a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_de.png +++ b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cddbda7a38afd3ba433487c88955402a6c69cff0ce04cb1be397ded7b0eb712e -size 56147 +oid sha256:ab181e050382cd4dae2dea1c7ba8e93bf1d6ac6886de4cbbfc688f6f9e20ddf9 +size 56193 diff --git a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_de.png b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_de.png index d533e50925..bdae0831d1 100644 --- a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_de.png +++ b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3757f005f6a53a56d76d73fd0f93050c8d8e7832ae1d79877a1ebfaa4c26263b -size 66511 +oid sha256:8486cc5209df52dc0f5007f3d89dfbbe4e3d345a8aaf5be1585ef70d004afcc0 +size 66524 diff --git a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_de.png b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_de.png index 9c480b595c..d3700f9aee 100644 --- a/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_de.png +++ b/screenshots/de/features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28e84336963ef72fea96d5ddcb63534016af8ed918362b102323670c3c008166 -size 68121 +oid sha256:5b21056029f2b5d68a7dbfb4a027f4ee0a5f7f24b68ec12f13ae89769e25e1af +size 68091 diff --git a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png index 62b61c2581..b216023c2f 100644 --- a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba1b73e19da856bde24114be1d5429b4cd3cf32367dc168c93105221e550b580 -size 64379 +oid sha256:dcc4a38424e400b23cdf3718eeb1997764587973faafa973fdbcf347a3e9161c +size 64389 diff --git a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png index 2f53d77bbf..03a2e0b878 100644 --- a/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e667e7a1db26d4f158930aedff0cf8c3215aeab6627ee6decc9785d5812f32af -size 67868 +oid sha256:9266f42168bb0bf8972b12a5e84e790992b4a8ff66f94e0a19d2b8cca4ef5b73 +size 67873 diff --git a/screenshots/de/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_de.png b/screenshots/de/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_de.png index fb59d26ce5..0f061d5ac6 100644 --- a/screenshots/de/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_de.png +++ b/screenshots/de/features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:734c8911e1c50f039c90ada55915ca651c1ec1b54ad221f1fefcacf9f5dee9bb -size 26423 +oid sha256:c634bc40fa4169c85e426078d2ad104f939ec6825257a41a785c35025a57d654 +size 26396 diff --git a/screenshots/de/features.messages.impl.messagecomposer_MessageComposerView_Day_0_de.png b/screenshots/de/features.messages.impl.messagecomposer_MessageComposerView_Day_0_de.png index b35ec70009..39770412c3 100644 --- a/screenshots/de/features.messages.impl.messagecomposer_MessageComposerView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.messagecomposer_MessageComposerView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c2fe9f97097034e54463d868244747f6970fbb739715330f147341dcaecb6a9 +oid sha256:7eacaee5806d3c4813aa44d5812a1b8e69ef6f4a0a1618fbe0a7e06d22de7829 size 18215 diff --git a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_de.png b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_de.png index 358c0dff18..82445cbee1 100644 --- a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd115b1d8b6b3d5c302d45110947cee2f9e5b1df9c6c6c7f24f750e1850e04af -size 24976 +oid sha256:206e41045fa6bd767590f4639119b390c775915dcbbed8e59e4f3e36858519ae +size 24950 diff --git a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_de.png b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_de.png index 6b3c204ffe..eb287b98f6 100644 --- a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25cd5cb052d0a1c5ce508f03cb9617972850fdf07750c4b28c5409bbf56bb721 -size 10017 +oid sha256:d6d9e9b3820c234abdbcc727eafdbf0104470a1067a0861c1ab72470499c613b +size 10035 diff --git a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_de.png b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_de.png index 85c1ed7adc..0132a7017d 100644 --- a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4cceda9f53d1b6a8885bed10ec80b19474e5a587a4e1886553a8ae478ed919b -size 35785 +oid sha256:8a6dfb3b0201d05ea5df163032f06a6480149d102543553df1fbcecca41a2a5c +size 35811 diff --git a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_de.png b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_de.png index 8163d35770..414ab3fe1f 100644 --- a/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_de.png +++ b/screenshots/de/features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d375fc47b82ea9d857b3600957e5253ee67821f38a7f73b5a61fc1d94caf9993 -size 43879 +oid sha256:52f47d4d42f6ed7b8dbdde5cd2733828e91caa581c4a5010d06be742c6922edc +size 43884 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png index 2887180911..1460417a1e 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8429bd284e65e21590d48de7aef78a812aa825142e05768513e4111e2a6236f6 -size 48860 +oid sha256:bf7252eb8a333d7e5337c7cb14f993c4e262b4c4bc9a20d7d06ef104cc393725 +size 48867 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png index 24e6f6293c..9a30f0e8bc 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b28017b6359af7fad86ed48ad680fe6db7f0369b21f4ea580769dd0f9e773fa -size 49736 +oid sha256:36cc7438ba6ee69bd2d652580896d1c11f7822008c0c3d88627bc5d24255d217 +size 49750 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png index c1641803c2..6d5d2b5e9f 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bc44ba7e3990ed13c1ba3bb546a32dbd32d87bbee9cb8de9e058619de541ba9 -size 49240 +oid sha256:923e6c9779583fd0ac073cbab61dc2dc386848c549a20bcfabcae7a8cc53bc59 +size 49255 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png index 28018be9d5..fd5e9797c8 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17c1b20d0c2d94225d52bc95fc8ad2ee87f7e614fb69abc3320aa0443e585a33 -size 48925 +oid sha256:8202a96b5d29d1819d39f814f910fde41ea34aa837606f7bff27ee3a6d64c55e +size 48944 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png index 636abf3e9e..dc08c80114 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ff29d01ede74dd4bb73eaaf95969867ff27d25fc9123c81aa7746b4c660694c -size 28941 +oid sha256:835a9fcef474419949eb3fbe275da2dcc45283e405ac69c97378c939c6c60246 +size 28912 diff --git a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png index c1641803c2..6d5d2b5e9f 100644 --- a/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png +++ b/screenshots/de/features.messages.impl.report_ReportMessageView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1bc44ba7e3990ed13c1ba3bb546a32dbd32d87bbee9cb8de9e058619de541ba9 -size 49240 +oid sha256:923e6c9779583fd0ac073cbab61dc2dc386848c549a20bcfabcae7a8cc53bc59 +size 49255 diff --git a/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_de.png index 49936a3ea5..f4b2bf2d83 100644 --- a/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ef8f25ec439986622c3ad9bf9a30ece6d3f7e17f264b7260203ee73da4051e7 -size 22243 +oid sha256:72e593c0daada7d0dbb3bd964c6296e6432e97a5480429da9562782e76b27e57 +size 22225 diff --git a/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_de.png index 4a867f7cd5..49addf5d03 100644 --- a/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fa8acc69378e1d8b354b14c8c4c4ed2d6e85e931d7f03be81b0e2453654a5c5 -size 6534 +oid sha256:9d1a41cc35a495f97b8a4660fa9e905e05e8f1ee41980e67237899cd49506c0b +size 6535 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_de.png index bbb46320a2..c01e42cc66 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08cd52b175bc76ea6e51571e24cc5287c14bd1b29128b83dba6b1e6c132b4944 -size 9112 +oid sha256:9b7d10fbfa59990a848a1c70cc56f55c60ee0ab9d5c3fc5e09ebcbebe50be062 +size 9102 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png index bbea5c1dd8..de792e6011 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7f2af2e1a184964c69e6c01199820f0fbf7d36734b0a76cb6e842c2027fd07a -size 11469 +oid sha256:9a0e71b53b18d68898bc0ba544f5742015bd07ff87eb0d9b5c0ffcff2ec5138a +size 11456 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_de.png index 6926d126b0..b2867a5167 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9da344db7e22f80be0ae181e92804d053fe1c120ce4cae2bbbad4f8700ee6746 -size 13097 +oid sha256:eb38fad2c7d507a34d8adaea9ddb9179dc7310d262337c3400aeac052e670f32 +size 13070 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_de.png index 293ccdf251..afea4f205d 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3838c4a01a76b2eab8004332f31f71409b9667f72aa84535565f39895a72e03 -size 11242 +oid sha256:de76cb249605c4bc7abc62ab5533f3a9ce8b670cf39d63093784ea155c25a3bd +size 11226 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_de.png index 66ba06d334..e7feb40d17 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:346573be091144ec677f2bd3e26a19dbc0cac48b0b76c4509f0cf2644c7f5dcc -size 14611 +oid sha256:6e307e6040dee0aa33943ea053b3c4e9252eacc646b4b1c0bb345467a496e959 +size 14594 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png index 0236701aee..a0ab545682 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cbea44bca597ecdb6598dc082faba460bf339f0070024187e0f376b791421af8 -size 17045 +oid sha256:e0b44a50f701d43676d0c28c1c07cd10d561c965b0018f97e3c0ae774856d1ff +size 17034 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_de.png index c8f4f21234..303c2f7f63 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fc6105449a2b5bca7085ba8ebd4766b0aeca4b812439a3bb6031876ec528a7d -size 26267 +oid sha256:dd25812b220f8e046aa4549c0aa3c4d0ef7593519efdbc786f145158a086a930 +size 26271 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_de.png index 4f74c87565..8fa50c1f04 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ef0cbaf695486ec46a9d451e2620557e6e9c536307e7e65e2298e4b053bb98b -size 11464 +oid sha256:8d2d1b102c198c0e5ec8530d04c639acd45b0512a51a6d4d40408ae7afd248d6 +size 11459 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_de.png index bbb46320a2..c01e42cc66 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08cd52b175bc76ea6e51571e24cc5287c14bd1b29128b83dba6b1e6c132b4944 -size 9112 +oid sha256:9b7d10fbfa59990a848a1c70cc56f55c60ee0ab9d5c3fc5e09ebcbebe50be062 +size 9102 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_de.png index 5c6b0c1317..ad4a84509c 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19823a48ab2deb3d575b076f684d99a4aa22cafc514d8618d728be3066ea4c2a -size 14939 +oid sha256:ba6bc62e27999afd28630ca606bdffdf15d745161d21539c60aefb786b8a49e3 +size 14938 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_de.png index 7e3c3f8843..92397afa8b 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f822ac721fa7c0e129c787852e5d085713d4fdbc93d8475b48c50436fe58410 -size 48798 +oid sha256:f637dcf16dac07842061a0c3705527ddf481dddae403e76fa75094d690edbeae +size 48784 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png index f8ad513f05..7b028c084a 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4276d64e4e150ef04080d1d7c2bbe372ccdd9a50cf67118163f9df630e5dad14 -size 51015 +oid sha256:09297602e9949d21f32aa92ff3a7709d7a6a0e4ca5837b63e1718e9757b681b1 +size 51000 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_de.png index 7b454e20eb..f0c19d5a63 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9de2142007e9b29f4418b2cd2e109ad696d397553dbe8ee720ab9e32fee21f05 -size 52612 +oid sha256:37ec62ff5de2fa0a8199c45eaee20339a203db7f767a587635e3a01dfbd2e007 +size 52601 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_de.png index f152e3821d..30846cb826 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd43b12b36a6a4e3e467ca8455316e347290e1b03b3f760877bd90d18c366ebc -size 52991 +oid sha256:d26bf6994fb0f8b4757fca70dc9793da3b475fe465e1698361ab69fa3c656b8b +size 52981 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_de.png index d215d43fdf..5e74701d3a 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff5f2498323c6f0cb2c068ca23bff4e5af0b3bbde57c3cb8982284e2b8503fa9 -size 7553 +oid sha256:1a25765b56eef74392eea83fa6279950dc875a8158a18e7d1d58595f794d5c4f +size 7548 diff --git a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_de.png index 0ce0c3f3aa..650a6535c6 100644 --- a/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:826b030fbbaa23b05cd36ca3b072204f7b2cce6af0e2ef1398074d53e5bc6a6f -size 9188 +oid sha256:c46b6ccf3331487e0cf73c1055c0831ac56943adae6160defd702b49c12ec822 +size 9177 diff --git a/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_2_de.png b/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_2_de.png index 58d6f9bc01..7a2830deae 100644 --- a/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_2_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0578cfc7d5459104f4c1027cd95f0155e8ddcd93d1436a748167a6bf3db02c64 -size 6746 +oid sha256:c686ca52ae5175226e12262fb8f4adc70e1403d8d755a14a37f7adf1534f5ebc +size 6739 diff --git a/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_3_de.png b/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_3_de.png index c1df5aed64..8a2b554cfe 100644 --- a/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_3_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_CallMenuItem_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:533d2603d3b0c01a3960d575ef5cf551423e78364946f569549734afd8d5ee6a +oid sha256:af71462d647769e7b003ebe9878b6ae75c09d47bdce0c9c5aaf90c960398fb54 size 6275 diff --git a/screenshots/de/features.messages.impl.timeline.components_MessageShieldView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_MessageShieldView_Day_0_de.png index 4eccdf182f..a9a792c0df 100644 --- a/screenshots/de/features.messages.impl.timeline.components_MessageShieldView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_MessageShieldView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a93acf48045d16060cb04a02cd86c1fb474dc55c61d6f56e3fc35abc56d0736e -size 57920 +oid sha256:7880e4b1e3dc8e2dc15b5f07ae82f5902145f35a9045af0f39feca4e1ce8cb00 +size 57904 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_de.png index 92b543d8d7..8fc1fbb334 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891730a3f18f34234fd27619c0a9bb711806ca4387c4280d4e43dfed343c8be9 -size 6788 +oid sha256:960fce914c44861940f72589da3a1a8280e890875b59e6e4b4a81248ee423c07 +size 6771 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_de.png index 14a0ecd842..3528c076eb 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fdad68b06bdb7af5da9f94561b5f5e3bff45bd3d8737d1404665951f7cbfb34 -size 42170 +oid sha256:4bf1663b19905d0da350f70de60a1561a3ccf7870b63ad151822908b69e0ab11 +size 42177 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_de.png index 347dfa0fb6..202f5ac23d 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43b2ba805b9f810bdbb19b42f7a441a4b4e153013acdad2074bfbd4d3c832806 -size 35276 +oid sha256:526b8fe671e86c92f5477a425ddb02813bf8a7c8c2409df3785984b1ce7d8240 +size 35299 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_de.png index 45e3897765..1f2564c932 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c69ef0b37148981bac622f3b5f0c7a6d19d8fc3ab25d0434921829e7ea47f129 -size 11436 +oid sha256:29af35960ea591304710cc3915ca7a97547122f6114f6b0fdb0013b8b936ffda +size 11435 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png index 35a6ba8efe..2d74d8679d 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b75ff102cdeaf138ae9b5574391a348c0542c486a1e36f2bb83ef9e8c47ed30 -size 38097 +oid sha256:2ff3784acff9b538864301c13722291aa0b7fb957c124bc662fbff423d6be577 +size 38075 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_de.png index 674871a9f9..7b24ad1475 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0465a9b4861a1d6e1f720089ebb975e7a01f112bad28ed5ebc2e3738d10ce7fc -size 81087 +oid sha256:2583811fcad1f4960c040be87227714c94a1311c5dedb763e8abad5f0b737ebc +size 81075 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_de.png index 9950e567cd..03e01779ab 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a65dbd7a45d6304f6445060d2aeeb767791211f8a1eaaf86bb6f5079d1001663 -size 364885 +oid sha256:f480c419bfba6a06b7737aab3bce77848c198f7f03f27a2dc92737014ccc9975 +size 364873 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_de.png index fc6e96c29d..d4e74cf520 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18543bb2230f1e603be2a07eae29ab632698b8aa8d328b1363542a89ec5b15ed -size 370534 +oid sha256:eb4a6263b593b1ee107f4e42d18f842e304c3be1292250de795b4fefa647b275 +size 370540 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_de.png index 120e53f129..5498d18abd 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5803e8615839f09e341de9cf167057cfcf26e5fc1e51e14b3da0e5024b741214 -size 364076 +oid sha256:9c82703c9b9446b167fd735d1b27c7c445de0ac434c2287a193d67fe6a4170d4 +size 364073 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_de.png index 0de6e5f19e..72c3db744f 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8b14f1fba1b0faa17b331d442e780456f7d0968e50d46d4c4352ff56d2a7bda -size 68148 +oid sha256:c699247a7d2a5f56855c4c5a050b9e65d394803f61b4a2d86753477b357140d3 +size 68132 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_de.png index c2458bec09..263cd017fc 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d67fdbb9f411c1d4edf572a4cc9b10601081265adb69471fbfbf931cbade68f3 -size 57213 +oid sha256:54226aa0e9cbd3e3a4c43041178cd3dcd7587a3a6d6bd8eb7e2189b626543230 +size 57250 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_de.png index 01dae86c2e..0fe736c756 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57d4ef7e08ddf1121f50c4840c074c7d0c6482697e0ad3a8528dc902e5716f54 -size 8788 +oid sha256:48aac469263e9d83a4b9b05411b247a2cb539cc08ec2e5cc25ebf4b562b76b64 +size 8782 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_de.png index 18c7589459..2ef239d254 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4928b731a26c8119c34cd1d8423b1c91eacd6ae1eb3b6d50f928f3fd42ba31b3 +oid sha256:6f58e1cac3dede747ff20f0c3f52ccdebc780184bb615fc62dd629945b9aa567 size 18222 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_de.png index dd8dbc3529..1ef62bbc5f 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34e1ee1ae196702f6ab9c500b9b110a32fc84445a0bc42c8e8f92bb6e73ff952 -size 26047 +oid sha256:9eb35e5a76d5b83d4389ac7f30dca8cd2ff080b56286f9c80bbdba90da47c162 +size 26053 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_de.png index 9e22bb90f2..efe8e7d212 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69eae7faacbdce88f13844359884f24bc8159c13752ca1ff65aa8aaf2c7f6e70 -size 25643 +oid sha256:18ee45f13ebcc1f288aed2d9b1ac2365e514a427debc5b50ac0afb746724075d +size 25639 diff --git a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_de.png b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_de.png index 9c833955ca..1922ceeca8 100644 --- a/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7cf5c1518dbaf6952348815535c23e5291684857fab10314de23330d13c8c781 +oid sha256:9ffcca12721a8b7e9f4e3b012ab4cde97217d844734be03ae694198fe0e9dd28 size 25661 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_de.png b/screenshots/de/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_de.png index 83172bfcb7..49110f2c7e 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineViewMessageShield_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbd684f8e72f659abedd2a4a6fee985814145089ed4e167cac950119ff1d2aab -size 38009 +oid sha256:bc45b7e1eeb26f0fc4db224924933b51a721fa14e99cbf5b36fd717f6e6dffc8 +size 38008 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_0_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_0_de.png index d1e96eb107..f5251ff844 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_0_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d098e36c94526f6b7d211cd7f7d094912f1148b4ff2f40e82c0d48b0633ac70 -size 51750 +oid sha256:76f20ec1110d42dfe8990342dc8f7b4486f58d91e112af568ee97739638345f8 +size 51772 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_11_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_11_de.png index 649ee1b9a3..d7498d62da 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_11_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab3d9d6fb1f4a97372ab83bb075c0c139a8beab3b41974f4e0435dc620b12ab5 -size 88411 +oid sha256:d40d94c839c967c829af11ce71af08d82726a2d0b3bb60fabbe164d626cae8e7 +size 88428 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_12_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_12_de.png index 154e729716..6c2b7233ba 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_12_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e9be49fb8ecbab397aa9ca1d608d576d2549924bc5be05c2a47d3a76c2e0ba5 -size 53186 +oid sha256:6af3614a4b2a16e11763bcd683a1fcb2417926fc73761103faa105862ee07666 +size 53226 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_13_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_13_de.png index f8ebb81541..38697a9ba0 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_13_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce663c192fdc65b91f61194904da3553eb605630c6f7bf47f9853d3945584a65 -size 65076 +oid sha256:127086e85b6c01eca7289b9b466f0bd733f12d188412536e23a25dc172227c3f +size 65100 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_14_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_14_de.png index 61c758aaa3..820d4c7800 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_14_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14facefce7d332e13fbc67109b3b4fff22881bb64c4a419094f5fd2371b2d9fb -size 49691 +oid sha256:d24935315c3d1c61ef4489699425195ec5cb9962e1dbb76244313ed2d307a081 +size 49729 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_15_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_15_de.png index 03d2f3f77e..e9be31d888 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_15_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a004d13252462f52a0f324cca838dc48d6d773e61c235fde33ac68ff5bac9e52 -size 73672 +oid sha256:995518b5ec90271f4eff1be312ed58401b7ee570d67870bff37c38b84ce1f07a +size 73751 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_16_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_16_de.png index 9f08b2943c..b9b9f2d0c2 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_16_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_16_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b705e80b55329df2d6786c8c619100880ba7de6a36602911857acf55fc2691b -size 59323 +oid sha256:e0bf2572edc0a6fd4c9e6e3ea17dfb05ef0caa5b798fb45bc364f55f699de914 +size 59357 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_17_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_17_de.png index a8017a2f55..02fe0473ed 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_17_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_17_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1548fa74ef4a3cd52599a467fe91d69e921559b24536ec4e258579ab853cb83d -size 65828 +oid sha256:46e493339ea7dd187dd122f5f3bb892f209f79fde19c3a50baa71e1e0113c0ce +size 65873 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_1_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_1_de.png index 04239eb227..94d117cfee 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_1_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21c6b7761c4453d3499d9841df292ba7e6f0703f41677351fe47bf9f3f038c33 -size 73626 +oid sha256:62d955f772483d8ede6d517a764b593baec2caa2ba09795a135b56d785119e9c +size 73629 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_4_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_4_de.png index 4511b92aa6..9e403ffde3 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_4_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:203290c665873113dd97089cc1b4a2eb169fe5f57ec55f968ff5f8f90b10e091 -size 72026 +oid sha256:0e628befc54944ae264dd102247b85d3c1d71748800ecd30ad5a3bde41aa7d5d +size 72027 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_6_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_6_de.png index ba4030eb50..67b63337a8 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_6_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a977db6aa54185e160ad87850205d317191d51aa8dc24839dda3b4f96a2f4c96 -size 75119 +oid sha256:6cc04814e771799188598bd9511f22bceb13bf5bd8484c4378137390bb2eed58 +size 75123 diff --git a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_8_de.png b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_8_de.png index 2139198bc9..65f68e3f9a 100644 --- a/screenshots/de/features.messages.impl.timeline_TimelineView_Day_8_de.png +++ b/screenshots/de/features.messages.impl.timeline_TimelineView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cff768089c036e015d4e162f8e7a55b026a0b26e84d08fed85cb336adb8bd9f -size 55396 +oid sha256:49a4829e1f8768ccf77c60ccd76853eb6bc24a545728fb80c75ed9fd900fd19b +size 55427 diff --git a/screenshots/de/features.messages.impl.topbars_MessagesViewTopBar_Day_0_de.png b/screenshots/de/features.messages.impl.topbars_MessagesViewTopBar_Day_0_de.png index d6e752b972..f012ca51b8 100644 --- a/screenshots/de/features.messages.impl.topbars_MessagesViewTopBar_Day_0_de.png +++ b/screenshots/de/features.messages.impl.topbars_MessagesViewTopBar_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8348ac5ab0a32d80f7566bd734ace5ed549d55e1d003571e0e7fe3a68986f7dd -size 42668 +oid sha256:a582f6175541953aa8ca75a42990c50fd24befd4db63e10aad16d6dfa360ffff +size 41968 diff --git a/screenshots/de/features.messages.impl.topbars_ThreadTopBar_Day_0_de.png b/screenshots/de/features.messages.impl.topbars_ThreadTopBar_Day_0_de.png index 77c579fc16..a35ff56f17 100644 --- a/screenshots/de/features.messages.impl.topbars_ThreadTopBar_Day_0_de.png +++ b/screenshots/de/features.messages.impl.topbars_ThreadTopBar_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f05ab027f2840e839337a59656cbf3b0f526e45ef8abcfb4677585a559e14fd7 -size 33920 +oid sha256:908b3602724e506773cf9b187755ed45a665646d02cff6af5b29a3b218427aa8 +size 33292 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_0_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_0_de.png index 86bb6e2223..f7f3218bea 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_0_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8448b68bda8acd2582a076872af17625276a7d76fd81ae0a55886621f4251a6 -size 58941 +oid sha256:641522311897076eab5d1cf178e979624d86247883d6f5d929b097a5c377f2f5 +size 58956 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png index 92fb37b785..0a4d0ee277 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5969d4a287e7a6f589639569da53d97c8adf7c190d05776f5342084d4344c886 -size 53839 +oid sha256:33b2ef146d0425a07ad8600732abb79815ea72df3421c31f08cd281e788fbffe +size 53880 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png index ad4ccaf62a..3080fc8437 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af28ff85e055081974c119833e5ee32d2ebc1728ff687b341cb686af3aa83d6b -size 58000 +oid sha256:fb3fb609a6d47c760181886d9d26921ea298a9903387e44628607bbf10440aa7 +size 58023 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png index 1641b39414..a6c79b0a59 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5605bbc41c6270eb6cd44c3bf993a6b5e9907b5dccb9bbd3834e4d7eded97198 -size 41782 +oid sha256:48199bc8c630783e0c5cf6d4c9aa26a0955b90f052f745225ae2a11e53b72a6b +size 41824 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png index 2282c34d85..a5d62de535 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73173fa138e715f2cb0f9f7950208b6d3ab5d1a56f054d514ad24ddf4780a77c -size 61245 +oid sha256:311e90c57d42ddd23c9ba4ba225b12e40a1dac3406d66b21c154052262df2439 +size 61292 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png index af8d121795..cc94485260 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3395537215d458bc647028d7b338e91fdf94cb242033afe063e165d9459c05af -size 57444 +oid sha256:1fbad6102fbb30e45eda90fd5eb193df15bbadaaaff1a0caaad0d8b0fd4ee09c +size 57424 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png index 7c1807d837..944617d227 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9803a08e9c42e821941c85f596e909755723680f75534104f297a6f2bcb37a7d -size 55309 +oid sha256:13a9d2ae79c61fc650e089f41ce4397f5845a33ae30beec04439169d144704e5 +size 55332 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png index 9a48de10cb..0a8e3d020c 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ef54103492179e8003b304ec1554873ac031d18b1bb00aeb65767b403b58915 -size 61819 +oid sha256:99cc036c763c411b1946cb4aa9d7b0cd954145bc80cb14707fa4c6a0365df56f +size 61802 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png index 93a2e19fca..2e470d03f6 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ceff1004db2bbe6cbdf2c6d62e4521b89a9c63823b6cd1c709037e3bae306302 -size 49568 +oid sha256:01c037322aec1035ff2b02cbed18f47cc072c2ecac0f374b1c82bf5aefca8580 +size 49560 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png index d0b40bab37..f39a8180b8 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12e6c4fa5f0fffd03a9ef247a41d64e3ac579b6a5b803fcf0fb89fcc71bee9c7 -size 62309 +oid sha256:69b3bae72db55066c0c3b4ae6eb7f75971a9c6a132adc2c2deecd42da3238efe +size 62321 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png index ea6e3ef99b..7a8454000c 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2439aecde9e9ad584cc7e06c6483d66af120d5abbb4915381be6b091f51168ca -size 66206 +oid sha256:586f28a39e9f30c5df5e0ea989366911a31fab6d2a3b3d055a830ace203b229e +size 66261 diff --git a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_de.png index 503edd0f00..b33fa90850 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4579f387dd478cd9f87c889e4594bd39ecee596a31c1a8059df711302932028 -size 22414 +oid sha256:9e6b6f0a7252526861cfa8726bf2edf5a537276e014a4849bc672e77f888925b +size 22424 diff --git a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_de.png index d43cbef044..1bcf4af9e1 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6796633c10fd0c8e78ca0467533ff80adbfc55188583a7d48631eff075a2be40 -size 22166 +oid sha256:c208d059e2c143cb842a115d9b85fe2c9d98fa1b8add67811b190bf11762af83 +size 22161 diff --git a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_de.png index 109bbb1c2d..b7dc9cffda 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ea0b250b3ca6e36366eb59af5fe7dcaedcaef3a9135c0946a6fe93519101576 -size 22239 +oid sha256:4ac811497cc4e60d5f32a26edc0e9c320649163b412cbb7160c93c5a64659d8d +size 22240 diff --git a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_de.png index 1507ee7439..325ae125ba 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:745abd2a67bb00bdf70082c4a8d42375e5d9b53b86558c187269e9bbd07aa237 -size 22294 +oid sha256:1edd7684b4441dc428e42116a24f24cd524365009485db94d4baed3a62a58c92 +size 22290 diff --git a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_de.png index c5861c340d..8fd59fd41c 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c38febc28cbb78ff8091c53c1b6ac5612c33292b01f6915b5cca6fb211ea0971 -size 22159 +oid sha256:26e2cecea8b7f730cc46ae2a80c6bd71f6caab54c4e37161864a12fa67211f54 +size 22169 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_de.png index 12abdc7b74..20b98600f7 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc51ea75419925320bdf8a5bf02b7d20df56731bc50872fae3d1e69511ee4227 -size 52931 +oid sha256:7b652f6d097b68e7fdf440b2bf200ddbd6d7eeeab0db34f4640c575ebaefe321 +size 52907 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_de.png index edaaa84f5d..39be6df81c 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c052f644f55628cd3e0f3b485df7da367741ce978a16867df60f50640ed95ac9 -size 49177 +oid sha256:fc6f30976bc29cb3bf164aed6d440c2e2605197a3de090c2cf94c6f1c1b89526 +size 49158 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreator_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreator_Day_0_de.png index 7b454e20eb..f0c19d5a63 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewCreator_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewCreator_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9de2142007e9b29f4418b2cd2e109ad696d397553dbe8ee720ab9e32fee21f05 -size 52612 +oid sha256:37ec62ff5de2fa0a8199c45eaee20339a203db7f767a587635e3a01dfbd2e007 +size 52601 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_de.png index 7e3c3f8843..92397afa8b 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f822ac721fa7c0e129c787852e5d085713d4fdbc93d8475b48c50436fe58410 -size 48798 +oid sha256:f637dcf16dac07842061a0c3705527ddf481dddae403e76fa75094d690edbeae +size 48784 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewEnded_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewEnded_Day_0_de.png index edaaa84f5d..39be6df81c 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewEnded_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewEnded_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c052f644f55628cd3e0f3b485df7da367741ce978a16867df60f50640ed95ac9 -size 49177 +oid sha256:fc6f30976bc29cb3bf164aed6d440c2e2605197a3de090c2cf94c6f1c1b89526 +size 49158 diff --git a/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png b/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png index 4aebb5687f..3f52e4ed1a 100644 --- a/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png +++ b/screenshots/de/features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64f208428eef599454b3a95986a921958020a9802957229c3ba06ae74ed541e7 -size 46575 +oid sha256:d169a48d14b04cf2023d75b5ead3fdd34c6a535ea4413e7d4214884a420b94b0 +size 46569 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_0_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_0_de.png index 2258235f56..9334461e5f 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_0_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0c95659736547acb752eab919dc78c1a8f29ff048e85118dc52c1ad6eb5ea60 -size 39531 +oid sha256:87dd25a450d2cad91ae7c091d0494ad715fcf875c3e8dc1e20ab905cc5d6b5f6 +size 39535 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_1_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_1_de.png index c826880b23..e60f3a8ada 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_1_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b47e907d51ff73ad68129233cea46102360a3f4ec246a7961583ac0be58d481b -size 42357 +oid sha256:d582bb6555ee254cc885a2054c870daa5f665a7ecef85db6cfa58ecc2103d8bb +size 42352 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png index 2500a47e29..18a8548f28 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f7893ea8ec10b5a7fd2d335f498a637602e0a0e30fbf5a9368a5cad150bbede -size 42554 +oid sha256:8b92e2c00080374422810ef9a858e2c9ee1a5ccbe34ae22d100a9783e1376ef4 +size 42535 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_3_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_3_de.png index 9c94ee1ef1..022add83af 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_3_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4a6fb11ea03e64872c258bd25f304bb955c3ff779e190cc7495de2e8d0cdf71 -size 50031 +oid sha256:af28f956876e0e02929e76dc11e36eb6d92db76aa57b255016e2916b38a3c7d7 +size 50039 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_4_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_4_de.png index 7a0b301a20..219147d7e4 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_4_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5d9dd5feb7bda399c539ac68d9f57d4c4ac4a070245b121e1cda186c2774d41 -size 27942 +oid sha256:d15e1e2edc67cbcd5f52bb6e3f253519bc9829c8f00bacabc31f35ef24b0aa26 +size 27925 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_5_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_5_de.png index e7ad0cf1f1..afc6e2ecdf 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_5_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65f83f62ae167d7794c5d049b4459d4d4ef2572185adbdd1ff929f9561cf1a0f -size 118571 +oid sha256:0c609c8a701f5b8141b3c536a43b86c856f7692ade2033e04d82c1fdece2618f +size 118602 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_6_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_6_de.png index ba48f2d1dd..de4c4abf0a 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_6_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee2e8c1cf237f2c4b0ae6ccd9dcef280c0d4c83b788e140b38a47ac099e69336 -size 43253 +oid sha256:4c1d36cf8727b12859d381c204992cbec4474c361c5fbbb5add0a1e58e570869 +size 43255 diff --git a/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png b/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png index 48641b50c0..72bc914c60 100644 --- a/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png +++ b/screenshots/de/features.poll.impl.create_CreatePollView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fcf6e7dc35e868539efe503ed937d978ed75c5f3f46e4f19ab52dc3bec71303 -size 40813 +oid sha256:bd9b328260734764e74a551326cd19a4661ac9c68b869a0057c70bdb726957b4 +size 40801 diff --git a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_0_de.png b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_0_de.png index b0887fba96..984b53aac9 100644 --- a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_0_de.png +++ b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07769008e1f31eba70a3800f040d43066f14a4e004afcff7093304a24929504d -size 60145 +oid sha256:4d9309c049d6a06e4785cba0f715b3942bd5911caa5de8c6a8f7ed612f669df1 +size 60112 diff --git a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_1_de.png b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_1_de.png index 18922dc7ee..8cbf87260f 100644 --- a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_1_de.png +++ b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e7dafa33354b3b8eb6cc287ef56d4cd5374d3f1060f0c95c32a0ba4c23c91b1 -size 64360 +oid sha256:1850dcd657c25a5af59df9dd4dd6ac69c2d572e3484447eca240c8c3c5486300 +size 64329 diff --git a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_2_de.png b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_2_de.png index 6ac61e0431..f832c07c37 100644 --- a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_2_de.png +++ b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8f085fd176b3136ed1f75c29e03ee7ccffa0f1969b19f1951edf60da425e56c -size 17233 +oid sha256:dbc35b4f12d99a4abca5ad4a67bdb5b88861c5bc3eb77bafe482d5f00ba2a18c +size 17255 diff --git a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_3_de.png b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_3_de.png index fe440a1f2c..1d9f7dedf8 100644 --- a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_3_de.png +++ b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2bf68384e86515099a8d4b1430a6f03ff54829317bdd9ac949c77270e57d953a -size 17451 +oid sha256:9d427e2b574d12eb8c14419e1f19d549c0f16b05ef3d66718e3e5622a52c9e32 +size 17472 diff --git a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_4_de.png b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_4_de.png index dbe6078da1..4c7e7d0c5e 100644 --- a/screenshots/de/features.poll.impl.history_PollHistoryView_Day_4_de.png +++ b/screenshots/de/features.poll.impl.history_PollHistoryView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5b13f60e9b9363d183f92d278a39ce49e59d31248de9e027fab6dd3287ce982 -size 21162 +oid sha256:68e27b3b8b5fa00102a16d83ca0b76b8a7de9024dc3fbf077e80b61940e7e482 +size 21184 diff --git a/screenshots/de/features.preferences.impl.about_AboutView_Day_0_de.png b/screenshots/de/features.preferences.impl.about_AboutView_Day_0_de.png index 57b718d6e0..bd46afe3c6 100644 --- a/screenshots/de/features.preferences.impl.about_AboutView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.about_AboutView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:225e200388d0797309c165c7b92d2a6e63fb45314a9d98948d25076fbbb258ad -size 19145 +oid sha256:b8537888f3449918d5a0b3c88c97e124ce00a9e6594d5e3cf52a99a948c71f11 +size 19170 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png index 18075624e5..1d6665345e 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:640fc6cb730521e831bc408c13fddcb16d7fc5767be0599bd14703e135cba673 -size 51711 +oid sha256:e5df8f7fc3d4dd54755740e8a9d1244aad4a7cfa2bdf773ce0a41758da5e7665 +size 51702 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png index 7e8d30e121..7447ee37b8 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e1147eb6941bac62236bf6b10cdb8f08f6338a89567916517112aa4b0f48939 -size 51577 +oid sha256:a18d428a421b8f590d9d592ff7ef9c130b32eb1ff19f17ac15676d57d81434ef +size 51566 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png index 029582be59..a74458cc17 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d7d650a209b796acfa2dd8f5582de6792609136d9048a7ce6e87ec69a37e199 -size 51553 +oid sha256:a9544a23497b3ce78214303e64d19d116bfa081c62ea6392e04f3e5fd680ff14 +size 51543 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png index 0ead90491a..ebe4c5ff09 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57e30dfd18e347b047328c73d011b70f65285fda4185a9ba8b1f4f0b5f33b81c -size 51582 +oid sha256:e623be6c60d41e94866df4d1509b7310b2538dd755680c65749e5fd22a2f6f93 +size 51572 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png index b1503ea24b..ff72d28de9 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37f4cec6c62f23337bf8071bcd784a090cc3da0ae6d965bc303b489d5c3c857f -size 51430 +oid sha256:ba1c7b36e10aa6664cb765fb6baa0d90028087e8558c55105eb90c90ea021346 +size 51420 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png index bbeb292cf2..f9c8962a43 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9210fdc033816afc90cb87ed3805f7ef87f255b83059a330816efab67b421d20 -size 51705 +oid sha256:9fc09c0fe8dfbd1d7c3e75d7cd95caee9680c163b2ca056797042b5165901d4c +size 51696 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_de.png index bffa4ec55c..b207a4dba5 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:994c0459cf57b9cd03f666389c38e745e1885909d89ec26484b1482d465bfe00 -size 51387 +oid sha256:47862746ac5c3d6ebe320883dea5ec6d10651d09c97f033a3d05c57800a8248b +size 51377 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_de.png index 5fdde723c2..b5480b4a63 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba0513caef897e5f759f6b57d52204adaa4754741ba8677c6201cb45290cf258 -size 50932 +oid sha256:11bfa06af59f1cefdece3b954b38bd182d83df6f681e022393f6a71e4b4e0e07 +size 50924 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_de.png index 6cfb8fa904..09c49d9682 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa4223f158398f7e8318d2dccde9ad5f19c6ddbfbecd56195cb33ca31b611a65 -size 58877 +oid sha256:75307cbf18828c661f4ecc6b4322f7a071e649582e56e5e21de06dc3229c43f4 +size 58868 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png index 7c7382892c..80d384e54a 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9aae1dc71cadb6e66f6e8e0442ba2930d763db9dc0b37ebc08bc1bb55ccc2769 -size 53769 +oid sha256:ffde8e90341028f8ccafba615adf5350d3644319e34b5d7cb7457b50d94d78db +size 53772 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png index 76b609e927..d607c8b0c8 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d80855517f8b67231fe586bdf3b5f093fafd31473e1df26133691ceaccc7cc88 -size 53647 +oid sha256:25c90dcdc998d8b37a29611dbb44dd6a7927f705d67ab995bcae0aa596591a27 +size 53650 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png index 1bd59b2eb5..7e1bce0d47 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37cee079ad400733cd5e79bf7cc2ca8e57bd3c943718e8a0141f40c05876d81f -size 53651 +oid sha256:898ffc0716fa1b6ab6f29b54f023c26a8e86a832cddc829c0cb38a91fd4d9351 +size 53654 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png index 96d13a3559..57d9525398 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93cbe7c58a35811ea6ede3b159eb423b450ffa0394ac7d55c334c3222a65c077 -size 53648 +oid sha256:85b5d940425b7d5e55792d25c45c0c8c682d77a265e953008237880a96bfefd0 +size 53652 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png index 0893c5aeab..cad3e0ee1d 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c34f1a555c5c4eec4aa836cdc2e51ae3e6af073b596b6759040e329a8d6a65b -size 53551 +oid sha256:a31a40de1c45f236b7c1eb1336e7f5f2a26402e8816e8f4c3d98d6a75bdbbaa6 +size 53553 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png index caca68cc7e..ce8c26e569 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61e20fdeccf23e529c4c88d008a259bb287bdc9d45d3fc79b14ec43e9f33b96d -size 53791 +oid sha256:1f60a6a9c9d446131a27d7080f2bf07c8386df6bb5c728aeb12eb29b5a2641ff +size 53793 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_de.png index bc9745c65c..b1f484121e 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cbb9fb883cc6763109ab6b8fa8a47f3d476301a98ae4d323124486612fdc50d -size 53481 +oid sha256:1f4e80a8fdf4369c1e89f02a9f11c666bcfed873889ec180d2184b94eebb646b +size 53483 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_de.png index b8f8f80b22..cdb8ca406d 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8caeef8ba4c9429da99219cd4384e2f73e4616599c7347de7f5d7a4988e9df6f -size 52959 +oid sha256:110b2d47eee7bee05fdb865e7b721c003ba70f17207ae7d537a8749489822148 +size 52961 diff --git a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_de.png b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_de.png index faddbcf144..d3bb9f2e2d 100644 --- a/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_de.png +++ b/screenshots/de/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b33cff6bed2dd649aea96274dd8f837488d966ff5e06ad5484521a096a269bac -size 61633 +oid sha256:d42a9ccf61d5a724cedc73847676f2aa1d2cb45f4618eae7d5f59232467b9e6f +size 61634 diff --git a/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png b/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png index 0190896940..e5d4e0dd53 100644 --- a/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15a7e16b4731665934b7b7243fe08b226a6a8b1ab9210f6376f324c961cacca6 -size 28481 +oid sha256:cc005defab7bd844371e48c1511fd209ca8a3e8902e8e234dbcb1f409eb2deac +size 28492 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_de.png index 13d36736ba..a2afac1d7e 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc34cfac791c18b8bd35d080e3b79a6e172362b79f9ef416ab62bc00a95594dc -size 59214 +oid sha256:faf2b9b719419f5644c315c9b2e0c69bf5789107239b89b557d26c4b2815087d +size 59229 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_de.png index d295317c9c..94e921838f 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5080309ae298b821d0460d64d93bb5aa924f474d3acb6d890d632f0ff91261bd -size 58917 +oid sha256:0cd97628c4eab2c22a1b7f5268839313fb0e162df3a4b65e18861b816d7915d4 +size 58932 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_de.png index 63d0550a0f..26b99d52d0 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d88f009ac745a10ac86b4c0cbf4bfe319709e4c6af9cdfcb74bab3c2a7820c6 -size 7996 +oid sha256:1d15f230f5c476b0929da8f6a96e3c6be2a3c2697f4d2c7dc6a6252ba644be45 +size 8014 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_de.png index 4c195668f4..38457ca8d2 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57af5d4ae6c2c278808a14a9d47f11d8e393d6c378ccfc37ee5dbccb29335668 -size 58752 +oid sha256:5eec8a8effd80ef9b443ae64d90ebf37de0b06496d20c69d08d17c0dbc67181b +size 58732 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_de.png index 51f3c6ac32..dbf0e397ab 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac0473003635a3020b0834b6464f61ad1546ca8e4416415d3cd228bdfa8fdae2 -size 62788 +oid sha256:2d6988ce2970cc634277fe3d6f6fc3769c8259bdfb465e55bbf0477bcd1bd83a +size 62803 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_de.png index bd5eba6e6b..6987693d94 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e83d8f329fc02c4e1d82dcf37e3ddaafccd61449ebb3a70fe54a54a07760645b -size 61926 +oid sha256:507ac618ea0b3a0ce08b22f9ed53736d2c264d9ff732583756276f184c4f3680 +size 61958 diff --git a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_de.png b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_de.png index 13d36736ba..a2afac1d7e 100644 --- a/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_de.png +++ b/screenshots/de/features.preferences.impl.blockedusers_BlockedUsersView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc34cfac791c18b8bd35d080e3b79a6e172362b79f9ef416ab62bc00a95594dc -size 59214 +oid sha256:faf2b9b719419f5644c315c9b2e0c69bf5789107239b89b557d26c4b2815087d +size 59229 diff --git a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_0_de.png b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_0_de.png index 91da509ee5..ab9bd3641a 100644 --- a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bea9c1167e5a43a86c8183d97ff97b8f99aa063799b1b127aa24f44e375eb31f -size 50157 +oid sha256:0f2e04d19b48bc1926a59e583e1332057b7a5f49696c764134e3fa448d04747a +size 50172 diff --git a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_1_de.png b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_1_de.png index 91da509ee5..ab9bd3641a 100644 --- a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bea9c1167e5a43a86c8183d97ff97b8f99aa063799b1b127aa24f44e375eb31f -size 50157 +oid sha256:0f2e04d19b48bc1926a59e583e1332057b7a5f49696c764134e3fa448d04747a +size 50172 diff --git a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_2_de.png b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_2_de.png index 27aeb2fde1..2bf5079ba3 100644 --- a/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_2_de.png +++ b/screenshots/de/features.preferences.impl.developer_DeveloperSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:daac79a6d57fdb849ae8ec8cf8dd404b13d0eb954ec2a5507423305da301c27c -size 47867 +oid sha256:9723ad14c560fd385ce307f08c6ee8dac98b128111164ab0581941d774f89834 +size 47884 diff --git a/screenshots/de/features.preferences.impl.labs_LabsView_Day_0_de.png b/screenshots/de/features.preferences.impl.labs_LabsView_Day_0_de.png index 972332f722..5cfc6d90de 100644 --- a/screenshots/de/features.preferences.impl.labs_LabsView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.labs_LabsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2170c55c31cc2065787a634fde443fea1f4f5acd1d7a7cce14f8255447b2e8bb -size 48317 +oid sha256:84704e1aaeaaa2354248be2bf6864df789bce2f4f2da930d297e8596f6a00f78 +size 48333 diff --git a/screenshots/de/features.preferences.impl.labs_LabsView_Day_1_de.png b/screenshots/de/features.preferences.impl.labs_LabsView_Day_1_de.png index b21729fa34..ce61c23bff 100644 --- a/screenshots/de/features.preferences.impl.labs_LabsView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.labs_LabsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a065f3e8983d7fd2cf363984ca07f69bd2e0841d5302e7b2ac2c60a259332e2 +oid sha256:b0573c15203e5694c4069430333804ba5671c8d67ddd78921c64a573100819bd size 39484 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_de.png index c2e54513f4..fcca3bd638 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50738f74443668d50539e34bfd9581330b393ee1855462b392ae741f7dae9dd1 -size 50563 +oid sha256:1a9be1e5078fd9270518e95405d151a98a90f670d23e4bb01145b21b04a6b905 +size 50587 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_de.png index 881b77d38a..d844d6c295 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5da51224d52c42aff7bea1f0573194170933da0141021ca506c338ad6f68ddee -size 51277 +oid sha256:492ef4165ef99a2410ad1925ef1990a923af733af09c5c1b8d94ccd3d31d3e20 +size 51286 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_de.png index c7b4a62bae..0b19442a96 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:229aaf6b2a92bcd43c97cfa9e77c4c75b294a587306cea1d92c5b65208b5a97b -size 42261 +oid sha256:d59ce26ab11d829565dd9d0ca6c9bfd20296ceb5161e1adfb6064d666b77363f +size 42244 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_de.png index b447e6eb76..f3b0172688 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5130de6e57ac0b4ada7b7a7de549cb08c1a1b48ac64cc05ab39f8d2efb41680 -size 41413 +oid sha256:84868285dd59f25fb9ba202f25a7ea84142f272584e50a740d50c1b1740eb9ea +size 41392 diff --git a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png index 3a9acf603a..150cf37c78 100644 --- a/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png +++ b/screenshots/de/features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17d720145734aed7fea487a031712556382617ef60f97405569979f153e39af1 -size 69922 +oid sha256:0ee9a4755fced9f049b1e37e8f7600420fb07bc8bea623afb522da2bc9b13dae +size 69944 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_0_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_0_de.png index 1a072ef681..a7339b685a 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cbb924d55793c11e6d67fe80f447f354ec216a9b5684504342c51f65c5daa55 -size 68022 +oid sha256:d08d8768775583b81147a2ea91e978e0c1e0246d13b111bf535912d6ef8d24e9 +size 68034 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_10_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_10_de.png index f38589684b..df7a47ab30 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_10_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f717fc891e9c7f5c5ec7a1ae5025242e4fca4c697c1e1d7a092da2c30b1180dc -size 48666 +oid sha256:c753ca39238bd8e151d828497df7cffbc08df420adfcd2031c6ce06935cc2926 +size 48679 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_11_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_11_de.png index 5837583cf1..7e0c79e38f 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_11_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc683b3b8b0b3ffa9da10e505559f98b2faef0dd85523d2bf21faa32956d9483 -size 42832 +oid sha256:17629241fc84abf7b59e66e87ca77b0c35cea81f6448b705ca691689674f6b57 +size 42812 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png index 217e001190..89fabeac02 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34fd1153d2a1113ab211cdaaa4ab7a40a7683d2dc07cc63a5ee833c80e9fed7f -size 72473 +oid sha256:9fc32c25f6fa620ea6386f9724207a1207ed834586caa1faf30d6c9858e95d5c +size 72494 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_13_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_13_de.png index 9c871496e8..3d6bfa81f6 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_13_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f5a50190d6b249f9eb0d8346f69a6492ae10d56fc24bfd5ae78458a753b65a5 -size 19617 +oid sha256:6f674d824e0f3370bdf12a05dfe0b75e74f30412c342e6effe04a2e96ddc45ee +size 19623 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_1_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_1_de.png index 606644fbd2..d0ee47d6a7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40b1622c11a7de63f2585946e6b066ff0dc482d69de3692a257c31374999090d -size 54576 +oid sha256:eb5f2b7feb440a5eab44105522a9524b319ad56cffc40fd42f3e8ac5cf83ba9f +size 54585 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_2_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_2_de.png index 097a820851..a3cbf3b114 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_2_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddad47b9086ce793d7085eda8aa7847b120e7a8fcd58c45f803ea0549f202790 -size 48853 +oid sha256:b92ef498563e8e66ae16ba2df6a3ba6809e1995cdc019dba4b1392a5ecb32356 +size 48835 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_3_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_3_de.png index 589bdcabc5..9540ddcad7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_3_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b8df24928cda90d3e29186034cf088ebbe37a75b99e7ac8132f515e339a6bc2 -size 50019 +oid sha256:81869966ef4cf966a0890c5f54f56208803d9b925a817c7ac1300fd26bde4cd8 +size 50000 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_4_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_4_de.png index 589bdcabc5..9540ddcad7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_4_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b8df24928cda90d3e29186034cf088ebbe37a75b99e7ac8132f515e339a6bc2 -size 50019 +oid sha256:81869966ef4cf966a0890c5f54f56208803d9b925a817c7ac1300fd26bde4cd8 +size 50000 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_5_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_5_de.png index 606644fbd2..d0ee47d6a7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_5_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40b1622c11a7de63f2585946e6b066ff0dc482d69de3692a257c31374999090d -size 54576 +oid sha256:eb5f2b7feb440a5eab44105522a9524b319ad56cffc40fd42f3e8ac5cf83ba9f +size 54585 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png index 0fc4259316..e34753f2b4 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b83ce1b120f5eca77007f7f7d957bdd3c45135f5f3e454ec68c50564924373f3 -size 47163 +oid sha256:674a69f954886ca4623116a44263cde9a2b43de023b0e82bcd0935a8a7e20e5f +size 47140 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png index 663000bae6..e4e29291f4 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:633b2df37189860357e7a98285f57c098e580d61cb82fdf274055e7559865a9b -size 52264 +oid sha256:6e72182a76fd2e4568eb34dfa9bff5896952ff91779c61dd99e0cd408060e36f +size 52238 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_8_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_8_de.png index 606644fbd2..d0ee47d6a7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_8_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40b1622c11a7de63f2585946e6b066ff0dc482d69de3692a257c31374999090d -size 54576 +oid sha256:eb5f2b7feb440a5eab44105522a9524b319ad56cffc40fd42f3e8ac5cf83ba9f +size 54585 diff --git a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_9_de.png b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_9_de.png index 606644fbd2..d0ee47d6a7 100644 --- a/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_9_de.png +++ b/screenshots/de/features.preferences.impl.notifications_NotificationSettingsView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40b1622c11a7de63f2585946e6b066ff0dc482d69de3692a257c31374999090d -size 54576 +oid sha256:eb5f2b7feb440a5eab44105522a9524b319ad56cffc40fd42f3e8ac5cf83ba9f +size 54585 diff --git a/screenshots/de/features.preferences.impl.root_MultiAccountSection_Day_0_de.png b/screenshots/de/features.preferences.impl.root_MultiAccountSection_Day_0_de.png index 2ab16568a9..71d906108f 100644 --- a/screenshots/de/features.preferences.impl.root_MultiAccountSection_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.root_MultiAccountSection_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2505c99e7ce75631696f09774c312363d414856bd2cdeece40a5bbfb04f38184 +oid sha256:934c47b945f3eecd77a6ab6c050c3ca4f0594a78e05d292970e398f03883e82e size 59248 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png index 8b4e8902b2..e08cac7ffe 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b63b8a1a2e1f6f3eb66d567103184177bd5fed9dafceb1e9d0900465a648d009 -size 42080 +oid sha256:9e5805062266fb2efac61ce1814526f39bb79421227e59968fd1bc56ed2ad6d4 +size 42026 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png index 8bd32ee5ad..fdc2a6ff05 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f62deb4536b2b626505244590ce5d6531931f1cfbb87d5d97c2faa0db79d691f -size 41904 +oid sha256:7dbe9c6ad43bf8565729ab434faa610223d77b1d8d9de4757acccf781c47b5f7 +size 41853 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png index e9d0333419..7b3621de72 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d97d1234293a227f015f4eccc4adbe95fd97f2b28b9a0205ec558bd6ae287296 +oid sha256:2314627a1260dd216ce430b72c9bf4651865e73d8f115518b99b5f8dfd153b0f size 43272 diff --git a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png index 723e56cafb..0f3320eeb4 100644 --- a/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png +++ b/screenshots/de/features.preferences.impl.root_PreferencesRootViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95662f13be6b716b5d5c5682f4a3cc5ad822a8899c677fdafd818c24b0e0d7d8 -size 43313 +oid sha256:f4222dd22f478350a2f82ca8103cecc367453535e957490ab775d05f32742554 +size 43316 diff --git a/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_de.png b/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_de.png index 8563770fd5..03cd573859 100644 --- a/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_de.png +++ b/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d0db62c839925a48b4487b2b7fa7b597dc8d57aedd81d2f5ea64593f8b66532 -size 22153 +oid sha256:371cdd134e7991f65da9fa526b89b1562db79ec91ee12d9aac96b34e43a883f2 +size 22160 diff --git a/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_de.png b/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_de.png index 6f0ea07dd6..d48a261081 100644 --- a/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_de.png +++ b/screenshots/de/features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6707f3df5000f8ee5150b1c6655a4c6ba36746547306435dffbe0e786ec18e1 -size 70520 +oid sha256:1b67896e65b700af7c989250098de7dabc61ee97db5157c1afebd83640192575 +size 70519 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png index 2820191c87..42aaff02af 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:818aa8617bd3866d4643ded290119eb1324cfe011c5bea327828b02f09756d94 -size 79283 +oid sha256:1e994fade6f21664648ed3c16f2a088d96246fa2d7c4ed2c91179b1f6195163d +size 79284 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png index e300e1fe4d..9d2b03c77e 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a8fc1f3081a7565abf7bb9c8d0d012ecc5981b86f3d60e77febeadb5dd2c46b -size 98560 +oid sha256:b37c64b8417df2c03c283a72b5034e976b4db135603fc9006653ccd29b4ce29e +size 98553 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png index 11b865af46..7248979a3a 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1939faffe9d5e8591462d4c5302c26d969be2560ec4e954913a59d9ec1f9601c +oid sha256:6c89f24511278102b1d3aabdfa9abff159d55b115f4650d0283b95b7d00686e3 size 74937 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png index 2820191c87..42aaff02af 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:818aa8617bd3866d4643ded290119eb1324cfe011c5bea327828b02f09756d94 -size 79283 +oid sha256:1e994fade6f21664648ed3c16f2a088d96246fa2d7c4ed2c91179b1f6195163d +size 79284 diff --git a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png index 66088d0cd9..4b9176f761 100644 --- a/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png +++ b/screenshots/de/features.rageshake.impl.bugreport_BugReportView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bce0a946397aa0223be195fc0090b6bf009ed02a914879840bc445b271a37a32 -size 57646 +oid sha256:60ebb5959f4086841e8f9132800c792b0f09176f65caedeaf91b695501964a9c +size 57639 diff --git a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_0_de.png b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_0_de.png index 2b9365224e..539faa5f0d 100644 --- a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_0_de.png +++ b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17152083f68f5db4b3badd5bc599456ff0f56e2e85baa3b26124b302ce4b52ce -size 33635 +oid sha256:f7794082fc76e428fd7ee608440b491f405e1bb911fbe29bf8ed795e45defdcf +size 33655 diff --git a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_1_de.png b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_1_de.png index 822822882f..7cdb9874e1 100644 --- a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_1_de.png +++ b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa4ea00e96212dae3bd8e87e96c0267624a3c63574dd6c279118916a38391860 -size 32194 +oid sha256:823991757597542fdacdc4d20b098025c2251a26de52dc605847eda4c7583061 +size 32213 diff --git a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_2_de.png b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_2_de.png index 3ceca63e8d..2b1d55caa5 100644 --- a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_2_de.png +++ b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:290d26a59077e059d04914ef3dfc8d5b19685c5fa447b54d2066fd8a901f5853 -size 33255 +oid sha256:9cb345cbc2f888396253602031a0bd38436a61f0d3f6dcf3345a1438a1b8e58a +size 33274 diff --git a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_3_de.png b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_3_de.png index b6378c2b9c..24c9aa5a40 100644 --- a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_3_de.png +++ b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7341fbf53fbf1066bcf75691652782cb549b9ffb715c0b80d8c5bf7dedf33d1 -size 29213 +oid sha256:c563f1bb01d08dab1cb84e11357a05b6a1ef107ae4df426e3a70c94dbbcd77a4 +size 29190 diff --git a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_4_de.png b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_4_de.png index dc2fd86233..b695a15cc2 100644 --- a/screenshots/de/features.reportroom.impl_ReportRoomView_Day_4_de.png +++ b/screenshots/de/features.reportroom.impl_ReportRoomView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43c3083501e9fa128a2eab0896829f1a37ac673111d2ac7cbc3886ee1a02f884 -size 32001 +oid sha256:68d9fc89734c94e8aac18e547fc0c335522b800217fb7ff143732679b7eac8d7 +size 31975 diff --git a/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png index 16e8224c33..31c009ac75 100644 --- a/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png +++ b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:544cbdde4d635c702e64c4279923527a10a5fc5bb199cc074e44d36208dcf1fb -size 33946 +oid sha256:c78aa1de9893644d7b9baca2ce49773db19f94add4ccb9ef372a99e9a9e1bbc5 +size 33927 diff --git a/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_de.png b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_de.png index 05d32f6e21..b18d7c5563 100644 --- a/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_de.png +++ b/screenshots/de/features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46650e2769751b04dae2cc0edf05d628678dbfa73439d207f3cca75379dab8bd -size 27744 +oid sha256:4a21f678e1eb53b46d47bd507c7093c5f6a72f56b4024d4427c27ca0ba2f80ad +size 27725 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_de.png index 6bf7743e5b..760a4adfd0 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db034b5bc00f6e71c37ed2f180d3030e7b0f98f5247eb3f538566b82a43c8687 -size 30026 +oid sha256:1250b03f29403bac32fac8fa6386e7897336f9812e66fc51ca971665b18c1fad +size 30009 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_de.png index df7331e342..592f5e6efd 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82bcb78fd3c9b508862c2494c94476e74ec666eb6ae1c096129e6375bbbbe65d -size 24597 +oid sha256:305ba31f911770af43df762d462c5c006d781f80f5ccdc63d7adcfd704fae13e +size 24578 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_de.png index 65ab5399fc..77c7e2e388 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:218769a104db9edf946f52ab66860e03fb032f5b3dddc1c95d1c0974466d64fa -size 31158 +oid sha256:c4edb86f9fef95dec9238388e0ddb045fa571ab57a8c0980b40d66cce8bf82e2 +size 31144 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_de.png index 3d7f71518e..3fc335c9b9 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2f19bcc39caeaa1f88862149f53b375d78c7e56e1ce908a4d2188a55fed76a4 -size 55617 +oid sha256:8c302044f568ac50a50161ffbd05cbb709d2bf198e87fdc75f81343242871676 +size 55607 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_de.png index 495cab10cf..e5d2c28620 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:062103c4a5ad33a859854da6c5634312abed1a9dc0b756cb23653c47606ba8e8 -size 30058 +oid sha256:ddb4b7a2e5b473e8a4b75a65bf884360ed35edd93d7801c7c121d57878523620 +size 30052 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_de.png index 8fb76b2c20..3f2924b10d 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:192516d8448d0a5b65c8208a0eefcaae922913fe8d2e859cb7e0dbababe4079e -size 30144 +oid sha256:86115b3d58661c9c59d6ebeb815ac58ab215c25fd5655f98525bbc6f74c641f2 +size 30140 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_de.png index 75be860ea6..c66dec9444 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52effd0ee06fd2a7764974dada7fbbc93453eab2e17f58af4b004d7182598514 -size 27638 +oid sha256:12d0c536795bd5922e4af54e9c7bcab1ae3d6c0f61ecb9a5b68898c26c81aa6b +size 27621 diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_de.png index 87677b8e2d..df697466c4 100644 --- a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_de.png +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:445db5ce8ac1d90129d2e53be3074f0c8d4518374355833c0ce3579fa9ff3394 -size 29761 +oid sha256:e12d9f423c460a85a50297e9ddf99a061ee84e04ba36b0765074658807a30390 +size 29743 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png index d47cbc1543..bee5244791 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93b580abe330752636e76451fa670ac637b6d365537a478c9ef9c8994d81550b -size 8886 +oid sha256:f47cfee459a5724d907f03c295907bce04d9fb23e1f1472d87c9e2ac6ecc9368 +size 8897 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png index e202093b7b..50a1c51bfc 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52aaf6c726ae33832da29cac4f301a682f1716fd0c4c5959bcf738eb4f6c5c3f -size 8747 +oid sha256:76c81b27bab88665a6a109f3b876f6892f719e6417eeea16445c2b278d07d8dc +size 8750 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png index d47cbc1543..bee5244791 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93b580abe330752636e76451fa670ac637b6d365537a478c9ef9c8994d81550b -size 8886 +oid sha256:f47cfee459a5724d907f03c295907bce04d9fb23e1f1472d87c9e2ac6ecc9368 +size 8897 diff --git a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png index 949ec34d43..a7da63a081 100644 --- a/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b580adefe5d563c71caaaf17639b84b7e6c8f5eda5c3d154cce9a5176ed7825e -size 24822 +oid sha256:ba11832ef57b2827b42ddd8266edd7e6b9219c7942fbb0090f07e2a7214687e4 +size 24803 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_de.png index 1818e969cd..e616c17ea9 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a1c48e7b690b44d5e2fea3a6a0538899269a663497fd4247196fda09582c426 -size 12289 +oid sha256:66d5bac689bdb05818951e2e6faad9b4e313146bef4cdf99ce500d10b7717cd2 +size 12286 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_de.png index e288ea7c25..9a5c54bfec 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44edbf94083aff6c3e43d58315ed1909fa826f779194b00dcf6174de781e1343 +oid sha256:0bd483cd461e077f2c1a67eb3a2a6e865da7af0659e6786ca3252d189cd3f4f3 size 12528 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png index 1818e969cd..e616c17ea9 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a1c48e7b690b44d5e2fea3a6a0538899269a663497fd4247196fda09582c426 -size 12289 +oid sha256:66d5bac689bdb05818951e2e6faad9b4e313146bef4cdf99ce500d10b7717cd2 +size 12286 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_0_de.png index 2922988155..7bf718a99c 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63a9eab94985fec27378400856858dd2a6899e831919d57f3b0804254e521056 -size 46007 +oid sha256:f18bf9465c5dc63a2682ec5f16560deaeca386a925e4a18b393af19934482cc1 +size 46001 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png index d9707b6ac9..482c1c948f 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ad3c2694bb93a5bcf3e1e2a48bb96e3cc4a60a41e1fcab0adebde63b9595006 -size 47203 +oid sha256:fc00250676d4b227efd4792461f78ea76b4fb7be4200b5fddb7419679a385181 +size 47183 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_2_de.png index e288ea7c25..9a5c54bfec 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44edbf94083aff6c3e43d58315ed1909fa826f779194b00dcf6174de781e1343 +oid sha256:0bd483cd461e077f2c1a67eb3a2a6e865da7af0659e6786ca3252d189cd3f4f3 size 12528 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_3_de.png index 918c13da80..58d5fd88bb 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3ac0f974d8d56b3ecc34ac6fbb0f033975c0ed513cb6e05f610d4a95ebccd8f +oid sha256:7d074ac8751c7f125534134d3bb06cc19c6f5ce17da390ddd633f264f9806ee8 size 13860 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_4_de.png index e288ea7c25..9a5c54bfec 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44edbf94083aff6c3e43d58315ed1909fa826f779194b00dcf6174de781e1343 +oid sha256:0bd483cd461e077f2c1a67eb3a2a6e865da7af0659e6786ca3252d189cd3f4f3 size 12528 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_5_de.png index 6a4ec71b9a..79a25499ad 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2297fbeb63dbbf5281266f90015e047528e3287c923e2207af061458fd12897e -size 7929 +oid sha256:8f3641f966fcf71259afeedc2c4b32d3e2c581af23c9c4220c9b80152501e77f +size 7949 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_7_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_7_de.png index 1e4316618c..0c96b5b1d6 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_7_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a686e2024b1de0408f0d5920ac576b2822677dea98ab85cec11652edf3eb02b -size 24681 +oid sha256:e42ee2ff5db3db70b31a9293d3a187b60e7eaae633d5998dca9c478c4a2e8e7b +size 24673 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_8_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_8_de.png index 8397efd92e..3ba65e7151 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_8_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31de17fb1f44c06ffd9ce5d7e59c91b7da986720f90074802b1b566b55859186 -size 12303 +oid sha256:251848f9afc246fb2ec6f36da893878360e24634efdcb3920aac174768f9ad6e +size 12298 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_9_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_9_de.png index 425107966e..dbc779e7a6 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_9_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:736b973e4177726e15beee8377efc9e61db4e08198aef5d9c41873e653959f51 -size 21663 +oid sha256:7d518add734e55b81cbc35e77d059c2ef1777488f756b5da6cb8504f30c399dd +size 21660 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png index 62440e7612..98c112d387 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0ae03eeb528590d37def020f34e8ab138e16be7118c8742ffb5e5b0401ca91c -size 48185 +oid sha256:b5418e4c3ed3c02b1a78fc57e75b61182f6d230494aef7548f9d8305748b2bec +size 48196 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png index a0031de173..a80c3fba86 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6b27f6cf42ae88bb10a519096a3a6e469d6447a50996eeb61eb02b3bdbbfa26 -size 49895 +oid sha256:2c26e8b5415952aacd078ca4c02a851a65404ce87f1e0b756386d08dd111f527 +size 49908 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png index 874aa52144..5006c87051 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f73fa94cd961c62d08d0abf046560c780fcadbf0ac412693e741fde8d093a3ee -size 40690 +oid sha256:ebda49047af7040febf3bb5cae22521d9043dadd9e74700010e8ab8a45252bd1 +size 40663 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png index 8a3190e8a6..03be47ca26 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb7aae1df2a4cbfbda74c6c8812198140e54f12b7798af9a1a90500616b05595 -size 42653 +oid sha256:122f016a8ff5a1baf92bac5834189aca266ead157c4b5b4de8adf01994550f6d +size 42631 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png index 874aa52144..5006c87051 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f73fa94cd961c62d08d0abf046560c780fcadbf0ac412693e741fde8d093a3ee -size 40690 +oid sha256:ebda49047af7040febf3bb5cae22521d9043dadd9e74700010e8ab8a45252bd1 +size 40663 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png index 8a3190e8a6..03be47ca26 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb7aae1df2a4cbfbda74c6c8812198140e54f12b7798af9a1a90500616b05595 -size 42653 +oid sha256:122f016a8ff5a1baf92bac5834189aca266ead157c4b5b4de8adf01994550f6d +size 42631 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png index 62440e7612..98c112d387 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0ae03eeb528590d37def020f34e8ab138e16be7118c8742ffb5e5b0401ca91c -size 48185 +oid sha256:b5418e4c3ed3c02b1a78fc57e75b61182f6d230494aef7548f9d8305748b2bec +size 48196 diff --git a/screenshots/de/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_de.png index b3fd6da7c2..0276033b12 100644 --- a/screenshots/de/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02ee83247e54bb39de7b3bc5e69e3bec21f4b45e374c7e5002a4612104e34025 -size 26304 +oid sha256:1ea526df6ed53d1e82dced90952e03e87b6ff4abe5e4f1bbc86c7b7d366d092c +size 26316 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_de.png index 25b2d9076e..c62591e3a8 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5df79822c29afc140d67075460ebb3ac32acbb12bd48b422cddf2b7f30f0d5a7 -size 38677 +oid sha256:5426d1525b398df9bc20a8fc8a3717d71cf07890c2ee009b65e0bf1cad049bc2 +size 38705 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_de.png index a1f7290ef4..52258d2696 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d5ad508b5d73947fa07f9d5f56ec49949bd4efb60ff239df245814e26925a60 -size 35579 +oid sha256:efcd62d6a06b3ebe0561d2c28976d16da64fe74a4998ff5c172a0bbb4443ca35 +size 35578 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_de.png index 75478ce4ad..93b903f932 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d73f8dcebed2575d4de00ebf9b44e19e46fabed0fd9b252c5df6f5c4e82753d -size 47314 +oid sha256:f2345d2dd968ec75701a576b4ee649e5c8de7a1926069fc60ceecd8753f2154c +size 47312 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_de.png index d48bbf0afd..d8b09dc2ac 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02d9b9d5219a47dfd74a523f3e3b38e6273df6681686b086fef15187cde101d6 -size 38608 +oid sha256:a333a575dd950a00f1d0a627654241f6015d564bf136b0bb1aa5e3af105a6a35 +size 38622 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_de.png index 2f7500dd52..937275c04f 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be91a4e37639900c7d822b7922ebd3304e0cd6f33d69a8dc8797fbc898389f30 -size 36516 +oid sha256:e7ed2f89c25d3e0846e0e789c01ed77e5bf485ff5b70bf3f133433158a9ed516 +size 36495 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_de.png index 68d5d0381f..9711e8df35 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6b9b30eecec15ac0adf1ba18dc578553770e228c944d928dc87bb308ad66a95 -size 38846 +oid sha256:0174f5d21033a24f97d4a86b42f7434fb81aa828ccbae486cbb538cdab96be3f +size 38823 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png index e80ac211bd..172fcc9d47 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:630a97f988f05420ac8348c9f5a446970ce1c823b7157772b6a1294410a0a555 -size 48100 +oid sha256:ff71d08e406c922f5c4d7341deac4b3522176a8bf7f46e373fc13acf606cadfa +size 48084 diff --git a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_de.png index 391ef68dc9..0b1629e8f5 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:199d550dcc10ad32149be1e99aa8da10b0bf13f072e54a8e809e050f8cff2335 -size 48598 +oid sha256:7f0a0cb48462bb7c6795c9a6d249d091aa5f1c2c0a87f8f3d5fb9dd5c014cd99 +size 48601 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 1a36865c33..7db46bc697 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:d4973fd90ead80ac942ed9c7209ed309485d43b87cbd1ec89e4f0989f2a14e4c -size 50550 +oid sha256:63373e258cd083211db6413466a45fcffca88f2e38a14310915b1193c1fefebb +size 50564 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 c64083082c..e8fc49b273 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:2c95fe5ff025b2690fcf4466ece56f41f0758e84004a41d00fda090c5bec0811 -size 63879 +oid sha256:943737f471cd135ed4e584bbf28159701453a5a85ac6fa2a23fae21f71192869 +size 63918 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 113372b8b1..ad619d7ab8 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:d52e4e8ebb9f92f23445be1374cb1c99a55ca4bc855566f7eca08e31ec419ee4 -size 45862 +oid sha256:985a2a39f129236802e27ad082fbc7a4a72560af716f9ee77d8e5831dbcd429c +size 45818 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 2540918855..700a595ce1 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:638d958fa225877f475feb357c0d839fef8a05b876238522c9750a8b90b23358 -size 43922 +oid sha256:a1859d6cde2bd54d16a28e7d283c53af5309a81ebbd332c6d1529c26628b21ee +size 43882 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 a61d4381bc..10272edd26 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:89d4726d9deb408e2a7fac1a71ad487b154faa9735131bd1fcbd64d0587746bc -size 56525 +oid sha256:187e37143cc2786f44950ef1fee6412cd2f6c61f2b782a3d232f307295362fdd +size 56503 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 113372b8b1..ad619d7ab8 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:d52e4e8ebb9f92f23445be1374cb1c99a55ca4bc855566f7eca08e31ec419ee4 -size 45862 +oid sha256:985a2a39f129236802e27ad082fbc7a4a72560af716f9ee77d8e5831dbcd429c +size 45818 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 23571dc46c..e33f42a925 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:c60eaa6e529c230303960d0fa3ca03eec6c010bef06bb6a46db2d1241472a312 -size 43377 +oid sha256:ecf8f6f4e2d54a0ce347d2726979229775ec3097af764d199fe64e80bad576d5 +size 43332 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 index 3ef980974f..4a83cbd008 100644 --- a/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_de.png +++ b/screenshots/de/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20c92b5c171e00018f7e5ae66e55706d2c264eae4d76db727241a5978d0b8d99 -size 46763 +oid sha256:f246a92e8fad1e99335bfbb706dc744e0e8a4d72a3d15c8201a43c567f835528 +size 46760 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_de.png index 295c6141f3..92a9ecfc08 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b17bdc28601b61df525fd8375dd83d79ef8963dc03a436979fba88564fb12318 -size 26476 +oid sha256:4463c9d76c95a063e481cd12d8a5c8432b06acf4072927cbe1cf659ca22759e3 +size 26490 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_de.png index cf5a3e7dc4..1232360bfd 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41607b403d6a0cf790db112ef3908df6f02ce1a2013647f667af8a539221888d +oid sha256:16187cb579ae21c620fc41fc70b3ae17136ea423d7793263c4b943ca4b3e54cb size 31781 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_de.png index 7d68ce8154..6d9d44a999 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0c1d9181d312dc01cceedd9fb446e7c4e704b20dad2eb00eb933dc0474167cd -size 32512 +oid sha256:59c6624f279aaa202ae5e85488dfa28893c13f02d2e76b0fbe6586b35a55181d +size 32515 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_de.png index bffec9be0b..7451aa805a 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c404ee0951b8f5102e6c4be33818eedde2b74c0dad4e9bcc3d1680a21ddba208 -size 26378 +oid sha256:805d79eefc2a5cb1dd4fbb7294301ad785bb9cfe04c8c80c102c4f8d6f51fa4d +size 26384 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_de.png index 855fe194c6..ab750ae07a 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a840f0965ec9cf1a0bb10e0b6421682388ec9153489b1306ba21e34de67cab9 -size 28445 +oid sha256:c4725f3d6a5c06f692fec640eddfd5f6ecd1cb3fb38c9f137ffbdd7df3cadc27 +size 28437 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png index 4cfdd1a2df..cd516fe53b 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10c9b3b2b60263b77aeac6a0a726200d82c89fb8ef3f9fc1c5d67eaf82748c0d -size 49097 +oid sha256:bce82fc99877bf4baf0f681ebfa1e424a653ee9d5d13d73345a9eb9d8e1a04c8 +size 49084 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png index 7ddf22af02..e88688fa43 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7af5e98b0b15551c1c91fff4e5333dfdda2b0edc2b2c94b69a30ead3957f332 -size 66780 +oid sha256:457d88afe105f2a7c56c42058febd71e17fec78456c18310cc93a71e7f869826 +size 66767 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png index f2a212c869..0542d2e277 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0e0bca9a56eae0d774652862621c1dc33feb1dfae88f633726c0c795a1d2427 -size 66905 +oid sha256:155a9fd496d348f6002829b07ff6b60bd6d9c539e6f4620bf35bfb478c3dd676 +size 66899 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png index 7de7d8ce2d..403eb3fc9c 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57cd6df19cc7b61a1c528e7ed107f8f6006d8a9cf1b82946fd45acb78746644e -size 67046 +oid sha256:a39758e98abe92be4c4113942d77377e6ff2a238c581165e8dd352c4ab6968b0 +size 67035 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png index f36a6399ed..5866e8813f 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:921f770410cbb2d168bf8b1ad7c3297208d7ca7d8d610ab30b4b65ffbdb9897d -size 66728 +oid sha256:c8539eeab839dba3d4ec644e22d9f4e5451bc472a9f6f98534e5fbf61780e98f +size 66719 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png index e3f4fe168a..6a254e1545 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19d8a60cf3c51f4ac26afd9dc8971d747c0ccf7ba49b3e8aedc3f06db54f6d2c -size 48860 +oid sha256:cd52fe9bdae5629cae86e251004bb77cf0a503869839fc78582a8db478fb29fd +size 48853 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png index e3f4fe168a..6a254e1545 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19d8a60cf3c51f4ac26afd9dc8971d747c0ccf7ba49b3e8aedc3f06db54f6d2c -size 48860 +oid sha256:cd52fe9bdae5629cae86e251004bb77cf0a503869839fc78582a8db478fb29fd +size 48853 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png index c8d111b76e..ea72553cc6 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d685380e4b4ec9634ceab25bb989dda305000bbc63d388d308584ce9be41e900 -size 50034 +oid sha256:400c4e4565f0278ec0ce464d78c05faf5bec81e69b27d0d74962c8b12e99b22d +size 50052 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png index da38ec710f..032ce0414b 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1711578b347285b594410d9c5bba9c5631fc930e45ccb78b25820b5f02a7a52f -size 42777 +oid sha256:aad25334fd43f36325106f39977eec19ffcc0695d752ecc226ef4705c2d073ce +size 42798 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png index 21b2757a42..5c00e6287b 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d11b17b52172a2d8b98acb81c0659dc97d09ee75ab232557a8622bbcbde22c0 -size 51007 +oid sha256:3e881dee5efc987b70134fc688bb57755f8aab2dfcdee44a2a32caea09e91cee +size 51011 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png index 1bc76bf222..57b14cd836 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec5fc09759b68d94af3e9cb9b8a049b4b09f9c5d2088014021bf662f45a89d03 -size 69361 +oid sha256:a3d0866703e4c5e2f61ba7045649efdb37f5d18e9eef710c46cad2e8e40c09f2 +size 69362 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png index 9fcdbe91b4..337adc69af 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:016bfc7341d5a7811d02a3343b3d05caaf9c822b3a3d773385a7b4777644bf6f +oid sha256:4878e9f21320f197a51640857222ec3a60bc5ee5e800ae464051488d6df3dcf1 size 69581 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png index 403b3e6875..83dfd0090e 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e16d6e7dac990919c01f3a50dbad23de8122e9fce0f9ecb01cf392d2013dc037 -size 69597 +oid sha256:0f29618d4e46ad28c8f0aa530379189e0c84a28d872f1d9e6cc10be6a6cc493a +size 69600 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png index 566b4a29c2..276fe15c54 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40e3e22e21b260c716f5d03a8630c9acfb8d84ee054fc996e952c71076682afb +oid sha256:04a84908284a8c1d8250938362670cd59e8b44a74ec88ae2c5fa4b745672b6a0 size 69241 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png index 4630cddbc0..efddf6337d 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38cc47045d968a748f6b7abd6b4415b1df9daeae23ae3ab00cf6c9850be4e025 -size 50973 +oid sha256:2678096406dec316cc4e961102ba38b30de6a3b128fa279db1228225f7cf60fa +size 50974 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png index 4630cddbc0..efddf6337d 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38cc47045d968a748f6b7abd6b4415b1df9daeae23ae3ab00cf6c9850be4e025 -size 50973 +oid sha256:2678096406dec316cc4e961102ba38b30de6a3b128fa279db1228225f7cf60fa +size 50974 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png index 63c9d2f2ec..9a7c14f9cd 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9322e1e84b86d8deeb0ff07ce296847c54d620901fa072fbe5321c1197fac16e -size 52370 +oid sha256:6193d8ea073e83fe4e32ace278357f1ddf78bb48e0dfda54eb106421c88369e2 +size 52362 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png index afa28c596b..e8df593416 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc795edca25781362cab6a56ba73dd3ebde43544a82c94711b04add0fcde6760 -size 44368 +oid sha256:30625120454624c48057d57dd2dd17a7e254cdfa2228cbc9776a7dc0be8ec07c +size 44360 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_0_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_0_de.png index aa301e7388..5f49a124bb 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_0_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:157e55e65bc769b489076156cd387185857480b1da354303fab02084b2475085 -size 46422 +oid sha256:a70776483d27d5c6851413cc05953eda817f81f57c7e2231b6c42528f4902abf +size 46405 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_10_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_10_de.png index fccdf986ff..b965446ab3 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_10_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57c333bda4ed242cc088ed897b10af0e46ddcb02a15d2703b99b3ed4c8655f65 -size 45292 +oid sha256:16b68ee8b268178dbd74e3909991297e73f7ffc5916997e906951232b72fdb1b +size 45298 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_11_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_11_de.png index 31229a63c2..67f5e6f837 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_11_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9e86d6b2c035e2051a53443e389fb6f64bdfb9a8735d503e7fc15dd50572802 -size 43704 +oid sha256:e9b899279b2116f3b1c72fcc29c5a53d142efeabc4eed30d2504b9a610a70c52 +size 43721 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_12_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_12_de.png index 91a19d8b15..541990d0bb 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_12_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e1b2535d2ba22a2fbdcfdfd2af2922fb823cf48e5543597ae495157d7c93de2 -size 47448 +oid sha256:43b1e9b011a6304b41957728b3dadac37f3fe3cc020d2e8eb040a0d36c4035fe +size 45613 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_13_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_13_de.png index b01e41e9bf..c52229d01a 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_13_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c21465a9222bd9c1e8ef4cd87dfca89f58a680a1159a41de59c5f235dad600d0 -size 45520 +oid sha256:15aad49bbbfa213517101643f3a8cc1395f7d344ce3643b3a186bd68979a414f +size 45522 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_14_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_14_de.png index c8b623827d..71bab8f819 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_14_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2de1957ccfe09b93100ed61addcb8274d6f20c87a28759d11ab02ba8a1638804 -size 46104 +oid sha256:1d105ccd7161e1a17d9479960a834b416934f0f11f99010c1b3bf5e2755c5392 +size 46093 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_15_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_15_de.png index dd58719400..115d097fd8 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_15_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bbb4123dad65552f7a5ccd998b95c5adc2a31ac7102f3c6254f8eebb8d12db0 -size 46638 +oid sha256:2307924f559a2e8600f2cc2e9cc3460085644a6234e12e53dc2d8940c7bfc597 +size 46626 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_16_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_16_de.png index 666d8d0c47..eab1cb4310 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_16_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_16_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1124f60a8b3018c53e1f4a5ab822e49fb6224859901f49957a61462e00f62a36 -size 45864 +oid sha256:bfc3e3ebc8c77b403b104cdc78585add322610adf3070d08fb2e86e0afc53db5 +size 45871 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_17_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_17_de.png index 624318885c..070da55723 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_17_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_17_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df9db0d4e17dedc02ff65dfced875fd454e8648b44147a059ae77da7fbffac86 -size 45099 +oid sha256:f42293fc8dd0382b435aa19a7d4b2cbe7c66e88d7782d062549e5e251c831b7f +size 45104 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_18_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_18_de.png index 2f6f00a2ab..5e861cc01e 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_18_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_18_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aa3e3af5c19c99f5d4e602344631e3b146a06c76cef26e83e729cc2cc9cb310 -size 42265 +oid sha256:43f87f56cd260703a4770c42cb9fdb4261718e90b30f534771f5b291a187dcbb +size 42234 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_19_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_19_de.png index 1f1fbb8c9c..c33209683f 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_19_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_19_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09f77e0c5a383e988fff92c1ef940a6f74d824af05ef6a5740430899887cdc04 -size 42200 +oid sha256:c977b4094b6e6740aa662b6e34e82f193b972a067e27a287caf60f75a7b82c12 +size 42191 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_1_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_1_de.png index 9e5cf2c548..c80b9b157e 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_1_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cf15623f94fb77ece859777a5d9f874e9e799afe61a181ebf7c231e198d9d6c -size 41991 +oid sha256:b38a8012219d7c5fe55e15187ca9db001c33d7883de2e6689bf80a2d44cb6a6a +size 41968 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_2_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_2_de.png index a1fda78fee..0f8293bf72 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_2_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7871c2de6d77425ba0ea7d773328a2a3272594b35a8602a01054fc2db1c1051 -size 39609 +oid sha256:4c6951c25bd3df794fb978257d017dbec5537af0cb721d64b2234ca3485c2ad8 +size 39606 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_3_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_3_de.png index 5e8dc32fce..8a22517ec7 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_3_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a867633de36bd2967ad0b2049cccfa3edef59f3eb732478be8bbdb03c6198a69 -size 45734 +oid sha256:e0962c76eb96674ad2fbfa3a4950c408dd1478f0b7f20df8423c24be9d4315f1 +size 45774 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_4_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_4_de.png index 64e13fd312..e7f8df1feb 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_4_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01791e192c3cc7429544e4928e696a90b6a32a584dad5fedea8301f37b31ad79 -size 44840 +oid sha256:2eab31818c13f116be79131e067f52e8b08024488d89d471ec0d5224a99adead +size 44850 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_5_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_5_de.png index a9e70a26b2..8b5b874586 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_5_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:031a260a9859d77cf7a69fd2fe6c52f3bd694dc7c25c15fe2315e236ecc4eae5 -size 41891 +oid sha256:93c0de89ece04e338143639036cc349250a2eb874585dc903248bdc00bbdcd9d +size 41876 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_6_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_6_de.png index 77947d259d..88b08d21ec 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_6_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03a08a3999039ff5ac3a696b26e778d3136b21b5f30b5dd0a49b077170d79869 -size 45361 +oid sha256:c9fd895adb29700fe7b44e508048904b56f914a9d59ee8b747aeef1605312058 +size 45348 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_7_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_7_de.png index 3c026d6c15..12899a80b8 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_7_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6967b9dbd4f79556952c527985e4cdab7c569253716a5d62eda24d46b33a703f -size 46516 +oid sha256:5fb30412d08e04187d202b9d31250fbc14ec62064ec6288e8a00b56ca7673d63 +size 46505 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_8_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_8_de.png index 72aadc6460..27b306ff9e 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_8_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51ff86136abb6f6d76ce6f51978aebd4d710fe7f1b753a7782146e28b5656d7a +oid sha256:40043cedd9a088e853536b94f9e051a67fdd2216f4f2f8c97ba837b8503288ad size 45573 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_9_de.png b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_9_de.png index 8138af4888..d70c05fa23 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetailsDark_9_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetailsDark_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e338bc62994b247477cc169c0bcba1f8d428b590f2bba1966136f52ee7b7441 -size 44529 +oid sha256:702a543d1d4789700620def47079108a2aae90a8dd4211456f3bc3210ac70a1b +size 44526 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_0_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_0_de.png index 104a5e4e1e..5174170729 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_0_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49a21b1f181bd32b9895763b045952332225e71dada7fc155203bf74b1419aa0 -size 47522 +oid sha256:9d8c94f1af798243115ceb6a29b6417bd70df97b4b9cbced5ef08555e1ea7cb9 +size 47520 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_10_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_10_de.png index e4504b8123..cfefa7b619 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_10_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f588f9d3f51ba3ff764a9d4bb3b942e3ad396f939115f35da0a794a91b61aba -size 46342 +oid sha256:d27908e15aab3fd35f2ec363a9e76626fb49208a4b54120157c7f96f4b64012a +size 46327 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_11_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_11_de.png index 455f0d9723..6e7ada6e4a 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_11_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f3ccc11ecf31afd2caea6af382d0d3b1ae58e90fbc4e506df5a49713fd0f698 -size 44840 +oid sha256:29735b713166068b12fc879b6d9f4a56ef2eee8fa2eb2ad1efc7b653ef32b0ff +size 44812 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_12_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_12_de.png index 9b95c8d176..180fe6fe50 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_12_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4ed50b1b0eaa7dbf2e050f4e1f82f46626a3b3bc986bf633fe3f5337a610c32 -size 48061 +oid sha256:a27da9ad0f281dbca24c2a29a40344169898eead8828e25fedbc79c1c7d3ab71 +size 46673 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_13_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_13_de.png index 792e6f22fd..228a962ed5 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_13_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ffbe45a0a19c19ecc59259107b9f4acc58ed0b994abd0ac0603a7051d2188f4 -size 46596 +oid sha256:49de7c2ab75c132d37921a0a1d2c2906988eacd00e2c4e7dc938adcea7a44f1c +size 46579 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_14_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_14_de.png index bf121f9929..5a671e051c 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_14_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5aa801587fef2a7131cd11e161969e028331be4b4a429a86d25bb3c777757144 -size 47119 +oid sha256:b5f8c8b5d6737d727593fa329a6967678772423a015b84fec12da940f299416c +size 47115 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_15_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_15_de.png index 5f1495fb1f..da5fcd6b7b 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_15_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86b0e4d70d7dc9f5093e301ca1a7e5364a99c2c6f5608aaaf2fced230356faff -size 47703 +oid sha256:c98e276e97214339d1a6b19a2d79ceb79f2d5267faf2c53c2332465a0bccc93c +size 47707 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_16_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_16_de.png index 67cb9400f5..324b1bc1a5 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_16_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_16_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f00897f7d6cf5c6a9d319bb69390cc10d4be20451850846b14521361f46c9267 -size 46942 +oid sha256:e32bd7817e91bd16ce41e3afb76420ecd18729b673ae453f1949147a9d982898 +size 46929 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_17_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_17_de.png index 903e2989b7..143b1e151a 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_17_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_17_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aabc001f2f14832f71dc331bd53f001f67d4f2d248768e79f41708b46d671e4 -size 46431 +oid sha256:7fc6cfb807c92f13c9ea01b72c4066a134a44bd9ffffeedb49fdd91e351f694c +size 46417 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_18_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_18_de.png index 9aefd7740d..1b9f0f20c5 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_18_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_18_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2c2bd15e9a027430346841bfc040f99f4e5545138a09fd01e9af64f19a1172a -size 43316 +oid sha256:0981aedebb47c08cd7251bc596be8ea8946698118b8a23a23b4f36ebf7d538f2 +size 43299 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_19_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_19_de.png index 7b51cdb172..4620074a3e 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_19_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_19_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc24fd0400fefd433cff35b57599259e23bddf4bf24a884dca5194e4ec090eea -size 43196 +oid sha256:734259ef768f27d1f0d29defb9aa0560b126ec1e184f62c448c813a02552624c +size 43187 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_1_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_1_de.png index ebe6a3d972..25b06a9e29 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_1_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1ff08b7776a8f9c772928d88028bb43da2854dbd140a16cae65b211bee05179 -size 43219 +oid sha256:3bc9395124a3cc86c4d6dc85708e952faf8c21d7d77a56dda56874bc3cf83941 +size 43154 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_2_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_2_de.png index c3b7fcf83a..6d52eabf17 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_2_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d102c08371deb5252914ef656b0645a071422af8dd4b425de9b542fa4d6593ec -size 40739 +oid sha256:8406d0c3f7aaa773429c0c5bf68e8b4420ec8e4e2202d941ec33013d1b76c376 +size 40727 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_3_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_3_de.png index 680b42a906..aa1f1b79fa 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_3_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73839237353e443c199c56b67aa4d51b1cdb9b6d08707bf31cc3376546f97cfd -size 46673 +oid sha256:d245e4cb448f87a3261e28e982543a50e0425c20ecea26309f736effc90a670e +size 46677 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_4_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_4_de.png index 55b3e290bd..ee1f81c202 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_4_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d32fb0f4761cded0b823b4e221b8d920cae8cae79e39895b91d1f861ef5f89b5 -size 45887 +oid sha256:57e6188e4e841a9535ff5f38ff5fd1f2043eac3aa605ebc94cbfefbd7373dd31 +size 45850 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_5_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_5_de.png index 074167caed..76fe0591be 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_5_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7e5e5ad50149ea60474d93498cf7a671779d1ccf75f89c091f864fac94a5335 -size 42858 +oid sha256:848d125ca33668838a9f24dcddd93e579f3b19e28e1436b2684da4311c67bdd9 +size 42845 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_6_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_6_de.png index b94d9ca17f..aaf48f7fd4 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_6_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecdfe8dc5fc2fb547ceb0babda9856b2b0300c8794e9f9201f93f58693fa1532 -size 46517 +oid sha256:e353bf4a444ea89a065930c8adfcd9337ceca32cc8f048ffec3b751fce72abef +size 46519 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_7_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_7_de.png index 8ae0e7bf9b..6615d4c787 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_7_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7decfaeb8bd1929d6232a5148b8b7a958eeacc1bf5baf779f6f633c44dfa53e8 +oid sha256:2d45174b0aceaf7594875c3039324d21d7f5fe18eaeef32d2e40826d0c59a102 size 47787 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_8_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_8_de.png index 9096b37553..db3dce5d97 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_8_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a212f79364028820a27448e6fe3849bbcf9a10a66d918eb347e546c65280bfca -size 46705 +oid sha256:6efbbc7358ef22b3b32c0ee7517483d5a83cfd0aa261e2391cb85867e18528d3 +size 46691 diff --git a/screenshots/de/features.roomdetails.impl_RoomDetails_9_de.png b/screenshots/de/features.roomdetails.impl_RoomDetails_9_de.png index 17d4a0a3c0..a3eb15f711 100644 --- a/screenshots/de/features.roomdetails.impl_RoomDetails_9_de.png +++ b/screenshots/de/features.roomdetails.impl_RoomDetails_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58188951ba569cb9a9fafa778bbdf9f83f7a6d201975eb9c37c4f48473e8d331 -size 45567 +oid sha256:2323c44e1e07f3a98fc5ba91c4cc4b5fe34780a83ef94028ca94bbf17bcf6fec +size 45558 diff --git a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_de.png b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_de.png index eccb0ac039..564d2206f3 100644 --- a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_de.png +++ b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad3b20348912fd6f6c3e4a8e68e2ea19a491f61239c59643b0b247cd5284ef9b -size 13545 +oid sha256:b47ff7cc22cb1c7477cec1ba425feb97fa663af79455466a48a729cf13fb9445 +size 13544 diff --git a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_de.png b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_de.png index 84fd62c0f9..0392e16c98 100644 --- a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_de.png +++ b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fb71ee98f44955ac96021846d6e0a9e6f8dc6fd0a1175e7ce974fe3adf95613 -size 28485 +oid sha256:da4a6565f96d0a8a5d96c383745338ff6cf0c91e7b352382e1414ae79735b538 +size 28445 diff --git a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_de.png b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_de.png index a332fab424..9533ef4fec 100644 --- a/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_de.png +++ b/screenshots/de/features.roomdirectory.impl.root_RoomDirectoryView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:362aa58b91f2ca04960fa1342f76ba28e28ddb8721acf92bf63ef0099d49c695 -size 30106 +oid sha256:dc7cab44849946fc957a8705046547355a9508b5a6e324a18b9c4848b29d4601 +size 30071 diff --git a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_de.png b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_de.png index 0b94bf888d..90d52aa97c 100644 --- a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_de.png +++ b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b9f27b5742eb06ee518512a2bfd2e0e01d3e70ca248370e7e9155427c6f1aa8 -size 18466 +oid sha256:22352da5dc1213be58d28663f6696ca0c0588422576e0e018fae7887edbbd25c +size 18458 diff --git a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_de.png b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_de.png index 1c38d575cc..a3fffe85d9 100644 --- a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_de.png +++ b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ca13853e5ada913d20dba5e3eeb6965006d46b6d035498fd082afa4c78f12525 -size 22336 +oid sha256:e23b88a9cbcbb626dc222660560a9e936b4f0060b6978296d42a7913d19d68bd +size 22298 diff --git a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_de.png b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_de.png index 29e3b32504..2a137dda7d 100644 --- a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_de.png +++ b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84faad4490bfbf48481ba870bc34c5b99d72984292b3b33d2c6bd619e2b78621 -size 27786 +oid sha256:4b9761ab02b0421f77a4f9876482817d9be98553ef72291e5d7a4679a09b27c6 +size 27750 diff --git a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_de.png b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_de.png index 5e828156fc..4ffe9e5c53 100644 --- a/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_de.png +++ b/screenshots/de/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1937f15d45ff18da9b3203fe420aa6242114de82a9614e04eb99f5c36bc567a7 -size 28214 +oid sha256:aa3fe7ed313bbfdaee18fc9b653008ab7e9bedbe806647b0e8842ed17fc450e3 +size 28168 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png index 2c946bc23e..cdfb6208ce 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e82a7124397546cb3c2293736b743cf2c5ef943ba010c6d7b73b2d70a368a2ac -size 75425 +oid sha256:e3fef37fdd165e3d8a8bad0d2714e1902fa430e1fb5116fbfd98f0238a583951 +size 75446 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png index 2c946bc23e..cdfb6208ce 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e82a7124397546cb3c2293736b743cf2c5ef943ba010c6d7b73b2d70a368a2ac -size 75425 +oid sha256:e3fef37fdd165e3d8a8bad0d2714e1902fa430e1fb5116fbfd98f0238a583951 +size 75446 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png index 6912ac7984..90c4f96ac7 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e43d692e1cd54898f38019f50c0d36b9575d4c2db534d898999eb9ed167bf26 -size 76051 +oid sha256:f15436b9be3f69f7b9fdddda24587a223d9fa72d8bbc208bff04004ff5b6aaa9 +size 76072 diff --git a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png index ff25ff9a77..c962475c0f 100644 --- a/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.disable_SecureBackupDisableView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3f99c41bdd09088037a6fc0e7436f71867e679e2d4f829156cf774cf5c06ec8 -size 46051 +oid sha256:4c85326d9afc3e9fc8c0924640614185ce7f23e4d499923da65b133ecaa04637 +size 46031 diff --git a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_de.png b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_de.png index f1c7d5fd03..39e20139cc 100644 --- a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82b6921b8e15336319f4ccc2a9f30f4e0f0bb8aac01bea84f2229d12eab87f22 -size 44547 +oid sha256:3c9d7b5a84939642a400c1e18429d3c1f8ae536487fc104caca1f385a4dea305 +size 44577 diff --git a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_de.png b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_de.png index b86d0f8ff7..73c20a9bca 100644 --- a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6041785efd5e5f3551639d23ff6810169855efbc6de52343ff7bbdd5afc50db0 -size 53964 +oid sha256:1fa08f99a5a4e788be849ff982df1a1425dfaa9afbcb4bcbfbfcb95f2ffaf505 +size 53980 diff --git a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_de.png b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_de.png index bec4d30b3f..f07a6e1bf4 100644 --- a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78438eb23e545b1ed8321502562eec75a720f8161ec96b80a45d2cf37e999a57 -size 53878 +oid sha256:31cf015c6ddd7d843a708a747e077e5c4f3c18e7571fa54281da42e7366be9a4 +size 53897 diff --git a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_de.png b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_de.png index c2cfc1532c..0b40e621ef 100644 --- a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05096ace3fae4368464a78816164680ebecf5a65b03eb9bc6fc6eb06a0a43d81 -size 50930 +oid sha256:129bb03abd0a7ed366ad051da536d344466df5f42631ddaedea84d6117dea660 +size 50914 diff --git a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_de.png b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_de.png index 7e90bb8d4c..66b33674a6 100644 --- a/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eddffdae8d6b515a4140ad716e52c965b082f0fb1425aed9846c9d9ca35334eb -size 47357 +oid sha256:04820059ee8f505667f6647c63863777d525a1be0cbf77e5c61a615f721b7aef +size 47390 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png index 21c587b71d..3603bafeb3 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce26976414de9975b52aab806a8ff3de282c9ae7e51999b5071d5e34be0c08bb -size 30651 +oid sha256:26b5ad528a635e90d966ece5564fe8f4e5549a81192aec7fc3f669ed6765388b +size 30667 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png index f246e38806..fb6e1215fc 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba0700dea1c4dc744101290e093b205dc3f24b1dd0de8ac2ee14103d636b0d70 -size 29851 +oid sha256:22c266bd1863d9a30f26e88e93c9a6d3382f79180c370612e6c8b571fd640bd5 +size 29828 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png index f246e38806..fb6e1215fc 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba0700dea1c4dc744101290e093b205dc3f24b1dd0de8ac2ee14103d636b0d70 -size 29851 +oid sha256:22c266bd1863d9a30f26e88e93c9a6d3382f79180c370612e6c8b571fd640bd5 +size 29828 diff --git a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png index 2922220aac..50432f0f26 100644 --- a/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c710500bd2320a6df97c5d78d6fcf337e3ddd21115a2acc81e1de1fa477121e3 -size 44689 +oid sha256:80be84e4c2961dd852bda489e835d8458244d1e13ac3e7e15712133cd120b4a2 +size 44681 diff --git a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png index f97909d2f8..27dab886a1 100644 --- a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7aaffb9298241bf42c8b31806e039f20ef585f8ff51466b39ccf2bd19f7723f2 -size 70384 +oid sha256:2de82320a66c4e314a5f0e949f38f2afddfd55c3d75469392ff08eaf8dd69cc0 +size 70404 diff --git a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png index 45e32ffc99..57989727ce 100644 --- a/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1468fd52b8e3448bd1f8e0f3791c574565adddeda13ea8a13b2332e132522d6 -size 50128 +oid sha256:f8d6f12969d9c00a53122c7f39981d86f924c920e043af3c8eb633f10fb2d0e1 +size 50114 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_0_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_0_de.png index e8832f5e11..00b17b50eb 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d3d2644cf615ad50bc8e38dc58da5598e248827a27f73f47967a05a392b31e5 -size 43560 +oid sha256:c201c990f9d5aea35722ed281a59e26516fd18281ef0c607fd14ffebf48d7e55 +size 43567 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_10_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_10_de.png index e8832f5e11..00b17b50eb 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_10_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d3d2644cf615ad50bc8e38dc58da5598e248827a27f73f47967a05a392b31e5 -size 43560 +oid sha256:c201c990f9d5aea35722ed281a59e26516fd18281ef0c607fd14ffebf48d7e55 +size 43567 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_11_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_11_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_11_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_12_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_12_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_12_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_13_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_13_de.png index b088028261..7ee66ef000 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_13_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16caff51af4ff119b2497d40a3ccf28d6d5c042a905c089cabe956a4c7905ab9 -size 71290 +oid sha256:fb798e91bb9a8194f5789b22c61330d8a5c0928e2810ec403acc7b13794320df +size 71293 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png index 24aa5c3831..9ea17a4acc 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f32adae89e7356af6fa8396774184617a71e3ada252662ee4b993c29dc46f70d -size 67033 +oid sha256:d1d050f330f40bfabd14506b88c297328f819018134340f739a4397cf1b94f77 +size 67036 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_15_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_15_de.png index 8617b520b3..12a9c57dce 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_15_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23b489947d0f9f3ece1aa514d1e74d9a2c355177052b48ea02a7d518955cd5a5 -size 57075 +oid sha256:2719dc35eef9ef31ed4d2a6a40b1efe50b58601725136d263842afd8d3a92a38 +size 57082 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_16_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_16_de.png index a3036d76b3..28809cee2b 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_16_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_16_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47fcb7163ca9930ef299fe028821ae10f4d25baf2e09e8ed49a14a39c47738c0 -size 69177 +oid sha256:cce69137e95273283e21121fb737720010abf466d4b1abc27f7daa3e1772b751 +size 69182 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_17_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_17_de.png index 92c9ac1578..fe6636b662 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_17_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_17_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c60f76b4095bfab8c28ac4889af6b020d4d82eb73e2153d404a1f1229fe9c50c -size 53093 +oid sha256:16428e15c36f2ed0767cc8500fbf9bfc3f07e84c73ebe43e8b64ec474ca0355d +size 53056 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_1_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_1_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_2_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_2_de.png index 3fc9c08e60..acad524964 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54a67ca1f96e212760451beca08da149f5dd13d75a4fb5084088e09efb94f332 -size 44832 +oid sha256:4ed5300a2ac30da2c5d378ac49d3388a345798791dac6361e67895c6139bbc97 +size 44839 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_3_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_3_de.png index cab4f598f3..52ade5b6d9 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee4b0794963906b731f4991b23eeca85b2f19fc90634ab4917cb59d4fa65d8ad -size 45555 +oid sha256:57297a3efae6260c4b7f46004591d24b5a4628201e35f35eb5582e466c570f8d +size 45562 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_4_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_4_de.png index e8832f5e11..00b17b50eb 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d3d2644cf615ad50bc8e38dc58da5598e248827a27f73f47967a05a392b31e5 -size 43560 +oid sha256:c201c990f9d5aea35722ed281a59e26516fd18281ef0c607fd14ffebf48d7e55 +size 43567 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_5_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_5_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_5_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_6_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_6_de.png index f36902ec07..49a7385d22 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_6_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:818f5f1d73b601d026f513387d76e67628142609412c0afa055d530be94db263 -size 42157 +oid sha256:fa413e4bf0664d1e15f1a9378b51900f470282a815f8df44643caeac91e6aad2 +size 42120 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_7_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_7_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_7_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_8_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_8_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_8_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_9_de.png b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_9_de.png index f4b594d1fe..ccb9fe1548 100644 --- a/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_9_de.png +++ b/screenshots/de/features.securebackup.impl.root_SecureBackupRootView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de424d81283d12e82c18a61ad3f3089181fecfaa0767e7bca93306e0b392c1d -size 44472 +oid sha256:f634d1f0e2da9be8e1752dd79231e0e57abb0bfc42a5765caacdcaea02b3d50c +size 44479 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_de.png index 7359ced4e5..12eacfd76a 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:303a052955062e205dfb8eb9184e45623b3fdb2a2c7a5c07a951df5f10d6bfae -size 29837 +oid sha256:6c8e18b81a18e00aac7a00ee212634149246cfae4e85d4183ceee0c82b1d6a45 +size 29844 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_de.png index 8f943194b8..1c35d6eed8 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8afdae33c4e7d344eb018392bdae4d3d42f7373d07230c2368f26b4ac2d6e7d -size 29444 +oid sha256:cdf1f3bdc8e5ba7312271de2aab3bca9888bfd649e9cd9f120fd2147c98cb24f +size 29443 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_de.png index 7359ced4e5..12eacfd76a 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:303a052955062e205dfb8eb9184e45623b3fdb2a2c7a5c07a951df5f10d6bfae -size 29837 +oid sha256:6c8e18b81a18e00aac7a00ee212634149246cfae4e85d4183ceee0c82b1d6a45 +size 29844 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_de.png index 1b3dfeeecd..f5fea2a9ef 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f288fa2dad455d1975650a1a6eccca2f2749540e77b5b89c836d69782db06719 +oid sha256:1c8c707aca707c711b256d0acdfbcb3a30718b7915d4360c3153ad09ea159384 size 25694 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_de.png index 4e7459f850..d5cbaebaeb 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa96943056b0df8b39a6e759fbbdee9a74e191fe72db78dd1ab7cfa8c0bc5f0d -size 23406 +oid sha256:5671c6f3b693c3b62d7809cf4323ad7857fc60cd48f01fcfb820d05a33edbf47 +size 23412 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_de.png index 62e3e51642..77a20ecf91 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19eca70164d75bad98c937f9dd6672fa318d1509d09f761b3be78c509e91edcc -size 22005 +oid sha256:5a65cfccb5a24924986f03117f044b0df5df7038919ca09b5a13c78948ed386f +size 22002 diff --git a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_de.png b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_de.png index 023e49e1ad..0f66553b10 100644 --- a/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_de.png +++ b/screenshots/de/features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c2c99a457047cab44c2c4b56d1e0c9a31950cc7ce5f904665dfaccfa79afc128 -size 21672 +oid sha256:0c92eec8dbddb38348f17074ceb4f3631c9aa2e2f590b508e815da39c1c16371 +size 21679 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png index 22a3dd4e1b..54c3c9e53c 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01ba9ac649bf68d555d5d840428fee0266584b96ce5fe36c0f9e2e1d6d0c4de1 -size 51074 +oid sha256:ee6feecd5eb5ab8e4c84f1a684babc9fae3ca5fd45980170dd19d935c8741c2f +size 51102 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png index 48b168dc44..2739203618 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcd83326c3c7f7b43243e904197e88e21bb8f128bdfbdce722e4b7daf6c9a31c -size 47543 +oid sha256:9539949c15d87063a74b365ba792b8cd0b3a063ff65376fc11781f8e97d99b2c +size 47571 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_de.png index 6796840a99..7d8aab76e5 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbfd2e861308c906dbb5df7949d10be226b6f2a7eecccd6387a1d2902b235c7 -size 63562 +oid sha256:351d3b0d759db267544bcf3d87a4e2e76db4d0b03931601a8396c12b3c6648e4 +size 63576 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_de.png index 6796840a99..7d8aab76e5 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbfd2e861308c906dbb5df7949d10be226b6f2a7eecccd6387a1d2902b235c7 -size 63562 +oid sha256:351d3b0d759db267544bcf3d87a4e2e76db4d0b03931601a8396c12b3c6648e4 +size 63576 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png index d58496d0b3..581db0065d 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edc3adcd73285dbaf217485d9e296a1af1ef592d65baca1fcf6ed75700d17eb3 -size 51568 +oid sha256:93c61f5c06e5805590a09c51c5c1d9fdfd5757061ca68069d83d8b8ba71ea925 +size 51584 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_de.png index 66bc4a6c25..6d6128da51 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3d720a5a7bd70867d8096a06b70be72d612f86ad8cbcdfa5521a2c33cee0235 -size 40595 +oid sha256:c1e9c58cb2ef045ae08825f985f757999086327117feb23e233a530fdd87e9c3 +size 40575 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png index cfd34858d6..c60f6bd523 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c97aeaff0cd23f76604dcb60ae08ab50a48ef8249e83592327b84f8aefab0a52 -size 63490 +oid sha256:a7daa689a1e1ccd76aa353e7d2ae14380c63e2da3a838fcc5689dd55fb47d5e6 +size 63525 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png index 557a86b152..71a520d9f8 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b3faa64a17045745be5e724be01eaad17f3f73d01b9fd6eeafa04a3b55c983c -size 60079 +oid sha256:da3ea533d43fe4103ac7209b374f6bc558ab4e033b2400bc95528429f00654d0 +size 60114 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_de.png index 6796840a99..7d8aab76e5 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbfd2e861308c906dbb5df7949d10be226b6f2a7eecccd6387a1d2902b235c7 -size 63562 +oid sha256:351d3b0d759db267544bcf3d87a4e2e76db4d0b03931601a8396c12b3c6648e4 +size 63576 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_de.png index 6796840a99..7d8aab76e5 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cbfd2e861308c906dbb5df7949d10be226b6f2a7eecccd6387a1d2902b235c7 -size 63562 +oid sha256:351d3b0d759db267544bcf3d87a4e2e76db4d0b03931601a8396c12b3c6648e4 +size 63576 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png index d58496d0b3..581db0065d 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edc3adcd73285dbaf217485d9e296a1af1ef592d65baca1fcf6ed75700d17eb3 -size 51568 +oid sha256:93c61f5c06e5805590a09c51c5c1d9fdfd5757061ca68069d83d8b8ba71ea925 +size 51584 diff --git a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_de.png b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_de.png index 94bb8f0af8..6dc61fc33f 100644 --- a/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_de.png +++ b/screenshots/de/features.securebackup.impl.setup_SecureBackupSetupView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e6498b8afc9307a9276a8b767dd5b7275748c19da68827d034111f2a4690e7e7 -size 42653 +oid sha256:9e5cb38ad86656e98f1c2ca10b3542f6c6994626346c094aad0aeb1f637ae9ce +size 42638 diff --git a/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png b/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png index 86d209de85..698a4fdaf2 100644 --- a/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png +++ b/screenshots/de/features.signedout.impl_SignedOutView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcd03c7d8135700d4253d498fbd6b72a6ddde58aefef8bff60b162e44acfb530 -size 61373 +oid sha256:1cda94993c1238192fd0887052f1e66952a2bbad4faca1a46b7ff14e29e365fb +size 61365 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_0_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_0_de.png index fd00f875fe..95ee3e178f 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_0_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe4e5c4f1defe3b99adcf563eb389c943f93d5417f2344eff2312f2b809991c7 -size 15572 +oid sha256:4948d0fbeea2e410b1a289ab92ecbfa792ae5f0980c860590e53860203bc2a69 +size 15601 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_1_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_1_de.png index a56d30a522..72bb1a9ec8 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_1_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58812339f1ac01175b64421d0af685330c4bd95186eff5213194e573deeaa443 -size 18292 +oid sha256:eb862790afe9b86f7c100e4f24dc970cadd1e5bdd38020e97b7579984216069d +size 18316 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_2_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_2_de.png index 8a3fdd24f4..c3ae616678 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_2_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:565857c30ef349022e9cddfcd892a481858ba83bc3dacf884ae37be964fe327b -size 46496 +oid sha256:220225ed71bf4be469bffdec3e9569a63bb22d43b9ba0e80001c3605c9ad8136 +size 46516 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_3_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_3_de.png index 94f10f54ac..dd0e2b67bc 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_3_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5424035b81a1cf082a6a56450bfc444810ffb7d0af87d0803e99151c9cdb3cb4 -size 46000 +oid sha256:9fa10c7c7117706bdd362ccd8382f94ae7b2707b298ee5fd424f50f2c9102cd1 +size 46027 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_4_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_4_de.png index 7f36068a32..74b7970d8e 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_4_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a39c417a6d8f4d8303d9b2d5c229ffbc55921bb706161816c5f774b1aa5739f -size 36889 +oid sha256:3c39b35a474572085fce25aa0b7e2dbf1ac4b5a50d7cac7f5652eed45156c425 +size 36919 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_5_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_5_de.png index a234c6588b..5938df709f 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_5_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fba6f766f3c7cc257d4e199389f03290e63dd2caa040329648969caabfbb5869 -size 43746 +oid sha256:3f92161016b5a3f6f57b5f896bef4e370fff2acb6ce4e5c5bb466dc1eb3a8bd0 +size 43774 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_6_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_6_de.png index f942304d6f..dc0b528672 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_6_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:def46d1907ba93766cf6b4d465840820221800d2d4e34a14b757697d73b17623 -size 44009 +oid sha256:fc64b1af4a6fbef30bb36caa26a349885a3fdce232dbd7c9f00233e763dd352c +size 43997 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_7_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_7_de.png index bc853d286e..d257ee7942 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_7_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec8a73647a8cadd203006313fb3baa79e27f9e8faaef991d7e37c0faccc67281 -size 42259 +oid sha256:ce48faa7c7698832c8ef1d6e6aa1563981d2f0df9f49b01b8c7b64ae7477a193 +size 42250 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_8_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_8_de.png index 01c57b8085..e7d0e2ba5f 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_8_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e86c1032701041744144e88185238129ed824b2e4cb0c4992d6cceae2322442 -size 20060 +oid sha256:68f100096a3f32591792e7816ce116e1e3bdb3b1eca7df6ab3a5473a29775e67 +size 20091 diff --git a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_9_de.png b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_9_de.png index 99d948fd8b..7fdf34a72d 100644 --- a/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_9_de.png +++ b/screenshots/de/features.space.impl.leave_LeaveSpaceView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79eceaf8ae38ae53f4e2736f64628b36d5f4201d42206cfe48b547334800165f -size 30296 +oid sha256:90f702d73cbcbb3e5edcef7cf685d7fa03b0b72caca50f3e8de11311d901e765 +size 30323 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png index ee8e0d3535..723f2301e4 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:776ffc78757ec0ed2863407e91d6c2071dc40e945ef9448bc405a35abfd1c925 -size 19403 +oid sha256:8411cc5367649cb943a909ccf68b29b1162db22685be6c7538a5827d91efef67 +size 34810 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png index 8ca4805dc7..d0ae2d34ab 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b63f17d6bf0d3b18c0e405a4c14a4a68a8351c192fa788fc5135d4fbe8269d85 -size 20383 +oid sha256:0eb4565b5f260bf450e18a9ed884cbeea55436ec6a0ed93ba4693ada273aaee4 +size 35860 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png index 411c33cc5c..ffe0c01839 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba5eb40aa5ba4e2ebe6e68ad42d1b27080c3680a86a613d538344c2b8dadc6f6 -size 20710 +oid sha256:a541a1df02dac2cd1588f299e8ea6f7181416e398b2797a2edb03354ad496b27 +size 36151 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png index 0cca59b427..f03d842eb9 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95ef629af8452fe2576011db8c753b23d9b45b51d2a33bfa8a17c861474a99d2 -size 20869 +oid sha256:c69934d53cad7e61b21125e44c9579b149b7b3e62b1a01b90e6aa3caa6f00241 +size 67318 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png index 6b09249a34..7976b5f81f 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fa009eca8f6308faeca75f3abfdae4e1a2cb6835e4f21ce08eec3464f8be187 -size 55502 +oid sha256:7ff74639464a028f1b4b64b0be00ad161aee745b1b2e3e87599a5e345d7fde3d +size 67956 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png index 1899ad0987..171e33e0a2 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6c0d140d5bbf6d4478403b72bb379a0aedce3a71e212b38a65ff12053ac6030 -size 54644 +oid sha256:fba66d0c9426ce32059b85c962d4d018a36412e6eaf9d43e61aa0a2680d13573 +size 60298 diff --git a/screenshots/de/features.startchat.impl.components_SearchMultipleUsersResultItem_de.png b/screenshots/de/features.startchat.impl.components_SearchMultipleUsersResultItem_de.png index c1cf8833e4..b982015aa8 100644 --- a/screenshots/de/features.startchat.impl.components_SearchMultipleUsersResultItem_de.png +++ b/screenshots/de/features.startchat.impl.components_SearchMultipleUsersResultItem_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cc5e887a1de69fc216a215680104098f1a689e5db992c3e65e5b66b0891d1cc -size 101103 +oid sha256:9095e96b3bec5fe4a0ae7c7e8d92da5c3b6cf1124d861841bb0beebf1a05c341 +size 101077 diff --git a/screenshots/de/features.startchat.impl.components_SearchSingleUserResultItem_de.png b/screenshots/de/features.startchat.impl.components_SearchSingleUserResultItem_de.png index 6ba2bd1cc4..17b20844ec 100644 --- a/screenshots/de/features.startchat.impl.components_SearchSingleUserResultItem_de.png +++ b/screenshots/de/features.startchat.impl.components_SearchSingleUserResultItem_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:108b4c1abb1f143171e35aebd055da2fd52a95e1df8fc8dab29a797da7288beb -size 51250 +oid sha256:2ce695e52de4d6bfdb0aaed99f8ece00e6029216f5e410a86d714f84e367ed37 +size 51258 diff --git a/screenshots/de/features.startchat.impl.components_UserListView_Day_0_de.png b/screenshots/de/features.startchat.impl.components_UserListView_Day_0_de.png index 4484ebdad3..1f2648a705 100644 --- a/screenshots/de/features.startchat.impl.components_UserListView_Day_0_de.png +++ b/screenshots/de/features.startchat.impl.components_UserListView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9401507c454cdb4babcc0bee4faa09f7199a64c5af349ce15a9df82956e10642 -size 9261 +oid sha256:f097b3df60f86719f7afeff0c47139d1ebf918b181bae9f8e1735368ef9bd503 +size 9248 diff --git a/screenshots/de/features.startchat.impl.components_UserListView_Day_1_de.png b/screenshots/de/features.startchat.impl.components_UserListView_Day_1_de.png index aaa5964462..bf860dc9ed 100644 --- a/screenshots/de/features.startchat.impl.components_UserListView_Day_1_de.png +++ b/screenshots/de/features.startchat.impl.components_UserListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac691a431d544e0e4c33c62b51c86f26efb9088a00a05cb9d3151256e2290eed -size 21823 +oid sha256:6cdf90ae9ef087c52d69297d9c98e81f49a63ff92029a1925dbe3f666106536b +size 21801 diff --git a/screenshots/de/features.startchat.impl.components_UserListView_Day_2_de.png b/screenshots/de/features.startchat.impl.components_UserListView_Day_2_de.png index 6a4ec71b9a..79a25499ad 100644 --- a/screenshots/de/features.startchat.impl.components_UserListView_Day_2_de.png +++ b/screenshots/de/features.startchat.impl.components_UserListView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2297fbeb63dbbf5281266f90015e047528e3287c923e2207af061458fd12897e -size 7929 +oid sha256:8f3641f966fcf71259afeedc2c4b32d3e2c581af23c9c4220c9b80152501e77f +size 7949 diff --git a/screenshots/de/features.startchat.impl.components_UserListView_Day_7_de.png b/screenshots/de/features.startchat.impl.components_UserListView_Day_7_de.png index 8397efd92e..3ba65e7151 100644 --- a/screenshots/de/features.startchat.impl.components_UserListView_Day_7_de.png +++ b/screenshots/de/features.startchat.impl.components_UserListView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31de17fb1f44c06ffd9ce5d7e59c91b7da986720f90074802b1b566b55859186 -size 12303 +oid sha256:251848f9afc246fb2ec6f36da893878360e24634efdcb3920aac174768f9ad6e +size 12298 diff --git a/screenshots/de/features.startchat.impl.components_UserListView_Day_9_de.png b/screenshots/de/features.startchat.impl.components_UserListView_Day_9_de.png index 34ff3e91f3..209c122051 100644 --- a/screenshots/de/features.startchat.impl.components_UserListView_Day_9_de.png +++ b/screenshots/de/features.startchat.impl.components_UserListView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcd3d8e40e5d9f23c941efa17c37d0473df47d7924d2f51c94022a6c08f559a8 -size 37181 +oid sha256:5ffb21cbd09d472fe88da527a064a57862e40ffbc3208247398ab3db45ddcc14 +size 37168 diff --git a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_de.png b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_de.png index ee46fd3751..dbdb084017 100644 --- a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_de.png +++ b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09ab5d26a3b18d9bdd503cdd62d7fd767088e286c5f72479fb422e24e26f4824 -size 18520 +oid sha256:b53363dd62f0a851f8c5eb0d32b6a553313ec988c56e5378d0fe5085dc5f4008 +size 18509 diff --git a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_de.png b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_de.png index 0ac0915508..3f6f4e2d8d 100644 --- a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_de.png +++ b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad688fd9d4fd288022ec67b97fc1a73ccc769f7f8e5ef8622726543cf460ac82 -size 21516 +oid sha256:5ddb795a473f650502735a6831ff1ea849e5d97fb82e0f347abe63bd42acb886 +size 21513 diff --git a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_de.png b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_de.png index e785272441..2ea58a5b0d 100644 --- a/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_de.png +++ b/screenshots/de/features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25aa162ebc1ac9bb3cf21e07414a0d405e7043b1f5acae646e1e57c9a63bd4d9 -size 21787 +oid sha256:da6faed3187b7a33f1955a6c0165838eb290d51e8e8b9acdf148d9c6f9055603 +size 21778 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_0_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_0_de.png index 41c7fc6d86..ac7f3fc01b 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_0_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50fe94aba6e76e638cfa9b5ffb574c46ff1757a0547a5c8ead0b9179c457792b -size 28100 +oid sha256:23f792a9a1f33ec9bf3548485579983c98675e2ffb0400489cafa6aeabbd68bf +size 28076 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_1_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_1_de.png index cfab50e88e..0582665018 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_1_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9c75cdedd4c36873fcd9c7666e17915d2167b3471777201e4e6bf20dc5a0010 -size 21031 +oid sha256:074f07583d066deac988cb26df841a4d6a8ec1713af4eb42c89bee693fe6baa6 +size 21018 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_2_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_2_de.png index 60aa2ae9c2..f9be1b4c79 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_2_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbda304432217316c4cc028d98e6394619c9279a261a004466bd5ddf640f994f -size 31853 +oid sha256:eeba1031812aa4029a3d0fe55b637b2b1187c9b809240280e3ac93348f03b7eb +size 31837 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_3_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_3_de.png index a9d8d8ef9b..e0af3ed6dc 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_3_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b9f41e1cd105f2c7b96ec1b3dc68008912442378075a93126d8b83e9c153dcb -size 55195 +oid sha256:e2fe8f9ac0af9e866f4e79af1c99680495f4a7ef96ebc440b48eb22419562565 +size 55164 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_4_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_4_de.png index 84083f34cf..8c02706075 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_4_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edf88808f904a3cffd4c53e2d374ab3be9af91002b450de40d0e76b3f93d837c -size 45689 +oid sha256:3cd6e4e494cd61e5cccc61786e33565e66108e3d9315dade7e091ee8233047e7 +size 45620 diff --git a/screenshots/de/features.startchat.impl.root_StartChatView_Day_5_de.png b/screenshots/de/features.startchat.impl.root_StartChatView_Day_5_de.png index ae5b3d5707..e7b3e18d43 100644 --- a/screenshots/de/features.startchat.impl.root_StartChatView_Day_5_de.png +++ b/screenshots/de/features.startchat.impl.root_StartChatView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6550e9568bf9360bdb33507122ac42220d4202cc691b01ed5f76ebe20beea12 -size 32104 +oid sha256:f7000b367f113aaf18a08089e01cfc3d46228032a0a9fdab19a9e5c89fa28c24 +size 32084 diff --git a/screenshots/de/features.userprofile.shared_UserProfileHeaderSection_Day_0_de.png b/screenshots/de/features.userprofile.shared_UserProfileHeaderSection_Day_0_de.png index 51436e8bbc..16138ae8f3 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileHeaderSection_Day_0_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileHeaderSection_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17589eb4a584617876c67f4dc7c5009ebf119b0bcbc3c117fa04f8e5764ab71e -size 16043 +oid sha256:d9abcfd14cc3ac9fd3029dabcf0d4251941a02251a1f869ed8fe8fca8e790bae +size 16045 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png index 1b0c3f67bb..0802008049 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b193290d70ffa20cf5d4faac24d056a2d10e416d117ca29fbc007a5b1ad972e -size 25349 +oid sha256:7ef5c9662cd8e2d1593d976d84301385058ab2db89184b921c960304241dd7aa +size 25339 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png index 4f743b5b98..71f6a43819 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fea501e631c2f1b84c1e8c61ad5267544f68e3c060a0fba575de8762fd7c8f8f -size 23281 +oid sha256:3d777d22a954a1661eb5ada2ef477f0efd2bab4753217ea6d279102344737536 +size 23287 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_2_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_2_de.png index 5783ca505d..2a5acc9faa 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_2_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da774c8c49bd4eaf0266a1e14fc612385219d5c261dd8870d1738b0d2d6d6a53 -size 25152 +oid sha256:a4c6f61958bf82c3057e2fb0e83ce42b2425249c40f0af99983b6354be8d4952 +size 25188 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png index eb117a1f8b..26c6df8f58 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fb468eee0edfe56d60c55532068ca3b538dee026dfde4fcf13ec7adef383070 -size 43518 +oid sha256:3a8dce781223c4b40a9c1757d29a368790545f790de0da65f2fa3002d629b9d7 +size 43489 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png index 35577c491e..d9628e0708 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cf73fa2cf91024cd576ccea663672257d5f9336b8ec41867e7bec87c96895cf -size 37141 +oid sha256:68e68757338ec82ecbd630e800e76579c8cec60242a626a113c27e4231a02a76 +size 37117 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_5_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_5_de.png index 6d117cdcbc..cab5fb1981 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_5_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e13a9114fdb169a8e84a2ca016ff89a107b563867b23da61e3b095a4f49b9047 -size 23266 +oid sha256:5c84058d388a98b1efad5633f621d1c18cbaa49a2f6d9dfec87b144be8950986 +size 23268 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png index 0d726b86c0..7980de17eb 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61a1d5027cce6975aacec3e0577b985180203ddeca950a8d9c4149138ece8a38 -size 25159 +oid sha256:f5691acea1598535fdaa00b0ae7fa1f8467597c70e96d4e9fe7c325d538e1f16 +size 25118 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png index 40f3a93772..513dc09244 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3812e73653f9c5f20b6a6ebb7710095567a7024e3a2ed7af25dd313994568df -size 26456 +oid sha256:06b80ec5d10d83620bb3399a89c2f87682e223f46a276eaf57113fc600eb7188 +size 26450 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png index f0650f7dd6..d02c6abd8a 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c93e7f3b1a7e00fe70d42d9325245e04557fbd5be6752bda30ed0d845c8a7583 -size 37238 +oid sha256:7d1e09a242bdb428a1a9719e46f58a41cd3ebed75e1a368c4348093c6951f515 +size 37237 diff --git a/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png b/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png index d726b2afae..97793bc9d0 100644 --- a/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png +++ b/screenshots/de/features.userprofile.shared_UserProfileView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11820e6256d97c57f26f39b904618ee02ccbaf5fb8d1eb8c319ffb1116c8ce67 -size 34232 +oid sha256:d1ec66a16e6e4ce8af15f52831d2eee19122adca60496054738e33f09d3eab0a +size 34248 diff --git a/screenshots/de/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_de.png b/screenshots/de/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_de.png index 9741448fa7..e6a578c2cc 100644 --- a/screenshots/de/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_de.png +++ b/screenshots/de/features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d4b8d2bb20ecf61d7f288b25b542d3441335c765d47d21282a9464a591da12b -size 25133 +oid sha256:8603bccb22211bc691788e6b0a4b192182d0be431378f26981220807481a4b9b +size 25137 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_de.png index f5576fd8a3..f1620e0b31 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcc6e14373fd9da583310dbbc759d0286a3b8ae36ddb0284709e3b937eb82d45 -size 48300 +oid sha256:e9a4da42e5fb1bdd969d83c99f39bdd160fd277124499420b5f39f5e081a9f0c +size 48298 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_de.png index 88ce06753f..1d5e374608 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684222c49ca9fc06a9e63fcd46736b4c68b2f23f16e77228f78349f926514e6c -size 28094 +oid sha256:2afa86e0dc92132e23429bebe2d170977944012e3690d341e96c876e5ee8715a +size 28087 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_de.png index f2f0404aad..73b5c74c39 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8efa1d431472915948e96b97a6a1b77997359c8b7a2a11ca038dc25d36d7cdc4 -size 29436 +oid sha256:dad66c15257d320ba504995128924c88e7f121e0924ba66a5b789cd98819118b +size 29432 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_de.png index 5df6ba2298..95b75812c3 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:788f6e5a02171e885a321df9f523c9c0c87c86a183955936bfa1004027d1893a -size 32069 +oid sha256:aa8c90bc239d9e5b47cb6096efe3e976566fa9f0ee45dc1613db93c307b1e0dd +size 32088 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_de.png index 5df6ba2298..95b75812c3 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:788f6e5a02171e885a321df9f523c9c0c87c86a183955936bfa1004027d1893a -size 32069 +oid sha256:aa8c90bc239d9e5b47cb6096efe3e976566fa9f0ee45dc1613db93c307b1e0dd +size 32088 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_de.png index f5576fd8a3..f1620e0b31 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcc6e14373fd9da583310dbbc759d0286a3b8ae36ddb0284709e3b937eb82d45 -size 48300 +oid sha256:e9a4da42e5fb1bdd969d83c99f39bdd160fd277124499420b5f39f5e081a9f0c +size 48298 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_de.png index f07f83f945..2c2febe8f0 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92f2c1c5cac7875798293f1daff35c4753bc1aec81ec42101288bab269c633e2 -size 43345 +oid sha256:9c2f88235b71a5e8dc496b54ae3d6abf60ffd99372ad952b2588e4eb3d3a4104 +size 43338 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_de.png index 18c2ef6331..54c412001b 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:261f85d80baf9785fc8df2c83ba9978b1ba422ff129d264e8126e649fc7b95a5 -size 42458 +oid sha256:28438f4a4ea6e9e101ecb016a96a6d8acffabe78531d140245aae599f170742d +size 42487 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_de.png index aa41993ba1..ec4adfbf25 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f309d9cdb5c9b5aec9f9736b045895c33a2db5873207c9b4f410b429e3cb4c2d -size 36239 +oid sha256:89d0fb5b05db746127691b5cb40c88276d140a572122bb943e2dc80a1f8b8eb3 +size 36261 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_de.png index 095e794a2c..36939df978 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:066c64055bc1034d2451d9d812b2b48692260062364424d2de5be2eca81d3922 -size 52848 +oid sha256:506ac23b74c38aa367f42dadad28fbbd8d1af9d6c7d460551d304f66136d2847 +size 52879 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_de.png index 98f53283c1..e92ab5411b 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ed6a28099f8902cf9174b3c9cdf4b7d154b623e7fe37b03c96813b708cb290b -size 53922 +oid sha256:7ba72d82fe78861c420b21f5c67132b09b1eef6a4bc29de38282c0c655c9ccd1 +size 53948 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_de.png index a6b85f2af9..eb202b9f3e 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:355c47c2dbed84f808637b0093e7245667ad2dbffeabf84ea7f1244d377beca6 -size 43916 +oid sha256:95807c82c054157fefd82e05648f5c099613c33d816280280f40a92479009cb2 +size 43937 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_de.png index 956be93533..8854711555 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b86b0973f12c87c98f5fa626d8761bf02372fe0820a5decf4947876adf1a2048 -size 45006 +oid sha256:fe27d8667d4a0220b4f1cee7b131793dad65469b79f7dc3929c782c9025b9750 +size 45031 diff --git a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_de.png b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_de.png index be0253d957..a556aaaea3 100644 --- a/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_de.png +++ b/screenshots/de/features.verifysession.impl.incoming_IncomingVerificationView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f97f11e866e1615cb826cdb6feeffa8ff106c5f41d3c9db9a262df5432ea05f -size 36929 +oid sha256:76825dbfb2e6c4aaf8111a16ba3811d0ca84cd970681ee9ae3e602bb98acdc83 +size 36962 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_de.png index 49557625f5..2c61c2c6d8 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea3c6696b24362b472019ca6fcee0012b3fa49eea419b8f8de93f34d8180ebc6 -size 34232 +oid sha256:2bb815af912813460623ccc8d0ca07db315b1521fd2623371daa5f2ff8344fbe +size 34267 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png index badc9d4606..dad036e985 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c3c0a2ec93e0ccabcb1b529dfa6fb117ea572719670dec770a31789d32db131 -size 27229 +oid sha256:a44eb83631c42b8f0ed4a72aa7ccf0720484363b8b9dd45bc8b35908c94f0e0c +size 27220 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_de.png index 7d1347e719..7efb530cfd 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ccf15ad76ec6abb1da4f73efdc98ae0fa74dadb2dc250c48567d5bd5c24154d -size 29551 +oid sha256:c035769839244b97f2bab01baa770c8b3cfa9f30eccf7e66187301ed984df318 +size 29546 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_de.png index 3f36913215..d991096b7a 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9e4fd416b89d9c79d4c9413a45bcb9c455ed71d1e07184830bd7b91b61053a9 -size 41184 +oid sha256:6cabad8bafdf955fd6d82d8b14aaa1bea56ea6a73f51a2bd6a82538c527b2fb5 +size 41205 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_de.png index cc63d4d5a6..8a415cf1db 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:842f46fe337f143251bd8c2ec1e58e0823bb46c89cf82ef7491310dbb066d253 -size 25439 +oid sha256:42a7336ec373fa8b8b92d75f13f9328dd3594017dda18096a4af1fddecb44484 +size 25461 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_de.png index 66e03de18d..6ce10e25a8 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f83a6533053cead60f5bae4072546acefd5686a5f602b145bd9223626a8d8ee2 -size 21474 +oid sha256:2518686a8c0d1b3fc0a345b3d778c2b15cdabf645835a565e2c31ab027571bef +size 21505 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_de.png index 095e794a2c..36939df978 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:066c64055bc1034d2451d9d812b2b48692260062364424d2de5be2eca81d3922 -size 52848 +oid sha256:506ac23b74c38aa367f42dadad28fbbd8d1af9d6c7d460551d304f66136d2847 +size 52879 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_de.png index 98f53283c1..e92ab5411b 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ed6a28099f8902cf9174b3c9cdf4b7d154b623e7fe37b03c96813b708cb290b -size 53922 +oid sha256:7ba72d82fe78861c420b21f5c67132b09b1eef6a4bc29de38282c0c655c9ccd1 +size 53948 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_de.png index a6b85f2af9..eb202b9f3e 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:355c47c2dbed84f808637b0093e7245667ad2dbffeabf84ea7f1244d377beca6 -size 43916 +oid sha256:95807c82c054157fefd82e05648f5c099613c33d816280280f40a92479009cb2 +size 43937 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_de.png index 425ec30050..3869f9c1a3 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf2239dea75e1981f0bd12c3dc0e1490b5ff9dadd29a12d605414d63bb4db6a6 -size 32068 +oid sha256:49a84ee8cce1ce9415e70f3641dcc0cfb95a7728cb4640fe38e3d1181f8d20ad +size 32087 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_de.png index bf8eac000d..a55a070617 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ab908e704aca311e6097d64c2bc8029c8921bd84538fc6df3c970640a9001a1 -size 21617 +oid sha256:84e144a3dc9c02eb3d7ddfaa244bb30af331f64acf41d73fdd780c8b24b53ad9 +size 21644 diff --git a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_de.png b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_de.png index be0253d957..a556aaaea3 100644 --- a/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_de.png +++ b/screenshots/de/features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f97f11e866e1615cb826cdb6feeffa8ff106c5f41d3c9db9a262df5432ea05f -size 36929 +oid sha256:76825dbfb2e6c4aaf8111a16ba3811d0ca84cd970681ee9ae3e602bb98acdc83 +size 36962 diff --git a/screenshots/de/features.viewfolder.impl.file_ViewFileView_Day_3_de.png b/screenshots/de/features.viewfolder.impl.file_ViewFileView_Day_3_de.png index b51de1e807..ca35124e38 100644 --- a/screenshots/de/features.viewfolder.impl.file_ViewFileView_Day_3_de.png +++ b/screenshots/de/features.viewfolder.impl.file_ViewFileView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:839eef003e2f567c59fc8a8719ef3a862ab16760cc4ddc4d82b1a68620736924 -size 9219 +oid sha256:5c6452424f2e5702af749d126b402a6a2b8b6a6d089cd87f41c9ca6bcaaa5c38 +size 9247 diff --git a/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_0_de.png b/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_0_de.png index 49108ddb0e..f112fc32bb 100644 --- a/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_0_de.png +++ b/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fb3f21b9b6460403f30709bc3464c8f584af34e7ac27083827a5c2c6121a2b1 -size 8243 +oid sha256:696490cd2be6c6c63e7546dcc5af66038fed23d6a04feac841fc44eda88bce07 +size 8273 diff --git a/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_1_de.png b/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_1_de.png index ce17201424..efd1b648c2 100644 --- a/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_1_de.png +++ b/screenshots/de/libraries.accountselect.impl_AccountSelectView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf13a8c2d3b46a5f2e2b17b681b60ccc62dc886d137ec5464e35c80f4afe19fe -size 49022 +oid sha256:d9fa23fe8db80a547f5955eee300a43d64d277f17fae32dd002fca1141100318 +size 49053 diff --git a/screenshots/de/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_de.png b/screenshots/de/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_de.png index 2feea54379..504ec13509 100644 --- a/screenshots/de/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_de.png +++ b/screenshots/de/libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88f04fda2bd15ff245d888161f4e3dad21f550e6b2c7bd2a1026ca6e8eb450ca +oid sha256:342c22811c50c595f1288c0a24ef51d35814c703691dc8fe5da6cd97da89ff25 size 18763 diff --git a/screenshots/de/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_de.png b/screenshots/de/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_de.png index f91d67848f..5be94f8d2d 100644 --- a/screenshots/de/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_de.png +++ b/screenshots/de/libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a790bf2a4ddf074b1b040b8d3833fc3ccb7f37867e5ce98785cd6b80ed780ab4 -size 10421 +oid sha256:5117f9e69029fc92ac52e9db641a4faf1b285dfd21bd607b5001a83a10387848 +size 10359 diff --git a/screenshots/de/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_de.png index 5e98741cdd..f35e18a131 100644 --- a/screenshots/de/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37e098e3e33c4b518c6cfe5358f3b79b1bce2117cd968103cf325e44da95fda2 -size 14163 +oid sha256:a8b9ee22c008b5075d9d194a2fd915e9dee08407b837a61f4135c661944052f3 +size 14182 diff --git a/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png b/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png index b2f0e64495..9795c4e10c 100644 --- a/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png +++ b/screenshots/de/libraries.matrix.ui.components_CheckableUnresolvedUserRow_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fde26e4404bb2a324cc098fc0c16dbfeabaf40fad7fc59c279c756e200b3a03b -size 127545 +oid sha256:c4fd702f03c1886684a2ded6deb907f4f64c2d8c749eb8a86c4f6f697625a616 +size 127507 diff --git a/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_de.png index 64377be81c..5c9d040b9c 100644 --- a/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85f91b6c1665dba28fb428c0079a42b7ed3fc2f8e5f5b2f40df9c7f80bc47a3a -size 28681 +oid sha256:c7efe3fbc80ebe43ffe85f8aff63dcc2cb9dd9efc8f9f40b656be1741ad071fe +size 28679 diff --git a/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_de.png b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_de.png index 41c764998a..fbfdbdbc67 100644 --- a/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_de.png +++ b/screenshots/de/libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcb0503b81b31809515e2c38824813e99ab7f9bcc9b79ee5822796656955890c -size 26977 +oid sha256:5bb75f313e62e4ceb97f86ca19eab72c46d351d43bb16c19970ea50304255186 +size 26964 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_de.png index 7e5de34316..2392471c84 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0095fd43138cfbc55518c6aeb4a9e578d2ea299e8f55c658e80120076402847d -size 18263 +oid sha256:46aba86f8df1ba4cffab0a31b83df6ba5ff5cc04ba7ec636d50173160bee86a4 +size 18231 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceHeaderView_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceHeaderView_Day_0_de.png index 1f052f4c3d..45f40d68a3 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceHeaderView_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceHeaderView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0978f8363e8d5234bc19625156a572219a6cbab3573e2c024a1cf828d4446af9 -size 61237 +oid sha256:b599c588931b4cf33b2c2b501241d85618899abde7de94f369034d3b93e49ce3 +size 61245 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceInfoRow_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceInfoRow_Day_0_de.png index 1407cfcd80..b2b563a220 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceInfoRow_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceInfoRow_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20ab8a876550e5536c89b8b3dc7028444a9430694f3fc97522fef4d601ec2f87 -size 24582 +oid sha256:caf8e89b4d906f0e1535f437ec056b51447a3fcddd0ec8078cb269c4b875eec6 +size 24616 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png index 738e01fe3f..71ec7db1b5 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7d03c199e22eb0f0b6e34b42efc65d138ac32c743631f65553ba3497ded0362 +oid sha256:3f27d9e1f19992c204f5263d05e6fbf4f5b93d273951bcc9b8c93e26f741eafe size 17452 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png index 4f234befc6..84a21da41a 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06ba4b65baf7638599ce0adefe25c3836c322168c5e0cdfe8f93162b2d3b3b8a -size 13462 +oid sha256:3880c0e5b65e938247f0f29ba3a72231b1b08f4da4f82c26989da225ca7ab03c +size 13455 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png index 1c3fc7c033..956885dcbb 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59335d0ddefd6d4b668ce0004c992ef24f34268e3155ac8c41fe9418c700bf2b -size 10782 +oid sha256:19765755cf6811b3fd4ab91624cd1a58e685f7b0cdabc48afb1c8500744b370e +size 9094 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png index 388eaba735..8dc29f3012 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96aef4e08d3d1d21701a8c18832f60eca0317c2ced0c4f06d8d9a71231434bbd +oid sha256:308f2f640659358c4581e668367ea1b8c03a2573cb940fc1b3b47407f5bc28a1 size 24579 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png index 866b8156d9..fdcc9bc51b 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52beb69cc61ef5a526b371c28859e9fd290ef709d2ee01a60a5343f3397acf52 -size 19003 +oid sha256:216199d43dab66907348a7e60709114738ab9d28e328c3f02214a92c5dcc0f19 +size 19002 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png index fa8d622303..7a67b3ad48 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c913b95850bcd97e39dc415bfd130eddacb4b22119998eb083217804ed530d4 -size 14892 +oid sha256:46674c75efecc2afcfb418d84f47a065ec6101cbe3964ef2f15913a2ee5d7e2a +size 14890 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png index 96ab4eec7d..4c93fb1a61 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e79cc9e9d2cb0918afcc6ae3c4590b7d4d79ae3fc3d6480f88797ea93cf64b1 +oid sha256:c42312e8b217fe3c64587ca0b9702bfbd1802d1481b27ec831793b331f2137bc size 34985 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png index b74c0e675e..3c4c027c2d 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ce56146c048dc9739a59564e6b53dfe8857f02489817a7e7931b00870b197b5 +oid sha256:3e4df3c97491b0fa66e844965efc081f5244f223900c33089b73c3c720c3f367 size 39827 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png new file mode 100644 index 0000000000..3eeff55258 --- /dev/null +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74e6d1794ea31d1384700f149c5b5d5e638598032a6e8ce6f0ef4928a12b93db +size 11308 diff --git a/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png b/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png index 7718515f1f..195fc6212a 100644 --- a/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png +++ b/screenshots/de/libraries.matrix.ui.components_UnresolvedUserRow_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9e55c46d0f6633650ea00b79a97e79f140e2ecc27e4af979a4d7a8ce059d1f7 -size 73790 +oid sha256:e49d17ed624b012da26430405c715f6be034e2c73c1202ab979002443764f1c7 +size 73774 diff --git a/screenshots/de/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_de.png b/screenshots/de/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_de.png index a63226c222..007cf090d8 100644 --- a/screenshots/de/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_de.png +++ b/screenshots/de/libraries.matrix.ui.messages.reply_InReplyToView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef21868f9e2a8438c344597e575aa4f73ccc110c648d463ecfcc9167a844e3fb +oid sha256:5e8b2eac58fa493c2c7b91b064bacaffc6b942fc98defd9a348896e8b697973e size 8892 diff --git a/screenshots/de/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_de.png b/screenshots/de/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_de.png index 873c014b18..d53e274d51 100644 --- a/screenshots/de/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a9b70ccd2182c71f91a41c4c4563719995c2b1735c576df4607685617052cc5 -size 35704 +oid sha256:ff6c6c7414b42557f253a0ac9ded918f2ea3085806e5858f63d9f2491817677b +size 35689 diff --git a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png index 101f89bb83..8be502c48e 100644 --- a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aecba3d40603a4023dfcc8507cf19adc983e9993544c618d4bb3b5635bbbf921 -size 43059 +oid sha256:57800bd0df9e4eabd4ed60d9868ba4e0dd82ea2268567893252b21b3bdf769e2 +size 43078 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_de.png index d8ce49ed62..5ffc85b5e0 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8802d043fdcda3663a7703b1986a25043d299008b0eef8a220dad5ccfd164b4a -size 64756 +oid sha256:70195806d10af6be3257be03cde5d9ed35c5f2672567bb8541a081abcb162d89 +size 64770 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_de.png index 7e6337b642..943ab20818 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:471d9a1e70e019f373958aca834bf631874dc64fc8a2e04a5a8c36c11bf41770 -size 15256 +oid sha256:8749fa29c9d8d9f1672fad947dac4c48c694ef7827b5023bf691cdf458634a10 +size 15264 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_de.png index e2168318d1..20488edc7c 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b19feb9904ba5128133c60af1d6ffe5755b4ef009b9611f3af83d3a25ae495a6 -size 61884 +oid sha256:989062a145069bea7054d9683ca4c1f1b4a4c0a216dd704ea95b092b4e44e7d0 +size 61894 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_de.png index a8fd83c3db..63a3a14ce8 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdb11e06a185f48bc899582c6fe38630d5b9a887b1f0908b586a43b17c0485cc -size 61885 +oid sha256:9f6fe12d0259d82919c721b9ed6239825e18723c04b501b270737e714ba46845 +size 61895 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_de.png index e2168318d1..20488edc7c 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b19feb9904ba5128133c60af1d6ffe5755b4ef009b9611f3af83d3a25ae495a6 -size 61884 +oid sha256:989062a145069bea7054d9683ca4c1f1b4a4c0a216dd704ea95b092b4e44e7d0 +size 61894 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_de.png index 7f5645467f..e4bba4e8f6 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c64b54d87184c26efafa8a527f4854251a08ebe099b80b8554baa5edd779dfe -size 75346 +oid sha256:d4fdd3fdfbf5bb289234fb740beaa3cfd9a39c964c7eab18086b9f69ecc24102 +size 75349 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_de.png index 81ab79ed90..5bdbee228b 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdd36f2537be1e2e5c32fcba86e53478d7e99ce152c59141f78e71917a181364 -size 529161 +oid sha256:a64d9659245052e31109fd2ca96dade3c01302ebd9d2b48375fd90df732ce4e9 +size 529167 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_de.png index a8fd83c3db..63a3a14ce8 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdb11e06a185f48bc899582c6fe38630d5b9a887b1f0908b586a43b17c0485cc -size 61885 +oid sha256:9f6fe12d0259d82919c721b9ed6239825e18723c04b501b270737e714ba46845 +size 61895 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_de.png index a8fd83c3db..63a3a14ce8 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdb11e06a185f48bc899582c6fe38630d5b9a887b1f0908b586a43b17c0485cc -size 61885 +oid sha256:9f6fe12d0259d82919c721b9ed6239825e18723c04b501b270737e714ba46845 +size 61895 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_de.png index 779fd077ba..1831186d29 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e640ef7595216d2c9365141799e3b5f4c636a2892fb0c21280ca7a9a87c0144 -size 82118 +oid sha256:d56515e555fe3b67b7bc9966f1b6081dac08c026056040d98adc924bee96ef8b +size 82125 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_de.png index 2c9dbc4886..d286963ece 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfb983c7773607092a316ee712c0d50ec4e0bb2cc69e53d849d98b32c2037c99 -size 33321 +oid sha256:06e84aad3494762d9f82db6f89a1c82b29e9fac055ded4f92fe109a553eb7016 +size 33335 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png index 8b2ea46507..91c9af4023 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2af40dcc68f10418ece9ebb6c5148bc2a3f339486f975dd2f6e82a3296554143 -size 45785 +oid sha256:748a0d0bd122a55520ebdd673300321fb41c06b24f84baeeab17c4a253e34cc2 +size 45804 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_de.png index b1428db8bf..7c3707060c 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d422c54444ad386393580e35860ebb5a2e9121c5566b41455ab512cbb9042efb -size 15264 +oid sha256:8c125e94a03f510377e19bd583f2f76299ac1770377f6a70b07b721c7a8d2b98 +size 15271 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png index efe2112eca..bf12cfa991 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9035f7f5e0981bfec028980576ddf3cb25fd03fe3e9c824efbb6579ba4d5816b -size 42671 +oid sha256:19e9bd753d0e325d905ec71b9f4912eb4f10264ea9a92a98346b209ec039c856 +size 42635 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_12_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_12_de.png index 8d6b00f872..30cdca9a84 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_12_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_12_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb5df77727252a85aca9913b465026521178c9da77e27738df3bd0a99876676c -size 35317 +oid sha256:19c61fdc86c8fbf8017c6f67fb9a99fb7d80a69e40ea92d3008918abce1c7b80 +size 35289 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_14_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_14_de.png index a82c4fbb48..caa3ec4884 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_14_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7353634dec22f3c4112c3d71290e8959775e97f7f1c140b0ec69c71f675c13c8 -size 8862 +oid sha256:c49b02ae7e627f0cb4aa2f1c6a031892296ba73e3595d3fbe7a95e508d42dc0f +size 8851 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_2_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_2_de.png index 39dedcbc2a..2e686ea4ee 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_2_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d6bc0b609f19136a6bdf9752d399047aac63f26e88bea363d823b5273f1657d -size 45992 +oid sha256:fd7994171f75b775cabe7e1be07a8b47a6ac502d9a4eaaded5696f446ca6c790 +size 46014 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_0_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_0_de.png index c22f818b3b..a685eda44f 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_0_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a89366ca6bc6a19e2661466d43f883532a84ad129bdc6f0249be8a0215f38184 -size 14046 +oid sha256:3d93ffd5275a31b3f10d3118fd969b444dca509b99a2d38ec505b3f40d5dca41 +size 14069 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_1_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_1_de.png index 67b221f32d..b5f861d09b 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_1_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6388e6452d693c8675ef66e55c53aba8625c54ba3fa1667ee808f00a06259ef7 -size 12015 +oid sha256:3bd016c197832e8c4bafc03f6e01298ac9a4f28a7ffd56c072d08dcd1abc7a06 +size 12049 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_2_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_2_de.png index b191e15948..837a336f66 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_2_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:726e9c2aa1399e8aca167d4dfc20684cbfa5ab0dae29465f5702ab1998887246 -size 32556 +oid sha256:eb3260ccf57e31534397b97c896200fa222c3ce1c41dbeb34ecee18deac26ae3 +size 32571 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_3_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_3_de.png index 6e92d8729f..98ed051caf 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_3_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1f5499db3bfde1f52df07f0378c506f45ba57bce0bcc5984627b9719d52efec8 -size 30902 +oid sha256:a8ae61dde38c637924bd95c73408856d4cdfb61728128983354ea566b5a02b6f +size 30936 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_4_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_4_de.png index b1e005c407..e6ffefefbb 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_4_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08cd625decbc86790b9d3ffa4dd250ddc45ab5e83758bc365b53dcc028a1ceb1 -size 35167 +oid sha256:417ae6a02eb2ac758bd42f287c9ac9b35565afda2fa62783f03aeaca56990da5 +size 35196 diff --git a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_5_de.png b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_5_de.png index 6a53fe6dc6..40ac87be2e 100644 --- a/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_5_de.png +++ b/screenshots/de/libraries.roomselect.impl_RoomSelectView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d739c07ec0320b2f9cb5229cbe1f851548b60affd674ada974c38ae4f1e2efc4 -size 30220 +oid sha256:2a40da17d87b7b39c4064cd148327723efda66bea208bd683efeb477616642c4 +size 30235 diff --git a/screenshots/de/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_de.png b/screenshots/de/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_de.png index fddd65714a..ee6761f945 100644 --- a/screenshots/de/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_CaptionWarningBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36e21a9663aeed7a474d422ec0c67cd770bf0d68ffebadcd770d115cb361ed47 -size 21279 +oid sha256:c28a1a1ac113584aadf170b728574e4a34f888bf0220c2ce86a5911a94482371 +size 21284 diff --git a/screenshots/de/libraries.textcomposer_ComposerModeView_Day_0_de.png b/screenshots/de/libraries.textcomposer_ComposerModeView_Day_0_de.png index 8a66f0d314..58618a746a 100644 --- a/screenshots/de/libraries.textcomposer_ComposerModeView_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_ComposerModeView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa9ab0bf9088d4d19738eb2606b1f3e0dcf3aded754ee3a3ca5956d4a6a9fcde -size 6185 +oid sha256:4179ca2e2ea4337930c7d4fe0dac6f109488c33329742307aa9a1b56e55d7292 +size 6158 diff --git a/screenshots/de/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_de.png b/screenshots/de/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_de.png index d127fc83d7..98454d33f7 100644 --- a/screenshots/de/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_MarkdownTextComposerEdit_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60cc65fbeb8cda08f6ad79c30b0c67de60257a7993f9cf9a77a2e0b536ccf919 -size 55466 +oid sha256:4e9f5405a4d1174473d85c9fd83ed8637857a6871d74b3de5ba38e2365b8c001 +size 55433 diff --git a/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png index 40b5e4fcdd..1bd7ba7633 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerAddCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fee1127041bff5a4047dac582bb8353d0b3bb4b2ef41f486d7bf7f646873591b -size 61474 +oid sha256:f6223ae2ec69da18619d6b0e8ec672ef5039cf4f8b4d90dd7ab8fa8f62e09f67 +size 61498 diff --git a/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png index 569d92dccb..b7d8a1c7b4 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:096a1828bc630757e6abd080624fd81b4d3e667f83ce428fbd7a9bc9f6c1f7b6 -size 46548 +oid sha256:dafda8e667309fc1ee09aeabc86332d1fc1aeb15000244239b5dc3db05a88fe0 +size 46550 diff --git a/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png index fe75c2ca42..67c758b8f6 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerEditCaption_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6a9f4274e261724436a37c9ca59796c412e2f4ec4711bf2bbb8d8f7b3e01543 -size 59501 +oid sha256:aabbb0a33bea214075a6d1f7115ce24096b1c022c1cd50733d0816f8e6ebaefe +size 59490 diff --git a/screenshots/de/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_de.png index fa69690dc0..dc24bcec5c 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8acf506699000a01eb65fd8acab056d070c1599a59319a0aae6dd1e38023da83 -size 67973 +oid sha256:596cc2da5cb85d9d740fbb9a2769adcc6a2eedb2940b1347d00fceda487402a5 +size 67976 diff --git a/screenshots/de/libraries.textcomposer_TextComposerEdit_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerEdit_Day_0_de.png index d127fc83d7..98454d33f7 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerEdit_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerEdit_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60cc65fbeb8cda08f6ad79c30b0c67de60257a7993f9cf9a77a2e0b536ccf919 -size 55466 +oid sha256:4e9f5405a4d1174473d85c9fd83ed8637857a6871d74b3de5ba38e2365b8c001 +size 55433 diff --git a/screenshots/de/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_de.png index fb8bea88f5..ea48d1f02e 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4782b03a120bbb9c54ebd34bb5ee892686277301fb8f1f3131d86a987f42f8e -size 66107 +oid sha256:c7425263614937932efe6435296f48ee4a8fb81c4829289b1993913d4bea292f +size 66098 diff --git a/screenshots/de/libraries.textcomposer_TextComposerFormatting_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerFormatting_Day_0_de.png index 9136cb6afb..45edbb487d 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerFormatting_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerFormatting_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:187aa4b837fcd244f4cef929c9dc093defdba5315025e5ee2faea34d62aaa1b4 -size 53588 +oid sha256:a46aa7eb61ef981a252fd8f02797adc603590fa25499921a6c8185078f4f5a81 +size 53554 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_de.png index a99064f50b..c30828e474 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40592dd5b485f10fb6b180e676f59bc2ea3946b7966a7d3b82e0b5e2b6f8f53c -size 75347 +oid sha256:0bcca4a976c1fef41252b91bbe17301b1169c397833f7fda954f30c46d9ebefe +size 75296 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_de.png index 2979c82d8d..5a1dae13dd 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:717054f6cf1deaccc69e0f23587d4362b3f473c36abca4b08ea665affd1caf38 -size 61932 +oid sha256:83bde3a14b7a8345678282f86a4a16f4af925daaab4b7f9393122a81c8fd4509 +size 61884 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_de.png index 784c0fd618..a3f6ea71eb 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e13c7bc1577ceb046e6eff0ae8750299ef7f652e5e8b8e4183bca5e9b5c3b225 -size 74758 +oid sha256:78335f34f4ec3eed79ecb4fc5f74a6ea52ca758913db1f1253c6d67df13cc1bd +size 74715 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_de.png index def666e030..2556acee45 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51f6dfb47b2799974065516f6e111730da5d8b6e2c904e297e11c6acb2c2835c -size 83409 +oid sha256:fe025380c38ab0974930b7e91e3a0a4f02e49c8422b3f1119ad3a64d6aa1e770 +size 83357 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_de.png index 543f397c18..8ee7cb1c67 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eb54ffc3ab7ec3689ffabc896cb96e447b02784a68fd8c387ed89c62b07208a -size 64480 +oid sha256:e21a3a654f0b20a7fd6a53b8dafb83a060216fe5bb0e60a6a929cec91091500c +size 64430 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_de.png index ee37f89e24..f5352e8ba3 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09aa66b3c268caa5bc6b26192f27000be4a4894b1f54e4e659e2b215ae537a54 -size 63354 +oid sha256:5e6c5e2f1cde6c5aaac386b1ed7f478192bb15811f082eb7b564375db1c45ca5 +size 63315 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_de.png index 51f6c059ba..b68fe1da24 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c39ce41b357199a9e571f86b45f60f1dd42adcba243ead70b617723b01766f0 -size 69003 +oid sha256:aedd7a97c5f98857d674da7c42f7439e0af71ccb59f0a900161ae5b7497e9723 +size 68971 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_de.png index 22eeb8d4b2..3ba3abf9f0 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:237f46b3a247dfa29c545751d65a6a7317632edecd0daf81619912446b3900b2 -size 92282 +oid sha256:29aeb44961435a5a2d1000ff1e44ed698c4c2358e0d8eaf88f762e8004693942 +size 92241 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_de.png index dc35e95678..1b640b003b 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e1d7bb5df8b681b4f68ca7dc8d4405c35f6a36fd40da84dd3f6ead8d601f28e -size 62803 +oid sha256:163945bdc729e6355e0ac6ebf58fea897195053d79197fba64ec0601045be868 +size 62760 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_de.png index ea7f60920a..9a9414770c 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e3cfa1d4e2c6f5b9a3eb0a72a65c00b1ed94491b6d10ea589e9706d55d8c2e4 -size 63905 +oid sha256:c0b44b23c3f31cae6bf229f992baa529eee15e087989230a355d0f29a429800b +size 63900 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_de.png index 642fff5c6e..7adecea8ed 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fdbb5f58bf14189d6d97269b70d31719c119598e9064f897a66b718d3b86a40 -size 71620 +oid sha256:7bcbb464943d25cda77e49f4c76bb01e587a4823080757f9718dafdb86137d2d +size 71591 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_de.png b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_de.png index c60b586751..2d9f044871 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7373c877c6c447cc9f436bd959dfb8e1f71bd61177b6d152353a2f5b43aa2c8e -size 62337 +oid sha256:243cbf861b217e6314cedc853eefdeadd231ea674d22d683e6bc43e50de1a213 +size 62292 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_0_de.png index 2d07064de8..db3424e835 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60c4d9f1473045065241e3b0c09852671de07e1a31cd7eb696e6ac7fdfb09e51 -size 75722 +oid sha256:633eafbaca68ce66d4dc8d6f14f3b27c461bfc2ffd80dc390d667535e64c98e7 +size 75740 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_10_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_10_de.png index 7f892e2d62..494d25ffd8 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_10_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d92f14b72f92753cb46b4ad46d395412a7155c2a9074c57562ab00e6e3c73c03 -size 59288 +oid sha256:46def0920f70388300ded71846b5bb42fc4df6fe87547adefe089e4b6c83f0e9 +size 59293 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_11_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_11_de.png index 4bde8bd861..90728f2c41 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_11_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:759ec0718213e6b6ee6fa41cbbce455687a353b98a3091cc3726007066cabd0f -size 73946 +oid sha256:cf467fdb5211d4d4993b9ae83161ffeb90a5d910663eb4914eda60a391219d24 +size 73967 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_1_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_1_de.png index ad5146d4cb..ee70c8765f 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_1_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff399c6e701123d42878b6a0ef382691d7087ec5bdafe15b1ec757d702a7ac5d -size 85209 +oid sha256:024ac538e1778cf6c8fa3e489602e19efe64e2262c1b0b3f6988191a9483a500 +size 85227 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_2_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_2_de.png index 60803e9382..79deb8e87f 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_2_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b47d98d581d278f6e7afaccb590056bafc306b6c92b2f05c7c284d132e819e0 -size 62301 +oid sha256:ab37052348d8d881d7bd6b41edc715db442cf726453df047b8c0fe0d9d55125d +size 62309 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_3_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_3_de.png index 34851b527b..83f104ba46 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_3_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c407a602fc180ff841ae62405140da8978694b1b6f5f46c08a774607fbf3d3db -size 61365 +oid sha256:dd08e08441c5b058f7d17c77a609ea118d2d10f7364b596dd18d161f2729d639 +size 61369 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_4_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_4_de.png index d79e8b441d..693fec3170 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_4_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:195e435fcaebd76fedb1cf41f03776e1e68eb94f745c26b46d112d2d3fd86701 -size 68837 +oid sha256:f565b9afb2124d4dd215bc7c0971c5fe8010e19f5a6c21ebea05af1da1c9a4db +size 68852 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_5_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_5_de.png index 46158a9f2e..865c8c2504 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_5_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4937bac91e2ce148abd5b09699291ca700d976069df2d39e62c86ef5acce36f -size 103915 +oid sha256:7a3335a970e8fbf1cae6573a258f8343db844c457a6abf202f0a03e9cb691557 +size 103914 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_6_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_6_de.png index de116d7eaa..51c97c7187 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_6_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6256e13d0a7fc9b7416a4c24fd0a6e807cbd26c50e5b3794ddfc88bc3477aa9e -size 60552 +oid sha256:a52b25f13f88db723c0d397c9b76bec08cc29154b4b0802a365205c87caf0124 +size 60555 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_7_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_7_de.png index 05cc000090..3fd37f9bdf 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_7_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30eda7acc6b1f2bd984f8502ec88a0c9b8d79823e29b078228268a295efee748 -size 62485 +oid sha256:018c8fbff159cc5d5e5b356b1262f4ef50fae39536bcb8f57233a975ccc587b5 +size 62474 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_8_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_8_de.png index 059aa4abb3..c23aaf541c 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_8_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a5b0960c05c047ae832a61fca7cf9593cc0ad24decd2eab363e652c1e3d962a -size 70887 +oid sha256:4628c587c1a4f81fe55560e858ae006af3b9d59b87d224e6b5c35fb9e8963b64 +size 70891 diff --git a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_9_de.png b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_9_de.png index 19ef265ff6..7a88a63738 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerReply_Day_9_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerReply_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eda41a9560b0acdc6fcaace4d1bb274d5a65f1b5c95073ee86d828ad4b1fa33f -size 59925 +oid sha256:3329174b443e45a350b10fd4424ab6cd7d918e461861b30a7bcc6f504d322f20 +size 59931 diff --git a/screenshots/de/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_de.png index dad38da8c2..d50c99a4f4 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53e771de4de90be6356b2a218d58ca658dc2895c32c63eafe8316557f259e8ac -size 58303 +oid sha256:9b79bfd727b627baed2d6b99ae6d5711d4b4dcb0f74f937eb41727ede4317c79 +size 58334 diff --git a/screenshots/de/libraries.textcomposer_TextComposerSimple_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerSimple_Day_0_de.png index cb60634ec8..777b608e19 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerSimple_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerSimple_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52a0b4d220040f7115109ec3434f4d0067c753608b7cc4736c634752caf1cfe2 -size 46254 +oid sha256:0c0e5f446f2265f5eda7f381216c18d85b3eeed55b47e4a8617fe4234d49804d +size 46264 diff --git a/screenshots/de/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_de.png b/screenshots/de/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_de.png index 278db7b093..f9b8010e6b 100644 --- a/screenshots/de/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_de.png +++ b/screenshots/de/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83d2db1b20827de777296617927146c7142b21bf8efbfdf4aa40b21979b7aee7 -size 39694 +oid sha256:6d97f5794815c5e525490163c626a569e9f3272a690c3b825ad67615e35dfb99 +size 39676 diff --git a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_de.png b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_de.png index cbf965f243..42d9d2a4c8 100644 --- a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_de.png +++ b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33421dbf0f3d14fee61a8cafc251ab1f84d81efcba9dfaadc07f80bb320aa607 -size 13136 +oid sha256:a73117e9f32d5c9cffafef70457d9941fb4d3c2aef864c518c68ce8ee9c370f6 +size 13163 diff --git a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_de.png b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_de.png index 0296d9668b..f5949c0da2 100644 --- a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_de.png +++ b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77b59c5016827c32d9c1e028050bfa662406cfe5df67d039a4b919c6e66a4b62 -size 45170 +oid sha256:639065890260286d563517940ef3d3f91e12d50724610893ebab3e84cb7c2d3b +size 45206 diff --git a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_de.png b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_de.png index 5c252f34f6..4ea936e138 100644 --- a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_de.png +++ b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:036931ca88ce36585a3377476821ad5e61221354f16adea22738b2588bdafe88 -size 23452 +oid sha256:479aca0d8555e2f186ec34eb9d64561a720482d52c0734cdca275b4fa13bad7a +size 23426 diff --git a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_de.png b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_de.png index f4c4da3dc5..c82e51c493 100644 --- a/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_de.png +++ b/screenshots/de/libraries.troubleshoot.impl.history_PushHistoryView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fe5fd358af75454841c8648f64bdece8225e4327f5ec0d3e112d7b38da97fb1 -size 23951 +oid sha256:ae5eefdea8c937d368fe04245c8b6c51280e15394463f885489ba10e8d6e6321 +size 23925 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png index 6911e830d7..48833748f2 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:292f03d853dc79b3cfdaf60383feb0bfb28621f2ca222f861e0b8545e949626d -size 35608 +oid sha256:928ac6c2eb31b854990ab0c58b3e7eb16976eb747b7424b7935242663200df52 +size 35619 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png index 4d4dc2092b..0f953c700c 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9c5c2385a62311805385152b8986df99cdc7c0cc6558d774a01487c6591471b -size 20399 +oid sha256:4f83b6f6ff8ab7bbbaffd39b21d9f9e4f830b520d82178ff6c6eb143b76bbf63 +size 20408 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png index 3b828cfa21..619cbb8f6e 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4143aa80f5e04d2eb1a150bcf2ffd54eee46662e2d142bf4931b7ec2e877a913 -size 25803 +oid sha256:1b5c8a957d70fa4b21002ce7801c55478744bc7563bc7e1605588680f042349b +size 25815 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png index 00b513f519..3aab032174 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4994247b57d45a9129a3ff1ff7ffc4d325153a76024f8ab853f68494fabbb2b -size 32984 +oid sha256:91258609ab9996464c8e77ababcc4e4b11f98c8eb1484c36fe4e615d7773d96f +size 33005 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png index f338319996..0ee53f096d 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33e4eb4ceb6b959dc41aab717565b85fbd8837ed3318ffae42633d44ae9f0484 -size 25633 +oid sha256:18e255c2924df939b1889405d1c39f7a787b0465242c800f140b954aa7eb4518 +size 25644 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png index 4c9c562a35..d3d0c34a2a 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7e2ae21ea5a0ba84a46f04660ccbf6f6a7badbb6cd3e5ce3d00f2ab75ff33e9 -size 41747 +oid sha256:3998239c48f1ea84b0a0e327f39168ed5f5e541cec2526a77e24a57715be5085 +size 41768 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png index 3830d4d901..4e0b11ff6e 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:697be9acc98d36ebdc113f3f8ca05268c5fdf1ee19c9268abff5c37e284b19e4 -size 27473 +oid sha256:56fead606ebad9e08b1bd85a1c376881b5f88e30eaef776304faf5ca341d2868 +size 27461 diff --git a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png index 652a34b261..541ba1165b 100644 --- a/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png +++ b/screenshots/de/libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d992f1d26392afd09825656106a004f7b50b4a03896138730a15ccaf45296106 -size 26586 +oid sha256:cb9ab2813c21190074f80f1128897064267b6922fc6bb70ffcec9dcb487a3c02 +size 26580 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index 2bdbeece94..25d2e9cea3 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,79 +1,80 @@ // 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",20369,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20371,], ["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",20369,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20369,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20369,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20369,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20369,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20369,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20369,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20369,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20369,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20369,], -["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20369,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20371,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20371,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20371,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20371,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20371,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20371,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20371,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20371,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20371,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20371,], +["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20371,], ["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,], -["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20369,], -["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20369,], +["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20371,], +["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20371,], ["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",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20369,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20371,], ["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",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20369,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20369,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20369,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20369,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20369,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20369,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20369,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20369,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20369,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20369,], -["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20369,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20369,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20369,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20369,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20371,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20371,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20371,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20371,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20371,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20371,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20371,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20371,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20371,], +["libraries.designsystem.theme.components_AllIcons_Icons_en","",0,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20371,], +["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20371,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20371,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20371,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20371,], ["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",20369,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20371,], ["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",20369,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20371,], ["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",20369,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20371,], ["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",20369,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20371,], ["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",20369,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20371,], ["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,], @@ -83,19 +84,19 @@ 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","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20369,], -["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20369,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20371,], +["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20371,], ["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",20369,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20371,], ["libraries.designsystem.components.avatar.internal_AvatarCluster_Avatars_en","",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_0_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_0_en",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_1_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_1_en",0,], @@ -117,272 +118,153 @@ export const screenshots = [ ["libraries.designsystem.components.avatar_AvatarRow_Day_2_en","libraries.designsystem.components.avatar_AvatarRow_Night_2_en",0,], ["libraries.designsystem.components.avatar_AvatarRow_Day_3_en","libraries.designsystem.components.avatar_AvatarRow_Night_3_en",0,], ["libraries.designsystem.components.avatar_AvatarRow_Day_4_en","libraries.designsystem.components.avatar_AvatarRow_Night_4_en",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_0_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_100_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_101_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_102_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_103_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_104_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_105_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_106_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_107_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_108_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_109_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_10_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_110_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_111_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_112_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_113_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_114_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_115_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_116_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_117_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_118_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_119_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_11_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_12_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_13_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_14_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_15_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_16_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_17_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_18_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_19_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_1_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_20_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_21_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_22_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_23_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_24_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_25_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_26_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_27_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_28_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_29_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_2_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_30_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_31_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_32_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_33_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_34_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_35_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_36_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_37_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_38_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_39_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_3_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_40_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_41_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_42_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_43_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_44_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_45_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_46_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_47_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_48_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_49_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_4_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_50_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_51_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_52_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_53_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_54_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_55_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_56_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_57_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_58_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_59_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_5_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_60_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_61_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_62_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_63_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_64_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_65_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_66_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_67_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_68_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_69_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_6_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_70_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_71_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_72_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_73_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_74_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_75_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_76_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_77_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_78_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_79_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_7_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_80_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_81_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_82_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_83_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_84_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_85_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_86_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_87_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_88_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_89_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_8_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_90_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_91_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_92_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_93_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_94_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_95_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_96_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_97_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_98_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_99_en","",0,], -["libraries.designsystem.components.avatar_Avatar_Avatars_9_en","",0,], +["libraries.designsystem.components.avatar_Avatar_Avatars_en","",0,], ["libraries.designsystem.components.button_BackButton_Buttons_en","",0,], ["libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_Day_0_en","libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_Night_0_en",0,], ["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",20369,], +["features.home.impl.components_BatteryOptimizationBanner_Day_0_en","features.home.impl.components_BatteryOptimizationBanner_Night_0_en",20371,], ["libraries.designsystem.atomic.atoms_BetaLabel_Day_0_en","libraries.designsystem.atomic.atoms_BetaLabel_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20369,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20369,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20371,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20371,], ["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",20369,], -["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20369,], -["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20369,], -["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20369,], -["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20369,], +["features.rageshake.impl.bugreport_BugReportView_Day_0_en","features.rageshake.impl.bugreport_BugReportView_Night_0_en",20371,], +["features.rageshake.impl.bugreport_BugReportView_Day_1_en","features.rageshake.impl.bugreport_BugReportView_Night_1_en",20371,], +["features.rageshake.impl.bugreport_BugReportView_Day_2_en","features.rageshake.impl.bugreport_BugReportView_Night_2_en",20371,], +["features.rageshake.impl.bugreport_BugReportView_Day_3_en","features.rageshake.impl.bugreport_BugReportView_Night_3_en",20371,], +["features.rageshake.impl.bugreport_BugReportView_Day_4_en","features.rageshake.impl.bugreport_BugReportView_Night_4_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20369,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20371,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20371,], ["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",20369,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20369,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20369,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20369,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20369,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20369,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20371,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20371,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20371,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20371,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20371,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20371,], ["features.changeroommemberroles.impl_ChangeRolesView_Day_5_en","features.changeroommemberroles.impl_ChangeRolesView_Night_5_en",0,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20369,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20369,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20369,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20371,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20371,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20371,], ["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",20369,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20369,], -["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20369,], -["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20369,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20371,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20371,], +["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20371,], +["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20371,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20369,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20371,], ["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",20369,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20369,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20369,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20369,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20369,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20369,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20369,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20371,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20371,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20371,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20371,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20371,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20371,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20371,], ["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",20369,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20369,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20369,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20371,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20371,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20371,], ["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","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20369,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20369,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20369,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20369,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20369,], -["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20369,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20371,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20371,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20371,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20371,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20371,], +["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20371,], ["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",20369,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20369,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20369,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20369,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20369,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20369,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20369,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20369,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20369,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20369,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20369,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20369,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20369,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20369,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20369,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20369,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20369,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20369,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20369,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20369,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20371,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20371,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20371,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20371,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20371,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20371,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20371,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20371,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20371,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20371,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20371,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20371,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20371,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20371,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20371,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20371,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20371,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20371,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20371,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20371,], ["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","",20369,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20369,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20369,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20369,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20369,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20369,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20369,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20371,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20371,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20371,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20371,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20371,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20371,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20371,], ["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",20369,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20369,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20369,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20371,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20371,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20371,], ["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",20369,], -["features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en","features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en",20369,], -["features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20369,], -["features.home.impl.components_DefaultRoomListTopBar_Day_0_en","features.home.impl.components_DefaultRoomListTopBar_Night_0_en",20369,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20371,], +["features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en","features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en",20371,], +["features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20371,], +["features.home.impl.components_DefaultRoomListTopBar_Day_0_en","features.home.impl.components_DefaultRoomListTopBar_Night_0_en",20371,], ["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",20369,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20369,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20369,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20369,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20369,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20369,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20369,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20371,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20371,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20371,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20371,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20371,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20371,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20371,], ["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,], @@ -397,18 +279,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",20369,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20369,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20369,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20369,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20369,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20369,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20369,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20369,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20369,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20369,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20369,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20369,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20371,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20371,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20371,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20371,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20371,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20371,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20371,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20371,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20371,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20371,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20371,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20371,], ["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,], @@ -419,14 +301,14 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Night_0_en",0,], ["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.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20369,], -["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20369,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20371,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20371,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en",0,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en",0,], ["libraries.ui.common.nodes_EmptyView_Day_0_en","libraries.ui.common.nodes_EmptyView_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20369,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20369,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20369,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20371,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20371,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20371,], ["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,], @@ -445,41 +327,41 @@ 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",20369,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20369,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20369,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20371,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20371,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20371,], ["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",20369,], -["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20369,], +["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20371,], +["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20371,], ["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.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20369,], -["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20369,], +["features.home.impl.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20371,], +["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20371,], ["features.home.impl_HomeViewA11y_en","",0,], -["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20369,], -["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20369,], +["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20371,], +["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20371,], ["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",20369,], -["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20369,], -["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20369,], -["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20369,], -["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20369,], -["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20369,], -["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20369,], -["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20369,], -["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20369,], -["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20369,], -["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20369,], -["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20369,], +["features.home.impl_HomeView_Day_13_en","features.home.impl_HomeView_Night_13_en",20371,], +["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20371,], +["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20371,], +["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20371,], +["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20371,], +["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20371,], +["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20371,], +["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20371,], +["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20371,], +["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20371,], +["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20371,], +["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20371,], ["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,], @@ -498,8 +380,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",20369,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20369,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20371,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20371,], ["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,], @@ -507,110 +389,110 @@ 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",20369,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20371,], ["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",20369,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20371,], ["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",20369,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20371,], ["features.verifysession.impl.incoming_IncomingVerificationViewA11y_en","",0,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20369,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20369,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20371,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20371,], ["features.networkmonitor.api.ui_Indicator_Day_0_en","features.networkmonitor.api.ui_Indicator_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], ["libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Day_0_en","libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Night_0_en",0,], -["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20369,], -["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20369,], -["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20369,], +["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20371,], +["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20371,], +["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20371,], ["features.invitepeople.impl_InvitePeopleView_Day_2_en","features.invitepeople.impl_InvitePeopleView_Night_2_en",0,], ["features.invitepeople.impl_InvitePeopleView_Day_3_en","features.invitepeople.impl_InvitePeopleView_Night_3_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20369,], -["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20369,], -["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20369,], -["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20369,], +["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20371,], +["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20371,], +["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20371,], +["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20371,], ["features.invitepeople.impl_InvitePeopleView_Day_8_en","features.invitepeople.impl_InvitePeopleView_Night_8_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20369,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20369,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20369,], +["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20371,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20371,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20371,], ["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",20369,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20369,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20369,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20369,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20369,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20371,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20371,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20371,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20371,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], -["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20369,], -["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20369,], +["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20371,], +["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20371,], ["features.leaveroom.impl_LeaveRoomView_Day_0_en","features.leaveroom.impl_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20369,], -["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20369,], -["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20369,], +["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20371,], +["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20371,], +["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20371,], ["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",20369,], +["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20371,], ["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,], @@ -665,37 +547,37 @@ 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",20369,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20369,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20369,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20369,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20371,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20371,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20371,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20371,], ["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",20369,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20369,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20369,], -["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20369,], -["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20369,], -["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20369,], -["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20369,], -["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20369,], -["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20369,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20369,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20369,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20369,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20369,], -["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20369,], -["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20369,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20369,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20369,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20369,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20369,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20369,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20369,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20369,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20369,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20369,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20371,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20371,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20371,], +["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20371,], +["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20371,], +["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20371,], +["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20371,], +["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20371,], +["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20371,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20371,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20371,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20371,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20371,], +["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20371,], +["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20371,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20371,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20371,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20371,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20371,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20371,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20371,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20371,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20371,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20371,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20369,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20371,], ["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,], @@ -708,22 +590,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",20369,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20369,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20371,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20371,], ["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",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20369,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20369,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20371,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20371,], ["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,], @@ -731,14 +613,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","",20369,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20369,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20371,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20371,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20369,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20371,], ["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","",20369,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20371,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -752,7 +634,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",20369,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20371,], ["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,], @@ -761,7 +643,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",20369,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20371,], ["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,], @@ -769,138 +651,138 @@ 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.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20369,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20369,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20369,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20369,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20369,], -["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20369,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20369,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20369,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20369,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20369,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20369,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20369,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20369,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20369,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20369,], +["features.messages.impl.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20371,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20371,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20371,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20371,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20371,], +["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20371,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20371,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20371,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20371,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20371,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20371,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20371,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20371,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20371,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20371,], ["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",20369,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20371,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], -["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20369,], +["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20371,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialog_Day_0_en","libraries.designsystem.components.dialogs_MultipleSelectionDialog_Night_0_en",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_NavigationBar_App_Bars_en","",0,], -["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20369,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20369,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20369,], +["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20371,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20371,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20371,], ["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",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20369,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20369,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20371,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20371,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], -["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20369,], +["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20371,], ["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",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20369,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20369,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20371,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20371,], ["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",20369,], -["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20369,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20369,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20369,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20369,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20369,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20371,], +["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20371,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20371,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20371,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20371,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20371,], ["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",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20369,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20369,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20371,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20371,], ["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",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20369,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20369,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20369,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20369,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20369,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20369,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20371,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20371,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20371,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20371,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20371,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20371,], ["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",20369,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20369,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20369,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20369,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20369,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20371,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20371,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20371,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20371,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20371,], ["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",20369,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20369,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20369,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20369,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20369,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20369,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20369,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20369,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20369,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20369,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20369,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20371,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20371,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20371,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20371,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20371,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20371,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20371,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20371,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20371,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20371,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20371,], ["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,], @@ -914,208 +796,208 @@ 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","",20369,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20369,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20369,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20369,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20371,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20371,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20371,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20371,], ["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","",20369,], -["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20369,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20371,], +["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20371,], ["libraries.designsystem.components_ProgressDialogWithTextAndContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithTextAndContent_Night_0_en",0,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20369,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20369,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20369,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20369,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20369,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20369,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20369,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20369,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20369,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20369,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20369,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20369,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20369,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20369,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20369,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20369,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20371,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20371,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20371,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20371,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20371,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20371,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20371,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20371,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20371,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20371,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20371,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20371,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20371,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20371,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20371,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20371,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20369,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20369,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20371,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20369,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20369,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20369,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20369,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20369,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20369,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20371,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20371,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20371,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20371,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20371,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20371,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20371,], ["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",20369,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20369,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20369,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20369,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20369,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20369,], -["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20369,], -["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20369,], -["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20369,], -["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20369,], -["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20369,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20369,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20369,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20369,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20369,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20369,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20369,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20371,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20371,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20371,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20371,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20371,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20371,], +["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20371,], +["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20371,], +["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20371,], +["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20371,], +["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20371,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20371,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20371,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20371,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20371,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20371,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20371,], ["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",20369,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20369,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20369,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20369,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20369,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20371,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20371,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20371,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20371,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20371,], ["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",20369,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20369,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_16_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_17_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_18_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_19_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20369,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20369,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20369,], -["features.roomdetails.impl_RoomDetails_0_en","",20369,], -["features.roomdetails.impl_RoomDetails_10_en","",20369,], -["features.roomdetails.impl_RoomDetails_11_en","",20369,], -["features.roomdetails.impl_RoomDetails_12_en","",20369,], -["features.roomdetails.impl_RoomDetails_13_en","",20369,], -["features.roomdetails.impl_RoomDetails_14_en","",20369,], -["features.roomdetails.impl_RoomDetails_15_en","",20369,], -["features.roomdetails.impl_RoomDetails_16_en","",20369,], -["features.roomdetails.impl_RoomDetails_17_en","",20369,], -["features.roomdetails.impl_RoomDetails_18_en","",20369,], -["features.roomdetails.impl_RoomDetails_19_en","",20369,], -["features.roomdetails.impl_RoomDetails_1_en","",20369,], -["features.roomdetails.impl_RoomDetails_2_en","",20369,], -["features.roomdetails.impl_RoomDetails_3_en","",20369,], -["features.roomdetails.impl_RoomDetails_4_en","",20369,], -["features.roomdetails.impl_RoomDetails_5_en","",20369,], -["features.roomdetails.impl_RoomDetails_6_en","",20369,], -["features.roomdetails.impl_RoomDetails_7_en","",20369,], -["features.roomdetails.impl_RoomDetails_8_en","",20369,], -["features.roomdetails.impl_RoomDetails_9_en","",20369,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20369,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20369,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20369,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20369,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20369,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20369,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20369,], -["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20369,], -["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20369,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20371,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20371,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_16_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_17_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_18_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_19_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20371,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20371,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20371,], +["features.roomdetails.impl_RoomDetails_0_en","",20371,], +["features.roomdetails.impl_RoomDetails_10_en","",20371,], +["features.roomdetails.impl_RoomDetails_11_en","",20371,], +["features.roomdetails.impl_RoomDetails_12_en","",20371,], +["features.roomdetails.impl_RoomDetails_13_en","",20371,], +["features.roomdetails.impl_RoomDetails_14_en","",20371,], +["features.roomdetails.impl_RoomDetails_15_en","",20371,], +["features.roomdetails.impl_RoomDetails_16_en","",20371,], +["features.roomdetails.impl_RoomDetails_17_en","",20371,], +["features.roomdetails.impl_RoomDetails_18_en","",20371,], +["features.roomdetails.impl_RoomDetails_19_en","",20371,], +["features.roomdetails.impl_RoomDetails_1_en","",20371,], +["features.roomdetails.impl_RoomDetails_2_en","",20371,], +["features.roomdetails.impl_RoomDetails_3_en","",20371,], +["features.roomdetails.impl_RoomDetails_4_en","",20371,], +["features.roomdetails.impl_RoomDetails_5_en","",20371,], +["features.roomdetails.impl_RoomDetails_6_en","",20371,], +["features.roomdetails.impl_RoomDetails_7_en","",20371,], +["features.roomdetails.impl_RoomDetails_8_en","",20371,], +["features.roomdetails.impl_RoomDetails_9_en","",20371,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20371,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20371,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20371,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20371,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20371,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20371,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20371,], +["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20371,], +["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20371,], ["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",20369,], -["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20369,], -["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20369,], -["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20369,], -["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20369,], -["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20369,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20369,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20369,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20369,], +["features.home.impl.components_RoomListContentView_Day_3_en","features.home.impl.components_RoomListContentView_Night_3_en",20371,], +["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20371,], +["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20371,], +["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20371,], +["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20371,], +["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20371,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20371,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20371,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20371,], ["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",20369,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20369,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20369,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20369,], +["features.home.impl.search_RoomListSearchContent_Day_1_en","features.home.impl.search_RoomListSearchContent_Night_1_en",20371,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20371,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20371,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20371,], ["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",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20369,], -["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20369,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20369,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20369,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20369,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20371,], +["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20371,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20371,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20371,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20371,], ["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,], @@ -1138,14 +1020,14 @@ 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",20369,], -["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20369,], -["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20369,], +["features.home.impl.components_RoomSummaryRow_Day_29_en","features.home.impl.components_RoomSummaryRow_Night_29_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20371,], +["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20371,], ["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,], @@ -1153,80 +1035,80 @@ 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",20369,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20369,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20369,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20371,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20371,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20371,], ["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",20369,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20369,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20369,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20371,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20371,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20371,], ["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","",20369,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20371,], ["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.startchat.impl.components_SearchMultipleUsersResultItem_en","",20369,], -["features.startchat.impl.components_SearchSingleUserResultItem_en","",20369,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20369,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20369,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20369,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20369,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20369,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20369,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20369,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20369,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20369,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20369,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20369,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20369,], +["features.startchat.impl.components_SearchMultipleUsersResultItem_en","",20371,], +["features.startchat.impl.components_SearchSingleUserResultItem_en","",20371,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20371,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20371,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20371,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20371,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20371,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20371,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20371,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20371,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20371,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20371,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20371,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20371,], ["libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en",0,], @@ -1240,11 +1122,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_1_en","libraries.matrix.ui.components_SelectedUser_Night_1_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",20369,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20369,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20369,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20369,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20369,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20371,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20371,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20371,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20371,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20371,], ["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,], @@ -1254,27 +1136,28 @@ 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",20369,], -["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20369,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20369,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20369,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20369,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20369,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20369,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20369,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20371,], +["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20371,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20371,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20371,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20371,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20371,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20371,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20371,], ["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",20369,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20369,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20369,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20369,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20369,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20369,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20369,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20369,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20369,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20369,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20371,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20371,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20371,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20371,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20371,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20371,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20371,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20371,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20371,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20371,], +["libraries.designsystem.components_SimpleModalBottomSheet_Day_0_en","libraries.designsystem.components_SimpleModalBottomSheet_Night_0_en",0,], ["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,], @@ -1283,97 +1166,98 @@ 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",20369,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20371,], ["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,], ["libraries.designsystem.theme.components_SnackbarWithAction_Snackbar_with_action_Snackbars_en","",0,], ["libraries.designsystem.theme.components_Snackbar_Snackbar_Snackbars_en","",0,], -["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20369,], +["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20371,], ["libraries.designsystem.components.avatar.internal_SpaceAvatar_Avatars_en","",0,], -["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20369,], -["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20369,], -["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20369,], +["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20371,], +["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20371,], +["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20371,], ["libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en","libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en",0,], ["libraries.matrix.ui.components_SpaceMembersView_Day_0_en","libraries.matrix.ui.components_SpaceMembersView_Night_0_en",0,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20369,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20369,], -["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20369,], -["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20369,], -["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20369,], -["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20369,], -["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20369,], -["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20369,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20371,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en",20374,], +["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20371,], +["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20371,], +["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20371,], +["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20371,], +["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20371,], +["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20371,], ["libraries.designsystem.modifiers_SquareSizeModifierInsideSquare_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], -["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20369,], -["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20369,], -["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20369,], -["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20369,], -["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20369,], -["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20369,], -["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20369,], +["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20371,], +["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20371,], +["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20371,], +["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20371,], +["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20371,], +["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20371,], +["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20371,], ["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",20369,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20371,], ["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",20369,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20371,], ["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",20369,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20369,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20369,], -["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20369,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20369,], -["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20369,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20369,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20369,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20369,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20369,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20369,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20369,], -["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20369,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20369,], -["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20369,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20371,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20371,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20371,], +["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20371,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20371,], +["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20371,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20371,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20371,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20371,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20371,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20371,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20371,], +["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20371,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20371,], +["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20371,], ["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",20369,], -["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20369,], +["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20371,], +["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20371,], ["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,], @@ -1385,16 +1269,16 @@ 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,], -["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20369,], -["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20369,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20369,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20369,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20369,], +["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20371,], +["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20371,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20371,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20371,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20371,], ["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",20369,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20369,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20371,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20371,], ["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,], @@ -1404,18 +1288,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",20369,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20369,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20371,], ["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,], @@ -1423,18 +1307,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",20369,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20371,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20369,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20371,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20371,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20371,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20371,], ["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,], @@ -1443,41 +1327,41 @@ 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",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20371,], ["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",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20371,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20369,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20371,], ["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","",20369,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20371,], ["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",20369,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20369,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20371,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20371,], ["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",20369,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20369,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20369,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20369,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20371,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20369,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20371,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20371,], ["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",20369,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20371,], ["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,], @@ -1486,8 +1370,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",20369,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20369,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20371,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20371,], ["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,], @@ -1502,8 +1386,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",20369,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20369,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20371,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20371,], ["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,], @@ -1526,85 +1410,85 @@ 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",20369,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20369,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20371,], ["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",20369,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20369,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20369,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20371,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20371,], ["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",20369,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20371,], ["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",20369,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20371,], ["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",20369,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20371,], ["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",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20369,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20369,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20371,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20371,], ["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",20369,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20369,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20369,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20369,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20369,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20369,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20371,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20371,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20371,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20371,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20371,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20371,], ["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","",20369,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20371,], ["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",20369,], -["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20369,], -["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20369,], -["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20369,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20371,], +["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20371,], +["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20371,], +["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20371,], ["features.startchat.impl.components_UserListView_Day_3_en","features.startchat.impl.components_UserListView_Night_3_en",0,], ["features.startchat.impl.components_UserListView_Day_4_en","features.startchat.impl.components_UserListView_Night_4_en",0,], ["features.startchat.impl.components_UserListView_Day_5_en","features.startchat.impl.components_UserListView_Night_5_en",0,], ["features.startchat.impl.components_UserListView_Day_6_en","features.startchat.impl.components_UserListView_Night_6_en",0,], -["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20369,], +["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20371,], ["features.startchat.impl.components_UserListView_Day_8_en","features.startchat.impl.components_UserListView_Night_8_en",0,], -["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20369,], +["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20371,], ["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",20369,], -["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20369,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20369,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20369,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20369,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20369,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20369,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20369,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20369,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20369,], -["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20369,], -["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20369,], +["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20371,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20371,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20371,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20371,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20371,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20371,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20371,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20371,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20371,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20371,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20371,], +["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20371,], ["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,], ["libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en",0,], -["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20369,], -["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20369,], +["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20371,], +["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20371,], ["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",20369,], +["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20371,], ["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,], From cf4e6b512ec6ffcd875911dc3509dc77a30b6a44 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:15:35 +0200 Subject: [PATCH 046/898] fix(deps): update dependency io.github.sergio-sastre.composablepreviewscanner:android to v0.7.1 (#5510) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0cad174a31..e43911faa0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -157,7 +157,7 @@ test_truth = "com.google.truth:truth:1.4.5" test_parameter_injector = "com.google.testparameterinjector:test-parameter-injector:1.19" test_robolectric = "org.robolectric:robolectric:4.15.1" test_appyx_junit = { module = "com.bumble.appyx:testing-junit4", version.ref = "appyx" } -test_composable_preview_scanner = "io.github.sergio-sastre.ComposablePreviewScanner:android:0.7.0" +test_composable_preview_scanner = "io.github.sergio-sastre.ComposablePreviewScanner:android:0.7.1" test_detekt_api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = "detekt" } test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version.ref = "detekt" } From 80ac1dfeea00554086bc23472fe98072bdbd6ec0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:16:15 +0200 Subject: [PATCH 047/898] fix(deps): update camera to v1.5.1 (#5509) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e43911faa0..e2468e31a0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ constraintlayout_compose = "1.1.1" lifecycle = "2.9.2" activity = "1.11.0" media3 = "1.8.0" -camera = "1.5.0" +camera = "1.5.1" # Compose compose_bom = "2025.07.00" From c16903c57c0032b38e4edd3292e17cee15f30569 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 09:25:24 +0200 Subject: [PATCH 048/898] Add exception to Konsist test. --- .../io/element/android/tests/konsist/KonsistClassNameTest.kt | 1 + 1 file changed, 1 insertion(+) 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 234a9c30ff..cbada77805 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 @@ -62,6 +62,7 @@ class KonsistClassNameTest { .withAllParentsOf(PreviewParameterProvider::class) .withoutName( "AspectRatioProvider", + "EditableAvatarViewUriProvider", "LoginModeViewErrorProvider", "OverlapRatioProvider", "TextFileContentProvider", From de99b0c84488e3edf2b46f233fb53317799f2906 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:18:39 +0200 Subject: [PATCH 049/898] chore(deps): update plugin dependencycheck to v12.1.7 (#5518) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e2468e31a0..88776a51d9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -246,7 +246,7 @@ metro = { id = "dev.zacsweers.metro", version.ref = "metro" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } ktlint = "org.jlleitschuh.gradle.ktlint:13.1.0" dependencygraph = "com.savvasdalkitsis.module-dependency-graph:0.12" -dependencycheck = "org.owasp.dependencycheck:12.1.6" +dependencycheck = "org.owasp.dependencycheck:12.1.7" dependencyanalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } paparazzi = "app.cash.paparazzi:2.0.0-alpha02" roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } From ef894806cfe3036cd88cc1b54d27c11823853a20 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:37:23 +0200 Subject: [PATCH 050/898] chore(deps): update plugin licensee to v1.14.1 (#5477) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 88776a51d9..e3e1234707 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -254,6 +254,6 @@ sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } firebaseAppDistribution = { id = "com.google.firebase.appdistribution", version.ref = "firebaseAppDistribution" } knit = { id = "org.jetbrains.kotlinx.knit", version = "0.5.0" } sonarqube = "org.sonarqube:6.3.1.5724" -licensee = "app.cash.licensee:1.13.0" +licensee = "app.cash.licensee:1.14.1" compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } gms_google_services = { id = "com.google.gms.google-services", version = "4.4.3" } From f595985fb5ac916e1fc42835c855131d2b451a69 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:38:10 +0200 Subject: [PATCH 051/898] chore(deps): update dependency python to 3.14 (#5475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/generate_github_pages.yml | 2 +- .github/workflows/quality.yml | 4 ++-- .github/workflows/sync-localazy.yml | 2 +- .github/workflows/sync-sas-strings.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/generate_github_pages.yml b/.github/workflows/generate_github_pages.yml index 0d03d1a928..008ac299c7 100644 --- a/.github/workflows/generate_github_pages.yml +++ b/.github/workflows/generate_github_pages.yml @@ -25,7 +25,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Run World screenshots generation script run: | ./tools/test/generateWorldScreenshots.py diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index b9b9e25071..5277cbdf05 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -37,7 +37,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Search for invalid screenshot files run: ./tools/test/checkInvalidScreenshots.py @@ -58,7 +58,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Search for invalid dependencies run: ./tools/dependencies/checkDependencies.py diff --git a/.github/workflows/sync-localazy.yml b/.github/workflows/sync-localazy.yml index 7740af4064..1f22bf2868 100644 --- a/.github/workflows/sync-localazy.yml +++ b/.github/workflows/sync-localazy.yml @@ -24,7 +24,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Setup Localazy run: | curl -sS https://dist.localazy.com/debian/pubkey.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/localazy.gpg diff --git a/.github/workflows/sync-sas-strings.yml b/.github/workflows/sync-sas-strings.yml index 84b0cb521c..a73592466e 100644 --- a/.github/workflows/sync-sas-strings.yml +++ b/.github/workflows/sync-sas-strings.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Python 3.12 uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Install Prerequisite dependencies run: | pip install requests From 89b819627604bc7ed3a49a13b39f692a6aea566c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:10:39 +0200 Subject: [PATCH 052/898] fix(deps): update metro to v0.6.10 (#5520) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e3e1234707..0b82f98394 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ haze = "1.6.10" dependencyAnalysis = "3.0.4" # DI -metro = "0.6.9" +metro = "0.6.10" # Auto service autoservice = "1.1.1" From ff97722126cbe1a1a736c8c6a67da06beabb920e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:11:14 +0200 Subject: [PATCH 053/898] fix(deps): update dependency org.unifiedpush.android:connector to v3.1.2 (#5519) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0b82f98394..816756a039 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -191,7 +191,7 @@ sqldelight-driver-jvm = { module = "app.cash.sqldelight:sqlite-driver", version. sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqlcipher = "net.zetetic:sqlcipher-android:4.10.0" sqlite = "androidx.sqlite:sqlite-ktx:2.6.1" -unifiedpush = "org.unifiedpush.android:connector:3.1.0" +unifiedpush = "org.unifiedpush.android:connector:3.1.2" vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" telephoto_zoomableimage = { module = "me.saket.telephoto:zoomable-image-coil", version.ref = "telephoto" } telephoto_flick = { module = "me.saket.telephoto:flick-android", version.ref = "telephoto" } From c9fb89eb7a88d25f237b31e23784f3bb618679ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:11:41 +0200 Subject: [PATCH 054/898] chore(deps): update plugin gms_google_services to v4.4.4 (#5507) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 816756a039..06dff8ee75 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -256,4 +256,4 @@ knit = { id = "org.jetbrains.kotlinx.knit", version = "0.5.0" } sonarqube = "org.sonarqube:6.3.1.5724" licensee = "app.cash.licensee:1.14.1" compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } -gms_google_services = { id = "com.google.gms.google-services", version = "4.4.3" } +gms_google_services = { id = "com.google.gms.google-services", version = "4.4.4" } From 764919eac8c75f7bf030e22d38d7f25742673849 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:12:34 +0000 Subject: [PATCH 055/898] fix(deps): update dependency com.google.firebase:firebase-bom to v34.4.0 (#5522) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 06dff8ee75..42ba9684e3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -75,7 +75,7 @@ kotlinpoet-ksp = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlin kover_gradle_plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" } ksp_gradle_plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } # https://firebase.google.com/docs/android/setup#available-libraries -google_firebase_bom = "com.google.firebase:firebase-bom:34.3.0" +google_firebase_bom = "com.google.firebase:firebase-bom:34.4.0" firebase_appdistribution_gradle = { module = "com.google.firebase:firebase-appdistribution-gradle", version.ref = "firebaseAppDistribution" } autonomousapps_dependencyanalysis_plugin = { module = "com.autonomousapps:dependency-analysis-gradle-plugin", version.ref = "dependencyAnalysis" } ksp_plugin = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" } From d551d6fadbbe3a1ed773cc278b6d1d7b58f389b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 10:30:06 +0000 Subject: [PATCH 056/898] fix(deps): update dependency com.squareup.okhttp3:okhttp-bom to v5.2.1 (#5524) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- app/build.gradle.kts | 6 ++++++ gradle/libs.versions.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9be152e9e7..1c7466f680 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -197,6 +197,12 @@ android { buildConfigFieldStr("FLAVOR_DESCRIPTION", "FDroid") } } + + packaging { + resources.pickFirsts += setOf( + "META-INF/versions/9/OSGI-INF/MANIFEST.MF", + ) + } } androidComponents { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 42ba9684e3..091bb12c49 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -135,7 +135,7 @@ accompanist_permission = { module = "com.google.accompanist:accompanist-permissi squareup_seismic = "com.squareup:seismic:1.0.3" # network -network_okhttp_bom = "com.squareup.okhttp3:okhttp-bom:5.1.0" +network_okhttp_bom = "com.squareup.okhttp3:okhttp-bom:5.2.1" network_okhttp_logging = { module = "com.squareup.okhttp3:logging-interceptor" } network_okhttp_okhttp = { module = "com.squareup.okhttp3:okhttp" } network_okhttp = { module = "com.squareup.okhttp3:okhttp" } From eb18590da7ae7861ea10f1d17cb70d76fc9a2a43 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 15:15:38 +0200 Subject: [PATCH 057/898] Let room filters follow the design. Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=2191-606 We cannot change the horizontal padding though, design says it has to be 12dp. Or we need to make our custom component. --- .../home/impl/filters/RoomListFiltersView.kt | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersView.kt index 91b00b1180..58cd985600 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersView.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.CircleShape @@ -34,6 +35,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -48,6 +50,9 @@ import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.testTag +/** + * Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=2191-606 + */ @Composable fun RoomListFiltersView( state: RoomListFiltersState, @@ -143,9 +148,12 @@ private fun RoomListClearFiltersButton( .clip(CircleShape) .background(ElementTheme.colors.bgActionPrimaryRest) .clickable(onClick = onClick) + .padding(4.dp) ) { Icon( - modifier = Modifier.align(Alignment.Center), + modifier = Modifier + .align(Alignment.Center) + .size(16.dp), imageVector = CompoundIcons.Close(), tint = ElementTheme.colors.iconOnSolidPrimary, contentDescription = stringResource(id = R.string.screen_roomlist_clear_filters), @@ -170,21 +178,34 @@ private fun RoomListFilterView( animationSpec = spring(stiffness = Spring.StiffnessMediumLow), label = "chip text colour", ) + val borderColour = animateColorAsState( + targetValue = if (selected) Color.Transparent else ElementTheme.colors.borderInteractiveSecondary, + animationSpec = spring(stiffness = Spring.StiffnessMediumLow), + label = "chip border colour", + ) FilterChip( selected = selected, onClick = { onClick(roomListFilter) }, - modifier = modifier.height(36.dp), + modifier = modifier.height(32.dp), shape = CircleShape, colors = FilterChipDefaults.filterChipColors( containerColor = background.value, selectedContainerColor = background.value, labelColor = textColour.value, - selectedLabelColor = textColour.value + selectedLabelColor = textColour.value, ), label = { - Text(text = stringResource(id = roomListFilter.stringResource)) - } + Text( + text = stringResource(id = roomListFilter.stringResource), + style = ElementTheme.typography.fontBodyMdRegular, + ) + }, + border = FilterChipDefaults.filterChipBorder( + enabled = true, + selected = selected, + borderColor = borderColour.value, + ), ) } @@ -192,6 +213,7 @@ private fun RoomListFilterView( @Composable internal fun RoomListFiltersViewPreview(@PreviewParameter(RoomListFiltersStateProvider::class) state: RoomListFiltersState) = ElementPreview { RoomListFiltersView( + modifier = Modifier.padding(vertical = 4.dp), state = state, ) } From 51fa1a014e164cc7bc1843bb85a82cb8ed3ccedf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:31:20 +0200 Subject: [PATCH 058/898] fix(deps): update dependency net.zetetic:sqlcipher-android to v4.11.0 (#5525) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 091bb12c49..e2826d792c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -189,7 +189,7 @@ matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } sqldelight-driver-jvm = { module = "app.cash.sqldelight:sqlite-driver", version.ref = "sqldelight" } sqldelight-coroutines = { module = "app.cash.sqldelight:coroutines-extensions", version.ref = "sqldelight" } -sqlcipher = "net.zetetic:sqlcipher-android:4.10.0" +sqlcipher = "net.zetetic:sqlcipher-android:4.11.0" sqlite = "androidx.sqlite:sqlite-ktx:2.6.1" unifiedpush = "org.unifiedpush.android:connector:3.1.2" vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" From 985b55db68dcb143300ae70e410f4280f516e370 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:31:58 +0200 Subject: [PATCH 059/898] fix(deps): update dependencyanalysis to v3.1.0 (#5523) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e2826d792c..d02f539ce1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -49,7 +49,7 @@ telephoto = "0.18.0" haze = "1.6.10" # Dependency analysis -dependencyAnalysis = "3.0.4" +dependencyAnalysis = "3.1.0" # DI metro = "0.6.10" From 12fdfe474e174f55d70e1f4d8e8ec386ccb15af8 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 13 Oct 2025 13:32:00 +0000 Subject: [PATCH 060/898] Update screenshots --- ....components_DefaultRoomListTopBarMultiAccount_Day_0_en.png | 4 ++-- ...omponents_DefaultRoomListTopBarMultiAccount_Night_0_en.png | 4 ++-- ...components_DefaultRoomListTopBarWithIndicator_Day_0_en.png | 4 ++-- ...mponents_DefaultRoomListTopBarWithIndicator_Night_0_en.png | 4 ++-- ...es.home.impl.components_DefaultRoomListTopBar_Day_0_en.png | 4 ++-- ....home.impl.components_DefaultRoomListTopBar_Night_0_en.png | 4 ++-- ...eatures.home.impl.filters_RoomListFiltersView_Day_0_en.png | 4 ++-- ...eatures.home.impl.filters_RoomListFiltersView_Day_1_en.png | 4 ++-- ...tures.home.impl.filters_RoomListFiltersView_Night_0_en.png | 4 ++-- ...tures.home.impl.filters_RoomListFiltersView_Night_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeViewA11y_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_0_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_13_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_14_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_2_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_3_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_5_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_6_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_7_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_8_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_9_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_0_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_13_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_14_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_1_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_2_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_3_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_5_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_6_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_7_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_8_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_9_en.png | 4 ++-- 33 files changed, 66 insertions(+), 66 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png index 0893c1898d..15ab073e13 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03c8caa1e34ae21b40e3caf4ba811a9d4d46ee5ec2d22d6e0297c527e8311297 -size 26167 +oid sha256:b9595d23fae3fb23bf1a893744c3e28f99b163091d374dabd65d24dbde69af6c +size 25617 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png index 6dc86a0486..90f15ceeb4 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3e9cc7b076dfba2e977bd9b4b07a556d27f7587e81f199ee5424c39f4683f79 -size 23673 +oid sha256:fd357c3f6b143b3dcc4f8a23cd0c8e34b801709630a2c31406b4563e928f64ed +size 22757 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png index 6c862e6b69..b8f5d9ceaf 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b850d625de1abbe020e1aade5f854af6d91f543ff6f46d859cd6c37db350e96 -size 26508 +oid sha256:b9b7f028749ba909fbeb0c8c2a81ccc6337b3f9c7a8af20e5492c938b1ac8d7a +size 25962 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png index 0ff257aa28..c40bee2a47 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3420f8cb3bd5d33d5cae776e57cfcaf496d2e0d26037029380e9171bad2ea177 -size 24034 +oid sha256:13b6b3cd99a2561e5116c5dd9950fdb1db61cf3a5a83014c67900bc455f0b53c +size 23171 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png index 35767dbd17..30af422f38 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efb9a3d83c703a3222b25a4f5f577a29ceafb749afa8e8901050590beb164bc3 -size 26258 +oid sha256:9c8add737c25478dc3be8fc638661fb03be922702136d4ae83bfcfca4287e5c1 +size 25709 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png index 48538f8efa..0a5780528e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebfd6e53dde99f12ce1817a15f6f6112c478095eb3a4d3c8ec4397a8118d389b -size 23736 +oid sha256:9b330c24f0a118665aa3f6eb68b2573deed4167cd3ddbbbe08eed8ddc27c639d +size 22814 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_0_en.png index f9af594888..691461753c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23e4d2f712ba17e2c7e015c3b5c31992c16abd0edb02b54bfb63724c4b62792a -size 14030 +oid sha256:630596148bba4f160f99b691885a7b3387110f875f92071f20f9f02836009252 +size 13393 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png index cfbfbd0a05..6b48b2c056 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d9f89148d3d67c91d8375088e3774dfa01e9d90acc9334725baf7c8aa2ae5fd -size 12195 +oid sha256:3cfd337f819250d81d93a10d62f857469f4b32de8ea9c92ad317b14dfd623c11 +size 12108 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_0_en.png index e5c76b1a86..e2044e1952 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8557515b328ac70ba0c0a7336990a8496c7c110fd71d22a2c347d2f59b4fb188 -size 13521 +oid sha256:34eb5ac6367a76db546eeac3ac7b197eb9cb153e8b6186af5c3839a5ffeab6b5 +size 12634 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png index 2c15e1bf2c..345ee4c489 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.filters_RoomListFiltersView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9aa41ea9aae055f81f29189960e5c9ee7b394b3f2b27c5c8bb59fa5a74737171 -size 11793 +oid sha256:ea1b84b720e246f5f4dff5193f72b32fea3060cc1dfffeaba95ba3cd7c975140 +size 11699 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png index ff8012533c..f12d71d438 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2e52e92c69be9d083d6d55e03a7f2ae2176517ba913bd285903cea9a83fe63c -size 126094 +oid sha256:b9d9c029f8aa66d921be752b3bd5c70d00aa80b8dc6fed343a4ab7b9be5a187f +size 125045 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png index 0b457dcabc..ac59c14e46 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 -size 65651 +oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 +size 65098 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png index 07417ab927..b2a4beadee 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8af9abdb9af652dcd100b0919488852158dcd383e1407d6596409c1c595202eb -size 88965 +oid sha256:a1e803f9818ffed85454a4d7c02d2b5fa63e9fc6280c521cddfd8253225ed790 +size 89858 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png index c8d69be6ee..5eae7fb73a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01384a14c49b7e9df154ac56c760e036f050538322c5a0c369e2aa824f28b675 -size 83473 +oid sha256:86eb0a74576e1023a0e79e2c42083efa0ab7e59f57688f431cdb825937106d03 +size 83133 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png index 42dd60ab0e..b5491b11c2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38a30f5099d4990e4172ba7f6831ecfec540abf51608ac1f99c46846190968f3 -size 67672 +oid sha256:bc9668d1caef19e9a4fe76ff4ed0eab8107aa493c3adcaef7ebbbb878925ac62 +size 66408 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png index 0b457dcabc..ac59c14e46 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 -size 65651 +oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 +size 65098 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png index 2aab6c37f3..c1a812a036 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af895f2282acdb069b511110514a258d0579c92280e0c1ea51245b06e903080f -size 62769 +oid sha256:3df1fc44ef9b4c71349aefaa06a09583b25b5baa2765c572fde2579d543c7dc8 +size 62134 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png index 0b457dcabc..ac59c14e46 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:356b69abbb9e002ec0a83180150fb3a04e8afffbd70e8f20f9592c7af83da4f9 -size 65651 +oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 +size 65098 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png index bedf1bbf89..829d5fb8ea 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9a60d84f39fc3ef9d2f195bba774eec69029a65e362b4d626fdf7777ef87d4a -size 53308 +oid sha256:e609fcb03b38d2265b91f6cccbd91092b050c34f979116a20e1d2f72c9fb7d9c +size 52933 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png index 62871d6ba7..d42fa336b1 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a4e4134b94e49fa3d13869d61b9a5d8636532ab24ede12b7ebb8ee39fd2e86c -size 53119 +oid sha256:58536ac6068bce6399048fb5a082791ce4d2d74dc9e39d96e6483c818067a3b1 +size 52741 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png index 4df5d25fab..31c77b66df 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6956c433583232ff3ce3b3801d93bd2f6887722238ae909136aa59e3123be368 -size 51330 +oid sha256:a5eb9e2d9245b31509ecd22351cc11b6d5fe27dcad76ab1eab36d692cf0fed2b +size 50942 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png index 6845fffef2..2b7d7164d1 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:988b2f85ee11077fdf3e1640010ede4f2af05fa22c000ab01560082f4a3c1cde -size 83310 +oid sha256:a6c524b3c587eea43d5d753757fe42434ee751709559851ec9e0ca283c6f2236 +size 82960 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png index 239fc64c8d..56b6111cb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 -size 61105 +oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 +size 60213 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png index d0a8f10fc5..393f5a9b3f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5fe9b4c81283662333aa5660f0c3f07e6209107ad591154841e2d6b4d55677e -size 83852 +oid sha256:3911b9f33b862f1fa47ac80420f1ded92d8c7c304a0b0af8c7132033eca63da1 +size 84486 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png index e14744683d..f06871dfc0 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c6e83649d247f1ce450600a4875487079910810196a4f6e0e82703bfb04223b -size 78585 +oid sha256:58917137b3500639edcd3308f665cb9111450bf0c34fe07880076f43725ae145 +size 78202 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png index 09b66c14dc..ea4098d13d 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6917011813550fb50229e6d8326110aa1eccc7b2891f13b26ef29afd79e72916 -size 63088 +oid sha256:5bfc8aff1305c39b400c95831a6b07f00c376c328b3ad2281cf4b6b74970f67c +size 61538 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png index 239fc64c8d..56b6111cb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 -size 61105 +oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 +size 60213 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png index d17ac93bf7..92e4d51300 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b65c77c82e2a175dc73c87b119a0defe9e0d44b71e6f6abf5f39a1edd0f6a82 -size 58825 +oid sha256:494864f07f4ca2ef426f611842f580fa6d2c5d04c61385acd649e50ee49e9405 +size 58119 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png index 239fc64c8d..56b6111cb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c45c3c1366669137741bad749c2a7bdd7e17df74f791c7a1e1328ce33c97aea8 -size 61105 +oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 +size 60213 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png index 12050c9414..6560e328e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4484aa90c69fb2b8e15a0ab79ec6d8268dc1f9c53f60f483aa9da971b03d0614 -size 50523 +oid sha256:0493d1a09ba7d41e0ef0b66ef4068528af281cfaa9f7187d64d17316ca97d2fd +size 50038 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png index 4bf6ba684f..1985857a9b 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ede57bbda30891887e319e3021e93b4ace769fe4ece5881a11def1007691ecf -size 50366 +oid sha256:4215bf2ac9870ec1d6f3832adc8e8bfd2ce4d1ab2c1ef5584a0a934e880969be +size 49887 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png index 6e6850d915..779db27242 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc60a51acd5b968a67901550ab52df73a8ac9d99609a3a09361b19fe1c25d767 -size 48574 +oid sha256:9977db4bcc333f7fa0f662e8cc73170fe96a90bcb545f5471cb6e107f159f943 +size 48083 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png index 9383197705..77001db565 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3cd78e49e05786a2063cf41faaade789fa3e7da2b1ac693e1f9bf6ad606745d -size 78531 +oid sha256:21cbfa635df606c3fa17345a1ad1055e47f2265b059cb10580dfc464c694870e +size 78085 From 428b65318c7b0228bb7bfa08267b2cfe95e91a4b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:33:26 +0000 Subject: [PATCH 061/898] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.13 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e2826d792c..74045eda92 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -167,7 +167,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.7" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.13" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } From a83630169eddeb650f93b4af19e958e0b57d66e3 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 15:52:06 +0200 Subject: [PATCH 062/898] Fix API break in QrCodeLoginStep. --- .../android/libraries/matrix/api/auth/qrlogin/QrCodeLoginStep.kt | 1 + .../matrix/impl/auth/qrlogin/QrLoginProgressExtensions.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrCodeLoginStep.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrCodeLoginStep.kt index 20b57d2c71..f20ebc5dc8 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrCodeLoginStep.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrCodeLoginStep.kt @@ -12,6 +12,7 @@ sealed interface QrCodeLoginStep { data class EstablishingSecureChannel(val checkCode: String) : QrCodeLoginStep data object Starting : QrCodeLoginStep data class WaitingForToken(val userCode: String) : QrCodeLoginStep + data object SyncingSecrets : QrCodeLoginStep data class Failed(val error: QrLoginException) : QrCodeLoginStep data object Finished : QrCodeLoginStep } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrLoginProgressExtensions.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrLoginProgressExtensions.kt index 6c95f31a9f..0e9d60629f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrLoginProgressExtensions.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrLoginProgressExtensions.kt @@ -15,6 +15,7 @@ fun QrLoginProgress.toStep(): QrCodeLoginStep { is QrLoginProgress.EstablishingSecureChannel -> QrCodeLoginStep.EstablishingSecureChannel(checkCodeString) is QrLoginProgress.Starting -> QrCodeLoginStep.Starting is QrLoginProgress.WaitingForToken -> QrCodeLoginStep.WaitingForToken(userCode) + is QrLoginProgress.SyncingSecrets -> QrCodeLoginStep.SyncingSecrets is QrLoginProgress.Done -> QrCodeLoginStep.Finished } } From 5320bd06c21bef597baa0de3d9d1933e3fd86067 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:06:08 +0200 Subject: [PATCH 063/898] Add some comment --- .../libraries/textcomposer/model/VoiceMessageState.kt | 2 ++ .../libraries/voicerecorder/api/VoiceRecorderState.kt | 9 ++++++--- .../libraries/voicerecorder/impl/DefaultVoiceRecorder.kt | 2 ++ .../voicerecorder/impl/audio/AudioLevelCalculator.kt | 3 +++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt index 8fa0ffbe55..46622ec59f 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/model/VoiceMessageState.kt @@ -21,11 +21,13 @@ sealed interface VoiceMessageState { val showCursor: Boolean, val playbackProgress: Float, val time: Duration, + // Values are between 0 and 1 val waveform: ImmutableList, ) : VoiceMessageState data class Recording( val duration: Duration, + // Values are between 0 and 1 val levels: ImmutableList, ) : VoiceMessageState } diff --git a/libraries/voicerecorder/api/src/main/kotlin/io/element/android/libraries/voicerecorder/api/VoiceRecorderState.kt b/libraries/voicerecorder/api/src/main/kotlin/io/element/android/libraries/voicerecorder/api/VoiceRecorderState.kt index cc4dc0238c..2765e8e832 100644 --- a/libraries/voicerecorder/api/src/main/kotlin/io/element/android/libraries/voicerecorder/api/VoiceRecorderState.kt +++ b/libraries/voicerecorder/api/src/main/kotlin/io/element/android/libraries/voicerecorder/api/VoiceRecorderState.kt @@ -22,16 +22,19 @@ sealed interface VoiceRecorderState { * The recorder is currently recording. * * @property elapsedTime The elapsed time since the recording started. - * @property levels The current audio levels of the recording as a fraction of 1. + * @property levels The current audio levels of the recording as a fraction of 1. All values are between 0 and 1. */ - data class Recording(val elapsedTime: Duration, val levels: List) : VoiceRecorderState + data class Recording( + val elapsedTime: Duration, + val levels: List, + ) : VoiceRecorderState /** * The recorder has finished recording. * * @property file The recorded file. * @property mimeType The mime type of the file. - * @property waveform The waveform of the recording. + * @property waveform The waveform of the recording. All values are between 0 and 1. * @property duration The total time spent recording. */ data class Finished( diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt index 624282edef..b4d48e1d14 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt @@ -63,6 +63,8 @@ class DefaultVoiceRecorder( private var outputFile: File? = null private var audioReader: AudioReader? = null private var recordingJob: Job? = null + + // List of Float between 0 and 1 representing the audio levels private val levels: MutableList = mutableListOf() private val lock = Mutex() diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioLevelCalculator.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioLevelCalculator.kt index d58ca3e4e2..64c0fc9ddb 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioLevelCalculator.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/AudioLevelCalculator.kt @@ -7,6 +7,8 @@ package io.element.android.libraries.voicerecorder.impl.audio +import androidx.annotation.FloatRange + interface AudioLevelCalculator { /** * Calculate the audio level of the audio buffer. @@ -14,5 +16,6 @@ interface AudioLevelCalculator { * @param buffer The audio buffer containing 16bit PCM audio data. * @return A float value between 0 and 1 proportional to the audio level. */ + @FloatRange(from = 0.0, to = 1.0) fun calculateAudioLevel(buffer: ShortArray): Float } From 58dc3c7aedc84c01275bba1375b86289cf584575 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:09:46 +0200 Subject: [PATCH 064/898] Fix API break on voice messages. --- .../android/libraries/matrix/impl/timeline/RustTimeline.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt index 4c52e78205..ba63cd2ef0 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt @@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.EventOrTransa import io.element.android.libraries.matrix.api.timeline.item.event.InReplyTo import io.element.android.libraries.matrix.impl.media.MediaUploadHandlerImpl import io.element.android.libraries.matrix.impl.media.map -import io.element.android.libraries.matrix.impl.media.toMSC3246range import io.element.android.libraries.matrix.impl.poll.toInner import io.element.android.libraries.matrix.impl.room.RoomContentForwarder import io.element.android.libraries.matrix.impl.room.location.toInner @@ -484,7 +483,7 @@ class RustTimeline( inReplyTo = inReplyToEventId?.value, ), audioInfo = audioInfo.map(), - waveform = waveform.toMSC3246range(), + waveform = waveform, ) } } From e9f80d917a987aabbacd424da0117f715448ab5d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:21:17 +0200 Subject: [PATCH 065/898] Centralize WaveForm samples. --- .../VoiceMessageComposerStateProvider.kt | 6 +-- .../components/media/WaveFormSamples.kt | 26 +++++++++++ .../components/media/WaveformPlaybackView.kt | 46 +------------------ .../impl/gallery/MediaGalleryStateProvider.kt | 4 +- .../local/audio/MediaInfoAudioProvider.kt | 4 +- .../impl/model/MediaItemFactories.kt | 4 +- .../impl/viewer/MediaViewerStateProvider.kt | 4 +- 7 files changed, 38 insertions(+), 56 deletions(-) create mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt index b418b08726..aaba414b79 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt @@ -8,15 +8,15 @@ package io.element.android.features.messages.api.timeline.voicemessages.composer import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.textcomposer.model.VoiceMessageState -import kotlinx.collections.immutable.toImmutableList import kotlin.time.Duration.Companion.seconds open class VoiceMessageComposerStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( - aVoiceMessageComposerState(voiceMessageState = VoiceMessageState.Recording(duration = 61.seconds, levels = aWaveformLevels)), + aVoiceMessageComposerState(voiceMessageState = VoiceMessageState.Recording(duration = 61.seconds, levels = WaveFormSamples.allRangeWaveForm)), ) } @@ -41,5 +41,3 @@ fun aVoiceMessagePreviewState() = VoiceMessageState.Preview( time = 10.seconds, waveform = createFakeWaveform(), ) - -internal var aWaveformLevels = List(100) { it.toFloat() / 100 }.toImmutableList() diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt new file mode 100644 index 0000000000..7185dba072 --- /dev/null +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt @@ -0,0 +1,26 @@ +/* + * 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.designsystem.components.media + +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList + +object WaveFormSamples { + val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList() + + val realisticWaveForm = persistentListOf( + 0.000f, 0.000f, 0.000f, 0.003f, 0.354f, + 0.353f, 0.365f, 0.790f, 0.787f, 0.167f, + 0.333f, 0.975f, 0.000f, 0.102f, 0.003f, + 0.531f, 0.584f, 0.317f, 0.140f, 0.475f, + 0.496f, 0.561f, 0.042f, 0.263f, 0.169f, + 0.829f, 0.349f, 0.010f, 0.000f, 0.000f, + 1.000f, 0.334f, 0.321f, 0.011f, 0.000f, + 0.000f, 0.003f, + ) +} diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt index 5fe722d447..7a3c273084 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt @@ -187,14 +187,14 @@ internal fun WaveformPlaybackViewPreview() = ElementPreview { showCursor = false, playbackProgress = 0.5f, onSeek = {}, - waveform = aWaveForm().toImmutableList(), + waveform = WaveFormSamples.realisticWaveForm, ) WaveformPlaybackView( modifier = Modifier.height(34.dp), showCursor = true, playbackProgress = 0.5f, onSeek = {}, - waveform = List(1024) { it / 1024f }.toImmutableList(), + waveform = WaveFormSamples.allRangeWaveForm, ) } } @@ -217,45 +217,3 @@ private fun ImmutableList.normalisedData(maxSamplesCount: Int): Immutable return result.toImmutableList() } - -fun aWaveForm(): List { - return listOf( - 0.000f, - 0.000f, - 0.000f, - 0.003f, - 0.354f, - 0.353f, - 0.365f, - 0.790f, - 0.787f, - 0.167f, - 0.333f, - 0.975f, - 0.000f, - 0.102f, - 0.003f, - 0.531f, - 0.584f, - 0.317f, - 0.140f, - 0.475f, - 0.496f, - 0.561f, - 0.042f, - 0.263f, - 0.169f, - 0.829f, - 0.349f, - 0.010f, - 0.000f, - 0.000f, - 1.000f, - 0.334f, - 0.321f, - 0.011f, - 0.000f, - 0.000f, - 0.003f, - ) -} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt index aedea1eb75..22a312bb05 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryStateProvider.kt @@ -9,7 +9,7 @@ package io.element.android.libraries.mediaviewer.impl.gallery import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncData -import io.element.android.libraries.designsystem.components.media.aWaveForm +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.matrix.api.core.UniqueId import io.element.android.libraries.mediaviewer.impl.details.MediaBottomSheetState import io.element.android.libraries.mediaviewer.impl.details.aMediaDetailsBottomSheetState @@ -71,7 +71,7 @@ open class MediaGalleryStateProvider : PreviewParameterProvider { get() = sequenceOf( anAudioMediaInfo(), anAudioMediaInfo( - waveForm = aWaveForm(), + waveForm = WaveFormSamples.realisticWaveForm, ), ) } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/model/MediaItemFactories.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/model/MediaItemFactories.kt index b04973322a..6854954601 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/model/MediaItemFactories.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/model/MediaItemFactories.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.mediaviewer.impl.model -import io.element.android.libraries.designsystem.components.media.aWaveForm +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UniqueId import io.element.android.libraries.matrix.api.core.UserId @@ -91,7 +91,7 @@ fun aMediaItemVoice( filename: String = "filename.ogg", caption: String? = null, duration: String? = "1:23", - waveform: List = aWaveForm(), + waveform: List = WaveFormSamples.realisticWaveForm, ): MediaItem.Voice { return MediaItem.Voice( id = id, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerStateProvider.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerStateProvider.kt index 05a55b4e5f..09e71c7fc4 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerStateProvider.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerStateProvider.kt @@ -11,7 +11,7 @@ import android.net.Uri import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncData -import io.element.android.libraries.designsystem.components.media.aWaveForm +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.timeline.Timeline @@ -138,7 +138,7 @@ open class MediaViewerStateProvider : PreviewParameterProvider mediaBottomSheetState = aMediaDeleteConfirmationState(), ), anAudioMediaInfo( - waveForm = aWaveForm(), + waveForm = WaveFormSamples.realisticWaveForm, ).let { aMediaViewerState( listOf( From 93ae7941a4e639f06acc561bfbfb12e05cc49219 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:24:16 +0200 Subject: [PATCH 066/898] Update comment. `createFakeWaveform` will be removed. --- .../designsystem/components/media/WaveformPlaybackView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt index 7a3c273084..496286fffa 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveformPlaybackView.kt @@ -49,7 +49,7 @@ private const val DEFAULT_GRAPHICS_LAYER_ALPHA: Float = 0.99F * * @param playbackProgress The current playback progress, between 0 and 1. * @param showCursor Whether to show the cursor or not. - * @param waveform The waveform to display. Use [createFakeWaveform] to generate a fake waveform. + * @param waveform The waveform to display. * @param onSeek Callback when the user seeks the waveform. Called with a value between 0 and 1. * @param modifier The modifier to be applied to the view. * @param seekEnabled Whether the user can seek the waveform or not. From 90cd52b5d53790c4da5efa292edb60fed17eaa76 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:28:20 +0200 Subject: [PATCH 067/898] Let the preview provider use stable data. I do not get why the generated screenshot was always similar. --- .../VoiceMessageComposerStateProvider.kt | 3 +- .../components/media/WaveFormSamples.kt | 3 ++ .../libraries/textcomposer/TextComposer.kt | 30 +++++++++++-------- .../components/VoiceMessagePreview.kt | 16 ++++++---- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt index aaba414b79..f089af2dd3 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/timeline/voicemessages/composer/VoiceMessageComposerStateProvider.kt @@ -9,7 +9,6 @@ package io.element.android.features.messages.api.timeline.voicemessages.composer import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.designsystem.components.media.WaveFormSamples -import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.textcomposer.model.VoiceMessageState import kotlin.time.Duration.Companion.seconds @@ -39,5 +38,5 @@ fun aVoiceMessagePreviewState() = VoiceMessageState.Preview( showCursor = false, playbackProgress = 0f, time = 10.seconds, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt index 7185dba072..6fbb217392 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.designsystem.components.media import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.toPersistentList object WaveFormSamples { val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList() @@ -23,4 +24,6 @@ object WaveFormSamples { 1.000f, 0.334f, 0.321f, 0.011f, 0.000f, 0.000f, 0.003f, ) + + val longRealisticWaveForm = List(4) { realisticWaveForm }.flatten().toPersistentList() } diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt index 1126a39466..e1a72e04ca 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt @@ -52,7 +52,7 @@ import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.androidutils.ui.showKeyboard -import io.element.android.libraries.designsystem.components.media.createFakeWaveform +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.designsystem.preview.DAY_MODE_NAME import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.NIGHT_MODE_NAME @@ -808,30 +808,33 @@ internal fun TextComposerCaptionPreview() = ElementPreview { internal fun TextComposerVoicePreview() = ElementPreview { PreviewColumn( items = persistentListOf( - VoiceMessageState.Recording(61.seconds, createFakeWaveform()), + VoiceMessageState.Recording( + duration = 61.seconds, + levels = WaveFormSamples.realisticWaveForm, + ), VoiceMessageState.Preview( isSending = false, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 0.seconds, - playbackProgress = 0.0f + playbackProgress = 0.0f, ), VoiceMessageState.Preview( isSending = false, isPlaying = true, showCursor = true, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 3.seconds, - playbackProgress = 0.2f + playbackProgress = 0.2f, ), VoiceMessageState.Preview( isSending = true, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 61.seconds, - playbackProgress = 0.0f + playbackProgress = 0.0f, ), ) ) { voiceMessageState -> @@ -848,12 +851,15 @@ internal fun TextComposerVoicePreview() = ElementPreview { internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { PreviewColumn( items = persistentListOf( - VoiceMessageState.Recording(61.seconds, createFakeWaveform()), + VoiceMessageState.Recording( + duration = 61.seconds, + levels = WaveFormSamples.realisticWaveForm, + ), VoiceMessageState.Preview( isSending = false, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 0.seconds, playbackProgress = 0.0f ), @@ -861,7 +867,7 @@ internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { isSending = false, isPlaying = true, showCursor = true, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 3.seconds, playbackProgress = 0.2f ), @@ -869,7 +875,7 @@ internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview { isSending = true, isPlaying = false, showCursor = false, - waveform = createFakeWaveform(), + waveform = WaveFormSamples.realisticWaveForm, time = 61.seconds, playbackProgress = 0.0f ), diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt index d965a3d0d6..fbe45866c9 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/VoiceMessagePreview.kt @@ -29,8 +29,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.designsystem.components.media.WaveformPlaybackView -import io.element.android.libraries.designsystem.components.media.createFakeWaveform import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon @@ -138,14 +138,18 @@ private fun PlayerButton( private fun PauseIcon() = Icon( imageVector = CompoundIcons.PauseSolid(), contentDescription = stringResource(id = CommonStrings.a11y_pause), - modifier = Modifier.size(20.dp).padding(2.dp), + modifier = Modifier + .size(20.dp) + .padding(2.dp), ) @Composable private fun PlayIcon() = Icon( imageVector = CompoundIcons.PlaySolid(), contentDescription = stringResource(id = CommonStrings.a11y_play), - modifier = Modifier.size(20.dp).padding(2.dp), + modifier = Modifier + .size(20.dp) + .padding(2.dp), ) @PreviewsDayNight @@ -160,7 +164,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 2.seconds, playbackProgress = 0.2f, showCursor = true, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) AVoiceMessagePreview( isInteractive = true, @@ -168,7 +172,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 0.seconds, playbackProgress = 0.0f, showCursor = true, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) AVoiceMessagePreview( isInteractive = false, @@ -176,7 +180,7 @@ internal fun VoiceMessagePreviewPreview() = ElementPreview { time = 789.seconds, playbackProgress = 0.0f, showCursor = false, - waveform = createFakeWaveform() + waveform = WaveFormSamples.longRealisticWaveForm, ) } } From 901685471cd98c87643444ce6a10fd295eacb2a8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 13 Oct 2025 16:42:54 +0200 Subject: [PATCH 068/898] Let the test use sample data. --- .../components/media/FakeWaveformFactory.kt | 25 ------------------- .../SingleMediaGalleryDataSourceTest.kt | 4 +-- 2 files changed, 2 insertions(+), 27 deletions(-) delete mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/FakeWaveformFactory.kt diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/FakeWaveformFactory.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/FakeWaveformFactory.kt deleted file mode 100644 index 3264f55754..0000000000 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/FakeWaveformFactory.kt +++ /dev/null @@ -1,25 +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.libraries.designsystem.components.media - -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList -import kotlin.random.Random - -/** - * Generate a waveform for testing purposes. - * - * The waveform is a list of floats between 0 and 1. - * - * @param length The length of the waveform. - */ -fun createFakeWaveform(length: Int = 1000): ImmutableList { - val random = Random(seed = 2) - return List(length) { random.nextFloat() } - .toImmutableList() -} diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSourceTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSourceTest.kt index c80aa15428..1b70d8b6ce 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSourceTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSourceTest.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.mediaviewer.impl.viewer import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.libraries.architecture.AsyncData -import io.element.android.libraries.designsystem.components.media.createFakeWaveform +import io.element.android.libraries.designsystem.components.media.WaveFormSamples import io.element.android.libraries.matrix.api.core.UniqueId import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.test.AN_EVENT_ID @@ -128,7 +128,7 @@ class SingleMediaGalleryDataSourceTest { fun `createFrom should create a SingleMediaGalleryDataSource with a voice item`() { testFactory( mediaInfo = aVoiceMediaInfo( - waveForm = createFakeWaveform(), + waveForm = WaveFormSamples.longRealisticWaveForm, duration = "12:34", ), expectedResult = { params -> From 5dcae950511e07d60118e89c4e613378e33994cc Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 13 Oct 2025 15:31:09 +0000 Subject: [PATCH 069/898] Update screenshots --- .../images/features.messages.impl_MessagesView_Day_7_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_7_en.png | 4 ++-- ...nsystem.components.media_WaveformPlaybackView_Day_0_en.png | 4 ++-- ...ystem.components.media_WaveformPlaybackView_Night_0_en.png | 4 ++-- ...ibraries.textcomposer.components_VoiceMessage_Day_0_en.png | 4 ++-- ...raries.textcomposer.components_VoiceMessage_Night_0_en.png | 4 ++-- ...es.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png | 4 ++-- ....textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png | 4 ++-- .../libraries.textcomposer_TextComposerVoice_Day_0_en.png | 4 ++-- .../libraries.textcomposer_TextComposerVoice_Night_0_en.png | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png index 571a7c532a..e2c39da845 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d80066ecad50390fbd0529d4e0f25462ac91d9e168817ecfdbf472129b95410 -size 50641 +oid sha256:ac595ce33affb3eec6c465fd68ab1fa57eb942f58944cc16e5e01892a21ba4a7 +size 50323 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png index a564e03041..4db80abcb1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d90b319d5b4fd3ec77fdfe15bed786e5acbc66b86da83f24efce313eb8d178b -size 44750 +oid sha256:72023d9b9eaade788d33ef6c123a89edc079c4cc543421c256676b75fba6adc1 +size 44505 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en.png index b54f89bef8..7d68bb0570 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f162675e687af3aa9c352cdf7ae177f4760d1ce008cd217641b6722a71d34d49 -size 10271 +oid sha256:837bb03b66cccdfebb039b36da1096589da31e898de36975e413782349896ba0 +size 10167 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en.png index 6690e37706..3a689c5959 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.media_WaveformPlaybackView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30328b9c5a43508d135d086fcbafe5ad5cf9989e208f8f25b1450e61df08994e -size 9549 +oid sha256:091bd502d78b80633e267670e2cfdde1696f22d26b9b729d8e33d6d33b8e6d58 +size 9469 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png index 8bf9395609..600ad51b94 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ed72cd85cc94390214b721b26229c8784174c54fb2a58eb1cc01431e6c57898 -size 20699 +oid sha256:45422a841a79f4236a56a72773cfe8485e267f345abb03c2b376b3307e430fab +size 18537 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png index f584255fa6..4b14520d95 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer.components_VoiceMessage_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea8534fe10a038e86e9c9c572391f29c1241fc77a1ce93c549bf6350f48c01bb -size 19500 +oid sha256:dedaa24fb05db78c0b9d4c2357c5c76ac181365c09f6e6b666387112f7962a4a +size 17424 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png index be74924cc6..186753469b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2429482b11d6a507830a38c9bf483687d2d6b4c9e33ee2ad063d2fb6199e0f44 -size 37673 +oid sha256:98dbb0ac81d2079ac41f107b78e6fb7ccbf1f53fcd9e95e8716fb05ca1b14ea3 +size 36091 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png index 8f6d149a61..bb102c7bcb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fdc8ba783be4355b0a436473082151225811652c2b03cb11c19c26bca0e2ac7 -size 35756 +oid sha256:c454bf724b6875610870eec156f0c544e84baf9c6e9a755b965f692f498a1b1e +size 34222 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png index 0dda2f3ca1..24be8a7dbc 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9477cd51e70796a6e3d1eeaad1270db5c37ae40f0cfffea38f8d09f8f743b266 -size 26488 +oid sha256:274f54991bbd79c4220d945964caf7fc523ce99a70b748ef992cc15ee030fdf5 +size 25124 diff --git a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png index 1f50879399..433550b84b 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.textcomposer_TextComposerVoice_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f891e663e2d8649629ef9fe5c4f79a71ad5304fdc1b450946ddd6975237eb329 -size 25502 +oid sha256:258643d514aeb7a53788ba2addc53fe46f888193ced2970c73887f9eb1584753 +size 24039 From 38ef6eb40ba8d0a1fc261ee9d17f87752ecc9fe0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 14 Oct 2025 09:49:20 +0200 Subject: [PATCH 070/898] Add number of accounts info in the rageshake data. --- .../impl/reporter/DefaultBugReporter.kt | 2 + .../impl/reporter/DefaultBugReporterTest.kt | 71 ++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 5787939688..ba3af00a2f 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -153,6 +153,7 @@ class DefaultBugReporter( } } val sessionData = sessionStore.getLatestSession() + val numberOfAccounts = sessionStore.getAllSessions().size val deviceId = sessionData?.deviceId ?: "undefined" val userId = sessionData?.userId?.let { UserId(it) } // build the multi part request @@ -161,6 +162,7 @@ class DefaultBugReporter( .addFormDataPart("app", RageshakeConfig.BUG_REPORT_APP_NAME) .addFormDataPart("user_agent", userAgentProvider.provide()) .addFormDataPart("user_id", userId?.toString() ?: "undefined") + .addFormDataPart("number_of_accounts", numberOfAccounts.toString()) .addFormDataPart("can_contact", canContact.toString()) .addFormDataPart("device_id", deviceId) .addFormDataPart("device", Build.MODEL.trim()) diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt index ecb8d13b12..1bca9d021f 100755 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt @@ -18,6 +18,8 @@ import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.api.tracing.TracingService import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration +import io.element.android.libraries.matrix.test.A_DEVICE_ID +import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.FakeSdkMetadata @@ -147,6 +149,72 @@ class DefaultBugReporterTest { assertThat(foundValues["device_id"]).isEqualTo("ABCDEFGH") assertThat(foundValues["sdk_sha"]).isEqualTo("123456789") assertThat(foundValues["user_id"]).isEqualTo("@foo:example.com") + assertThat(foundValues["number_of_accounts"]).isEqualTo("1") + assertThat(foundValues["text"]).isEqualTo("a bug occurred") + assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY") + + // device_key now added given they are not null + assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 1) + + server.shutdown() + } + + @Test + fun `test sendBugReport multi accounts`() = runTest { + val server = MockWebServer() + server.enqueue( + MockResponse() + .setResponseCode(200) + ) + server.start() + + val mockSessionStore = InMemorySessionStore( + initialList = listOf( + aSessionData(sessionId = "@foo:example.com", deviceId = "ABCDEFGH"), + aSessionData(sessionId = A_USER_ID.value, deviceId = A_DEVICE_ID.value), + ) + ) + + val fakeEncryptionService = FakeEncryptionService() + val matrixClient = FakeMatrixClient(encryptionService = fakeEncryptionService) + + fakeEncryptionService.givenDeviceKeys("CURVECURVECURVE", "EDKEYEDKEYEDKY") + val sut = createDefaultBugReporter( + server = server, + crashDataStore = FakeCrashDataStore(), + sessionStore = mockSessionStore, + matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }) + ) + + val progressValues = mutableListOf() + sut.sendBugReport( + withDevicesLogs = true, + withCrashLogs = true, + withScreenshot = true, + problemDescription = "a bug occurred", + canContact = true, + listener = object : BugReporterListener { + override fun onUploadCancelled() {} + + override fun onUploadFailed(reason: String?) {} + + override fun onProgress(progress: Int) { + progressValues.add(progress) + } + + override fun onUploadSucceed() {} + }, + ) + val request = server.takeRequest() + + val foundValues = collectValuesFromFormData(request) + + assertThat(foundValues["app"]).isEqualTo(RageshakeConfig.BUG_REPORT_APP_NAME) + assertThat(foundValues["can_contact"]).isEqualTo("true") + assertThat(foundValues["device_id"]).isEqualTo("ABCDEFGH") + assertThat(foundValues["sdk_sha"]).isEqualTo("123456789") + assertThat(foundValues["user_id"]).isEqualTo("@foo:example.com") + assertThat(foundValues["number_of_accounts"]).isEqualTo("2") assertThat(foundValues["text"]).isEqualTo("a bug occurred") assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY") @@ -228,6 +296,7 @@ class DefaultBugReporterTest { assertThat(foundValues["device_keys"]).isNull() assertThat(foundValues["device_id"]).isEqualTo("undefined") assertThat(foundValues["user_id"]).isEqualTo("undefined") + assertThat(foundValues["number_of_accounts"]).isEqualTo("0") assertThat(foundValues["label"]).isEqualTo("crash") } @@ -474,6 +543,6 @@ class DefaultBugReporterTest { } companion object { - private const val EXPECTED_NUMBER_OF_PROGRESS_VALUE = 17 + private const val EXPECTED_NUMBER_OF_PROGRESS_VALUE = 18 } } From e850c7f1f38e83b4bacecf339d8eea1fb3228322 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:28:11 +0200 Subject: [PATCH 071/898] chore(deps): update plugin dependencycheck to v12.1.8 (#5531) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 05ab27cf19..e8ba007008 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -246,7 +246,7 @@ metro = { id = "dev.zacsweers.metro", version.ref = "metro" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } ktlint = "org.jlleitschuh.gradle.ktlint:13.1.0" dependencygraph = "com.savvasdalkitsis.module-dependency-graph:0.12" -dependencycheck = "org.owasp.dependencycheck:12.1.7" +dependencycheck = "org.owasp.dependencycheck:12.1.8" dependencyanalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } paparazzi = "app.cash.paparazzi:2.0.0-alpha02" roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } From 447f6a1b1106e4ea83f49f2489389664ec3bff56 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:31:38 +0200 Subject: [PATCH 072/898] Merge pull request #5533 from element-hq/renovate/rnkdsh-action-upload-diawi-1.x chore(deps): update rnkdsh/action-upload-diawi action to v1.5.12 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb14c3cee6..cf7f262cee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,7 +69,7 @@ jobs: retention-days: 5 overwrite: true if-no-files-found: error - - uses: rnkdsh/action-upload-diawi@26292a7b424bdc9f4ab4ccea6202fc513f571370 # v1.5.11 + - uses: rnkdsh/action-upload-diawi@4e1421305be7cfc510d05f47850262eeaf345108 # v1.5.12 id: diawi # Do not fail the whole build if Diawi upload fails continue-on-error: true From bd177084a5a521570849abc6e7f1d14fb1bfbec4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 14 Oct 2025 14:30:52 +0200 Subject: [PATCH 073/898] Remove comment. Default values will be detected by the existing Konsist test `Data class state MUST not have default value` --- .../screens/changeaccountprovider/ChangeAccountProviderState.kt | 1 - .../screens/chooseaccountprovider/ChooseAccountProviderState.kt | 1 - .../confirmaccountprovider/ConfirmAccountProviderState.kt | 1 - .../screens/searchaccountprovider/SearchAccountProviderState.kt | 1 - .../preferences/impl/analytics/AnalyticsSettingsState.kt | 1 - .../securebackup/impl/enter/SecureBackupEnterRecoveryKeyState.kt | 1 - .../features/securebackup/impl/setup/SecureBackupSetupState.kt | 1 - .../io/element/android/features/signedout/impl/SignedOutState.kt | 1 - .../fileTemplates/Template Presentation Classes.kt.child.3.kt | 1 - 9 files changed, 9 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt index f6f62eca01..4cd939824e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderState.kt @@ -11,7 +11,6 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.changeserver.ChangeServerState import kotlinx.collections.immutable.ImmutableList -// Do not use default value, so no member get forgotten in the presenters. data class ChangeAccountProviderState( val accountProviders: ImmutableList, val canSearchForAccountProviders: Boolean, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt index ad4677ea24..e7df3256d6 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderState.kt @@ -12,7 +12,6 @@ import io.element.android.features.login.impl.login.LoginMode import io.element.android.libraries.architecture.AsyncData import kotlinx.collections.immutable.ImmutableList -// Do not use default value, so no member get forgotten in the presenters. data class ChooseAccountProviderState( val accountProviders: ImmutableList, val selectedAccountProvider: AccountProvider?, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderState.kt index d0da9ab85e..3bde254432 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderState.kt @@ -11,7 +11,6 @@ import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.login.LoginMode import io.element.android.libraries.architecture.AsyncData -// Do not use default value, so no member get forgotten in the presenters. data class ConfirmAccountProviderState( val accountProvider: AccountProvider, val isAccountCreation: Boolean, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderState.kt index 4fb0a08141..1cb029caae 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderState.kt @@ -11,7 +11,6 @@ import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.features.login.impl.resolver.HomeserverData import io.element.android.libraries.architecture.AsyncData -// Do not use default value, so no member get forgotten in the presenters. data class SearchAccountProviderState( val userInput: String, val userInputResult: AsyncData>, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsState.kt index 7f0cbb4672..1fd15a8e8a 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsState.kt @@ -9,7 +9,6 @@ package io.element.android.features.preferences.impl.analytics import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState -// Do not use default value, so no member get forgotten in the presenters. data class AnalyticsSettingsState( val analyticsPreferencesState: AnalyticsPreferencesState, ) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyState.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyState.kt index 60b73b37a3..aaefd09436 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyState.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyState.kt @@ -10,7 +10,6 @@ package io.element.android.features.securebackup.impl.enter import io.element.android.features.securebackup.impl.setup.views.RecoveryKeyViewState import io.element.android.libraries.architecture.AsyncAction -// Do not use default value, so no member get forgotten in the presenters. data class SecureBackupEnterRecoveryKeyState( val recoveryKeyViewState: RecoveryKeyViewState, val isSubmitEnabled: Boolean, diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupState.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupState.kt index 91f710d07d..7df1bbfa84 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupState.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupState.kt @@ -9,7 +9,6 @@ package io.element.android.features.securebackup.impl.setup import io.element.android.features.securebackup.impl.setup.views.RecoveryKeyViewState -// Do not use default value, so no member get forgotten in the presenters. data class SecureBackupSetupState( val isChangeRecoveryKeyUserStory: Boolean, val recoveryKeyViewState: RecoveryKeyViewState, diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutState.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutState.kt index 725654ca57..b72a20c12f 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutState.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutState.kt @@ -9,7 +9,6 @@ package io.element.android.features.signedout.impl import io.element.android.libraries.sessionstorage.api.SessionData -// Do not use default value, so no member get forgotten in the presenters. data class SignedOutState( val appName: String, val signedOutSession: SessionData?, diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt index 3fcdd7f219..d8b57da6b6 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt @@ -1,7 +1,6 @@ #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end // TODO add your ui models. Remove the eventSink if you don't have events. -// Do not use default value, so no member get forgotten in the presenters. data class ${NAME}State( val eventSink: (${NAME}Events) -> Unit ) From 8b703ed04641d1f8fb6584c45d0ebf81e9569abc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 14 Oct 2025 17:13:05 +0200 Subject: [PATCH 074/898] Let the enterprise build be able to update the colors. --- app/build.gradle.kts | 1 + enterprise | 2 +- features/enterprise/api/build.gradle.kts | 2 +- .../enterprise/api/EnterpriseService.kt | 15 +++++- .../enterprise/impl-foss/build.gradle.kts | 2 +- .../impl/DefaultEnterpriseService.kt | 16 +++++- .../impl/DefaultEnterpriseServiceTest.kt | 31 +++++++++++ .../enterprise/test/FakeEnterpriseService.kt | 17 ++++-- .../timeline/components/TimelineItemRow.kt | 6 +-- features/preferences/impl/build.gradle.kts | 3 ++ .../impl/developer/DeveloperSettingsEvents.kt | 3 ++ .../developer/DeveloperSettingsPresenter.kt | 16 ++++++ .../impl/developer/DeveloperSettingsState.kt | 2 + .../DeveloperSettingsStateProvider.kt | 8 +++ .../impl/developer/DeveloperSettingsView.kt | 32 ++++++++++- .../DeveloperSettingsPresenterTest.kt | 35 ++++++++++++ gradle/libs.versions.toml | 1 + .../androidutils/assets/AssetReader.kt | 54 +++++++++++++++++++ .../designsystem/modifiers/Gradient.kt | 38 +------------ .../designsystem/theme/ElementThemeApp.kt | 4 +- .../tests/konsist/KonsistPreviewTest.kt | 1 - 21 files changed, 234 insertions(+), 55 deletions(-) create mode 100644 libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1c7466f680..2019407657 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -324,6 +324,7 @@ licensee { allowUrl("https://jsoup.org/license") allowUrl("https://asm.ow2.io/license.html") allowUrl("https://www.gnu.org/licenses/agpl-3.0.txt") + allowUrl("https://github.com/mhssn95/compose-color-picker/blob/main/LICENSE") ignoreDependencies("com.github.matrix-org", "matrix-analytics-events") // Ignore dependency that are not third-party licenses to us. ignoreDependencies(groupId = "io.element.android") diff --git a/enterprise b/enterprise index ffc02b8d0f..58f37695d2 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit ffc02b8d0f35188c3ef8a876dc1532bfe3e533da +Subproject commit 58f37695d280da85306973586c43d8d63e1c571c diff --git a/features/enterprise/api/build.gradle.kts b/features/enterprise/api/build.gradle.kts index b32f42e31f..7208c71367 100644 --- a/features/enterprise/api/build.gradle.kts +++ b/features/enterprise/api/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index 03ecda80c0..5e5e45ffb9 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -7,6 +7,8 @@ package io.element.android.features.enterprise.api +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State import io.element.android.compound.tokens.generated.SemanticColors import io.element.android.libraries.matrix.api.core.SessionId import kotlinx.coroutines.flow.Flow @@ -17,8 +19,17 @@ interface EnterpriseService { fun defaultHomeserverList(): List suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String): Boolean - fun semanticColorsLight(): SemanticColors - fun semanticColorsDark(): SemanticColors + /** + * Override the brand color. + * @param brandColor the color in hex format (#RRGGBBAA or #RRGGBB), or null to reset to default. + */ + fun overrideBrandColor(brandColor: String?) + + @Composable + fun semanticColorsLight(): State + + @Composable + fun semanticColorsDark(): State fun firebasePushGateway(): String? fun unifiedPushDefaultPushGateway(): String? diff --git a/features/enterprise/impl-foss/build.gradle.kts b/features/enterprise/impl-foss/build.gradle.kts index c5c194807f..cf3b571be9 100644 --- a/features/enterprise/impl-foss/build.gradle.kts +++ b/features/enterprise/impl-foss/build.gradle.kts @@ -8,7 +8,7 @@ import extension.testCommonDependencies * Please see LICENSE files in the repository root for full details. */ plugins { - id("io.element.android-library") + id("io.element.android-compose-library") } android { diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index 4d52e83a8f..6251a0b4e6 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -7,6 +7,10 @@ package io.element.android.features.enterprise.impl +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.remember import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject @@ -28,9 +32,17 @@ class DefaultEnterpriseService : EnterpriseService { override fun defaultHomeserverList(): List = emptyList() override suspend fun isAllowedToConnectToHomeserver(homeserverUrl: String) = true - override fun semanticColorsLight(): SemanticColors = compoundColorsLight + override fun overrideBrandColor(brandColor: String?) = Unit - override fun semanticColorsDark(): SemanticColors = compoundColorsDark + @Composable + override fun semanticColorsLight(): State { + return remember { derivedStateOf { compoundColorsLight } } + } + + @Composable + override fun semanticColorsDark(): State { + return remember { derivedStateOf { compoundColorsDark } } + } override fun firebasePushGateway(): String? = null override fun unifiedPushDefaultPushGateway(): String? = null diff --git a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt index 9f3ebbb845..d3a4a63ad1 100644 --- a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt +++ b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt @@ -7,7 +7,12 @@ package io.element.android.features.enterprise.impl +import app.cash.molecule.RecompositionMode +import app.cash.molecule.moleculeFlow +import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.compound.tokens.generated.compoundColorsDark +import io.element.android.compound.tokens.generated.compoundColorsLight import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.A_SESSION_ID import kotlinx.coroutines.test.runTest @@ -37,4 +42,30 @@ class DefaultEnterpriseServiceTest { val defaultEnterpriseService = DefaultEnterpriseService() assertThat(defaultEnterpriseService.isEnterpriseUser(A_SESSION_ID)).isFalse() } + + @Test + fun `semanticColorsLight always emits the same value`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + moleculeFlow(RecompositionMode.Immediate) { + defaultEnterpriseService.semanticColorsLight().value + }.test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo(compoundColorsLight) + defaultEnterpriseService.overrideBrandColor("#87654321") + expectNoEvents() + } + } + + @Test + fun `semanticColorsDark always emits the same value`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + moleculeFlow(RecompositionMode.Immediate) { + defaultEnterpriseService.semanticColorsDark().value + }.test { + val initialState = awaitItem() + assertThat(initialState).isEqualTo(compoundColorsDark) + defaultEnterpriseService.overrideBrandColor("#87654321") + expectNoEvents() + } + } } diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 30ccc4c48d..f2e597c6fa 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -7,6 +7,8 @@ package io.element.android.features.enterprise.test +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State import io.element.android.compound.tokens.generated.SemanticColors import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService @@ -22,8 +24,9 @@ class FakeEnterpriseService( private val isEnterpriseUserResult: (SessionId) -> Boolean = { lambdaError() }, private val defaultHomeserverListResult: () -> List = { emptyList() }, private val isAllowedToConnectToHomeserverResult: (String) -> Boolean = { lambdaError() }, - private val semanticColorsLightResult: () -> SemanticColors = { lambdaError() }, - private val semanticColorsDarkResult: () -> SemanticColors = { lambdaError() }, + private val semanticColorsLightResult: () -> State = { lambdaError() }, + private val semanticColorsDarkResult: () -> State = { lambdaError() }, + private val overrideBrandColorResult: (String?) -> Unit = { lambdaError() }, private val firebasePushGatewayResult: () -> String? = { lambdaError() }, private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() }, ) : EnterpriseService { @@ -39,11 +42,17 @@ class FakeEnterpriseService( isAllowedToConnectToHomeserverResult(homeserverUrl) } - override fun semanticColorsLight(): SemanticColors { + override fun overrideBrandColor(brandColor: String?) { + overrideBrandColorResult(brandColor) + } + + @Composable + override fun semanticColorsLight(): State { return semanticColorsLightResult() } - override fun semanticColorsDark(): SemanticColors { + @Composable + override fun semanticColorsDark(): State { return semanticColorsDarkResult() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt index 119a235cf8..09332ef5c3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt @@ -37,8 +37,8 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt import io.element.android.features.messages.impl.timeline.model.event.TimelineItemVoiceContent import io.element.android.features.messages.impl.timeline.protection.TimelineProtectionEvent import io.element.android.features.messages.impl.timeline.protection.TimelineProtectionState +import io.element.android.libraries.designsystem.colors.gradientSubtleColors import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenuAction -import io.element.android.libraries.designsystem.modifiers.subtleColorStops import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.text.toPx @@ -227,12 +227,12 @@ private fun Modifier.focusedEvent( } else { ElementTheme.colors.borderAccentSubtle } - val gradientColors = subtleColorStops(isEnterpriseBuild) + val gradientColors = gradientSubtleColors() val verticalOffset = focusedEventOffset.toPx() val verticalRatio = 0.7f return drawWithCache { val brush = Brush.verticalGradient( - colorStops = gradientColors, + colors = gradientColors, endY = size.height * verticalRatio, ) onDrawBehind { diff --git a/features/preferences/impl/build.gradle.kts b/features/preferences/impl/build.gradle.kts index eb057a9d53..6858ebef51 100644 --- a/features/preferences/impl/build.gradle.kts +++ b/features/preferences/impl/build.gradle.kts @@ -72,6 +72,7 @@ dependencies { implementation(projects.features.rageshake.api) implementation(projects.features.lockscreen.api) implementation(projects.features.analytics.api) + implementation(projects.features.enterprise.api) implementation(projects.features.licenses.api) implementation(projects.features.logout.api) implementation(projects.features.deactivation.api) @@ -83,6 +84,7 @@ dependencies { implementation(projects.services.toolbox.api) implementation(libs.datetime) implementation(libs.coil.compose) + implementation(libs.color.picker) implementation(libs.androidx.browser) implementation(libs.androidx.datastore.preferences) api(projects.features.preferences.api) @@ -100,6 +102,7 @@ dependencies { testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.push.test) testImplementation(projects.libraries.pushstore.test) + testImplementation(projects.features.enterprise.test) testImplementation(projects.features.invite.test) testImplementation(projects.features.rageshake.test) testImplementation(projects.features.logout.test) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt index ced7b8d2b4..cb7a9f5de6 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt @@ -7,6 +7,7 @@ package io.element.android.features.preferences.impl.developer +import androidx.compose.ui.graphics.Color import io.element.android.features.preferences.impl.developer.tracing.LogLevelItem import io.element.android.libraries.featureflag.ui.model.FeatureUiModel import io.element.android.libraries.matrix.api.tracing.TraceLogPack @@ -16,5 +17,7 @@ sealed interface DeveloperSettingsEvents { data class SetCustomElementCallBaseUrl(val baseUrl: String?) : DeveloperSettingsEvents data class SetTracingLogLevel(val logLevel: LogLevelItem) : DeveloperSettingsEvents data class ToggleTracingLogPack(val logPack: TraceLogPack, val enabled: Boolean) : DeveloperSettingsEvents + data class SetShowColorPicker(val show: Boolean) : DeveloperSettingsEvents + data class ChangeBrandColor(val color: Color) : DeveloperSettingsEvents data object ClearCache : DeveloperSettingsEvents } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index fe7a3461b8..cf2147f5bc 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -18,8 +18,10 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshots.SnapshotStateMap import dev.zacsweers.metro.Inject +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.preferences.impl.developer.tracing.toLogLevel import io.element.android.features.preferences.impl.developer.tracing.toLogLevelItem import io.element.android.features.preferences.impl.tasks.ClearCacheUseCase @@ -54,6 +56,7 @@ class DeveloperSettingsPresenter( private val rageshakePresenter: Presenter, private val appPreferencesStore: AppPreferencesStore, private val buildMeta: BuildMeta, + private val enterpriseService: EnterpriseService, ) : Presenter { @Composable override fun present(): DeveloperSettingsState { @@ -71,6 +74,9 @@ class DeveloperSettingsPresenter( val clearCacheAction = remember { mutableStateOf>(AsyncAction.Uninitialized) } + var showColorPicker by remember { + mutableStateOf(false) + } val customElementCallBaseUrl by remember { appPreferencesStore .getCustomElementCallBaseUrlFlow() @@ -136,6 +142,14 @@ class DeveloperSettingsPresenter( } appPreferencesStore.setTracingLogPacks(currentPacks) } + is DeveloperSettingsEvents.ChangeBrandColor -> { + showColorPicker = false + val color = event.color.value.toHexString(HexFormat.UpperCase).substring(2, 8) + enterpriseService.overrideBrandColor(color) + } + is DeveloperSettingsEvents.SetShowColorPicker -> { + showColorPicker = event.show + } } } @@ -150,6 +164,8 @@ class DeveloperSettingsPresenter( ), tracingLogLevel = tracingLogLevel, tracingLogPacks = tracingLogPacks, + isEnterpriseBuild = enterpriseService.isEnterpriseBuild, + showColorPicker = showColorPicker, eventSink = ::handleEvents ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt index 93e7b9ae7b..389297a46b 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt @@ -23,6 +23,8 @@ data class DeveloperSettingsState( val customElementCallBaseUrlState: CustomElementCallBaseUrlState, val tracingLogLevel: AsyncData, val tracingLogPacks: ImmutableList, + val isEnterpriseBuild: Boolean, + val showColorPicker: Boolean, val eventSink: (DeveloperSettingsEvents) -> Unit ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt index 6ccd857552..e6803d4149 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt @@ -28,6 +28,10 @@ open class DeveloperSettingsStateProvider : PreviewParameterProvider = AsyncAction.Uninitialized, customElementCallBaseUrlState: CustomElementCallBaseUrlState = aCustomElementCallBaseUrlState(), traceLogPacks: List = emptyList(), + isEnterpriseBuild: Boolean = false, + showColorPicker: Boolean = false, eventSink: (DeveloperSettingsEvents) -> Unit = {}, ) = DeveloperSettingsState( features = aFeatureUiModelList(), @@ -44,6 +50,8 @@ fun aDeveloperSettingsState( customElementCallBaseUrlState = customElementCallBaseUrlState, tracingLogLevel = AsyncData.Success(LogLevelItem.INFO), tracingLogPacks = traceLogPacks.toImmutableList(), + isEnterpriseBuild = isEnterpriseBuild, + showColorPicker = showColorPicker, eventSink = eventSink, ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index 97f08f7a16..bfea30d2b4 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.progressSemantics import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.runtime.Composable +import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType @@ -36,8 +37,11 @@ import io.element.android.libraries.featureflag.ui.FeatureListView import io.element.android.libraries.featureflag.ui.model.FeatureUiModel import io.element.android.libraries.matrix.api.tracing.TraceLogPack import io.element.android.libraries.ui.strings.CommonStrings +import io.mhssn.colorpicker.ColorPickerDialog +import io.mhssn.colorpicker.ColorPickerType import kotlinx.collections.immutable.toImmutableList +@OptIn(ExperimentalComposeUiApi::class) @Composable fun DeveloperSettingsView( state: DeveloperSettingsState, @@ -99,6 +103,18 @@ fun DeveloperSettingsView( RageshakePreferencesView( state = state.rageshakeState, ) + if (state.isEnterpriseBuild) { + PreferenceCategory(title = "Theme", showTopDivider = false) { + ListItem( + headlineContent = { + Text("Change brand color") + }, + onClick = { + state.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true)) + } + ) + } + } PreferenceCategory(title = "Crash", showTopDivider = false) { ListItem( headlineContent = { @@ -133,6 +149,18 @@ fun DeveloperSettingsView( ) } } + ColorPickerDialog( + show = state.showColorPicker, + type = ColorPickerType.Classic( + showAlphaBar = false, + ), + onDismissRequest = { + state.eventSink(DeveloperSettingsEvents.SetShowColorPicker(false)) + }, + onPickedColor = { + state.eventSink(DeveloperSettingsEvents.ChangeBrandColor(it)) + }, + ) } @Composable @@ -189,7 +217,9 @@ private fun FeatureListContent( @PreviewsDayNight @Composable -internal fun DeveloperSettingsViewPreview(@PreviewParameter(DeveloperSettingsStateProvider::class) state: DeveloperSettingsState) = ElementPreview { +internal fun DeveloperSettingsViewPreview( + @PreviewParameter(DeveloperSettingsStateProvider::class) state: DeveloperSettingsState +) = ElementPreview { DeveloperSettingsView( state = state, onOpenShowkase = {}, diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt index 76b22871f0..6761a37fc6 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt @@ -9,7 +9,10 @@ package io.element.android.features.preferences.impl.developer +import androidx.compose.ui.graphics.Color import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.preferences.impl.developer.tracing.LogLevelItem import io.element.android.features.preferences.impl.tasks.FakeClearCacheUseCase import io.element.android.features.preferences.impl.tasks.FakeComputeCacheSizeUseCase @@ -24,6 +27,8 @@ import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.lambda.lambdaRecorder +import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest @@ -57,6 +62,8 @@ class DeveloperSettingsPresenterTest { assertThat(state.rageshakeState.isSupported).isTrue() assertThat(state.rageshakeState.sensitivity).isEqualTo(0.3f) assertThat(state.tracingLogLevel).isEqualTo(AsyncData.Uninitialized) + assertThat(state.isEnterpriseBuild).isFalse() + assertThat(state.showColorPicker).isFalse() } awaitItem().also { state -> assertThat(state.features).isNotEmpty() @@ -170,6 +177,32 @@ class DeveloperSettingsPresenterTest { } } + @Test + fun `present - enterprise build can change the brand color`() = runTest { + val overrideBrandColorResult = lambdaRecorder { } + val presenter = createDeveloperSettingsPresenter( + enterpriseService = FakeEnterpriseService( + isEnterpriseBuild = true, + overrideBrandColorResult = overrideBrandColorResult, + ) + ) + presenter.test { + skipItems(1) + val initialState = awaitItem() + assertThat(initialState.isEnterpriseBuild).isTrue() + initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true)) + assertThat(awaitItem().showColorPicker).isTrue() + initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(false)) + assertThat(awaitItem().showColorPicker).isFalse() + initialState.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true)) + assertThat(awaitItem().showColorPicker).isTrue() + initialState.eventSink(DeveloperSettingsEvents.ChangeBrandColor(Color.Green)) + assertThat(awaitItem().showColorPicker).isFalse() + overrideBrandColorResult.assertions().isCalledOnce() + .with(value("00FF00")) + } + } + @Test fun `present - won't display features in labs or finished`() = runTest { val availableFeatures = listOf( @@ -219,6 +252,7 @@ class DeveloperSettingsPresenterTest { clearCacheUseCase: FakeClearCacheUseCase = FakeClearCacheUseCase(), preferencesStore: InMemoryAppPreferencesStore = InMemoryAppPreferencesStore(), buildMeta: BuildMeta = aBuildMeta(), + enterpriseService: EnterpriseService = FakeEnterpriseService(), ): DeveloperSettingsPresenter { return DeveloperSettingsPresenter( featureFlagService = featureFlagService, @@ -227,6 +261,7 @@ class DeveloperSettingsPresenterTest { rageshakePresenter = { aRageshakePreferencesState() }, appPreferencesStore = preferencesStore, buildMeta = buildMeta, + enterpriseService = enterpriseService, ) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8ba007008..e4e713dca9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -203,6 +203,7 @@ opusencoder = "io.element.android:opusencoder:1.2.0" zxing_cpp = "io.github.zxing-cpp:android:2.3.0" haze = { module = "dev.chrisbanes.haze:haze", version.ref = "haze" } haze_materials = { module = "dev.chrisbanes.haze:haze-materials", version.ref = "haze" } +color_picker = "io.mhssn:colorpicker:1.0.0" # Analytics posthog = "com.posthog:posthog-android:3.23.0" diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt new file mode 100644 index 0000000000..5de329a754 --- /dev/null +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt @@ -0,0 +1,54 @@ +/* + * 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.androidutils.assets + +import android.content.Context +import dev.zacsweers.metro.Inject +import io.element.android.libraries.di.annotations.ApplicationContext +import timber.log.Timber +import java.util.concurrent.ConcurrentHashMap + +/** + * Read asset files. + */ +@Inject +class AssetReader( + @ApplicationContext private val context: Context, +) { + private val cache = ConcurrentHashMap() + + /** + * Read an asset from resource and return a String or null in case of error. + * + * @param assetFilename Asset filename + * @return the content of the asset file, or null in case of error + */ + fun readAssetFile(assetFilename: String): String? { + return cache.getOrPut(assetFilename, { + return try { + context.assets.open(assetFilename) + .use { asset -> + buildString { + var ch = asset.read() + while (ch != -1) { + append(ch.toChar()) + ch = asset.read() + } + } + } + } catch (e: Exception) { + Timber.e(e, "## readAssetFile() failed") + null + } + }) + } + + fun clearCache() { + cache.clear() + } +} diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt index 5d6f91e4b4..462588403c 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Gradient.kt @@ -15,13 +15,10 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.colors.gradientSubtleColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.theme.LocalBuildMeta /** * Ref: https://www.figma.com/design/kcnHxunG1LDWXsJhaNuiHz/ER-145--Workspaces-V1?node-id=1141-24692 @@ -30,35 +27,15 @@ import io.element.android.libraries.designsystem.theme.LocalBuildMeta @Composable fun Modifier.backgroundVerticalGradient( isVisible: Boolean = true, - isEnterpriseBuild: Boolean = LocalBuildMeta.current.isEnterpriseBuild, ): Modifier { if (!isVisible) return this return background( brush = Brush.verticalGradient( - colorStops = subtleColorStops(isEnterpriseBuild), + colors = gradientSubtleColors(), ), ) } -@Composable -fun subtleColorStops( - isEnterpriseBuild: Boolean = LocalBuildMeta.current.isEnterpriseBuild, -): Array> { - return buildList { - if (isEnterpriseBuild) { - // For enterprise builds, ensure that we are theming the gradient - add(0f to ElementTheme.colors.textActionAccent.copy(alpha = 0.5f)) - add(0.75f to ElementTheme.colors.bgCanvasDefault) - add(1f to Color.Transparent) - } else { - val colors = gradientSubtleColors() - colors.forEachIndexed { index, color -> - add(index.toFloat() / (colors.size - 1) to color) - } - } - }.toTypedArray() -} - @PreviewsDayNight @Composable internal fun BackgroundVerticalGradientPreview() = ElementPreview { @@ -70,19 +47,6 @@ internal fun BackgroundVerticalGradientPreview() = ElementPreview { ) } -@PreviewsDayNight -@Composable -internal fun BackgroundVerticalGradientEnterprisePreview() = ElementPreview { - Box( - modifier = Modifier - .fillMaxWidth() - .height(height = 100.dp) - .backgroundVerticalGradient( - isEnterpriseBuild = true, - ) - ) -} - @PreviewsDayNight @Composable internal fun BackgroundVerticalGradientDisabledPreview() = ElementPreview { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt index bb0fcd971b..78d02c7f17 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt @@ -70,8 +70,8 @@ fun ElementThemeApp( } ) } - val compoundLight = remember { enterpriseService.semanticColorsLight() } - val compoundDark = remember { enterpriseService.semanticColorsDark() } + val compoundLight by enterpriseService.semanticColorsLight() + val compoundDark by enterpriseService.semanticColorsDark() CompositionLocalProvider( LocalBuildMeta provides buildMeta, ) { diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index 082a106be2..bf41ce7933 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -79,7 +79,6 @@ class KonsistPreviewTest { "AsyncIndicatorFailurePreview", "AsyncIndicatorLoadingPreview", "BackgroundVerticalGradientDisabledPreview", - "BackgroundVerticalGradientEnterprisePreview", "BackgroundVerticalGradientPreview", "ColorAliasesPreview", "DefaultRoomListTopBarMultiAccountPreview", From 7410efb593dac04094e8966cd8cf15a08010cfda Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 15 Oct 2025 11:28:55 +0200 Subject: [PATCH 075/898] design(space): match figma for Space views --- .../home/impl/spaces/HomeSpacesView.kt | 4 + .../features/space/impl/root/SpaceView.kt | 4 + .../matrix/ui/components/SpaceRoomItemView.kt | 113 ++++++++++-------- 3 files changed, 72 insertions(+), 49 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt index b18e732b42..66e5403b35 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.ui.components.SpaceHeaderRootView @@ -47,6 +48,9 @@ fun HomeSpacesView( ) } } + item { + HorizontalDivider() + } state.spaceRooms.forEach { spaceRoom -> item(spaceRoom.roomId) { val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index 46c6a10e57..cd722ac6f3 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -49,6 +49,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.DropdownMenu import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem +import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Scaffold @@ -177,6 +178,9 @@ private fun SpaceViewContent( onTopicClick = onTopicClick ) } + item { + HorizontalDivider() + } } state.children.forEach { spaceRoom -> item { diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt index 5a9c49ceb9..90ed843483 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.matrix.ui.components import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.IntrinsicSize @@ -42,6 +43,7 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenuAction import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.unreadIndicator @@ -56,6 +58,9 @@ import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList +/** + * Figma reference: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=3643-2079&m=dev + */ @Composable fun SpaceRoomItemView( spaceRoom: SpaceRoom, @@ -67,43 +72,65 @@ fun SpaceRoomItemView( trailingAction: @Composable (() -> Unit)? = null, bottomAction: @Composable (() -> Unit)? = null, ) { - SpaceRoomItemScaffold( - modifier = modifier, - avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), - isSpace = spaceRoom.isSpace, - hideAvatars = hideAvatars, - heroes = spaceRoom.heroes - .map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) } - .toImmutableList(), - onClick = onClick, - onLongClick = onLongClick, - trailingAction = trailingAction, - ) { - NameAndIndicatorRow( - name = spaceRoom.displayName, - showIndicator = showUnreadIndicator + val clickModifier = Modifier + .combinedClickable( + onClick = onClick, + onLongClick = onLongClick, + onLongClickLabel = stringResource(CommonStrings.action_open_context_menu), + indication = ripple(), + interactionSource = remember { MutableInteractionSource() } ) - Spacer(modifier = Modifier.height(1.dp)) - SubtitleRow( - visibilityIcon = spaceRoom.visibilityIcon(), - subtitle = spaceRoom.subtitle() + .onKeyboardContextMenuAction { onLongClick } + Box(modifier = modifier.then(clickModifier)) { + Column( + modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), + ) { + SpaceRoomItemScaffold( + avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), + isSpace = spaceRoom.isSpace, + hideAvatars = hideAvatars, + heroes = spaceRoom.heroes + .map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) } + .toImmutableList(), + trailingAction = trailingAction, + ) { + NameAndIndicatorRow( + name = spaceRoom.displayName, + showIndicator = showUnreadIndicator + ) + Spacer(modifier = Modifier.height(1.dp)) + SubtitleRow( + visibilityIcon = spaceRoom.visibilityIcon(), + subtitle = spaceRoom.subtitle() + ) + Spacer(modifier = Modifier.height(1.dp)) + val info = spaceRoom.info() + if (info.isNotBlank()) { + Text( + modifier = Modifier.weight(1f), + style = ElementTheme.typography.fontBodyMdRegular, + text = info, + color = ElementTheme.colors.textSecondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) + } + } + if (bottomAction != null) { + Spacer(modifier = Modifier.height(12.dp)) + // Match the padding of the text content (avatar + spacer) + Box(modifier = Modifier.padding(start = AvatarSize.SpaceListItem.dp + 16.dp)) { + bottomAction() + } + Spacer(modifier = Modifier.height(4.dp)) + } + } + HorizontalDivider( + modifier = Modifier + // Match the padding of the text content (padding + avatar + spacer) + .padding(start = AvatarSize.SpaceListItem.dp + 16.dp + 16.dp) + .align(Alignment.BottomCenter) ) - Spacer(modifier = Modifier.height(1.dp)) - val info = spaceRoom.info() - if (info.isNotBlank()) { - Text( - modifier = Modifier.weight(1f), - style = ElementTheme.typography.fontBodyMdRegular, - text = info, - color = ElementTheme.colors.textSecondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } - if (bottomAction != null) { - Spacer(modifier = Modifier.height(12.dp)) - bottomAction() - } } } @@ -170,28 +197,16 @@ private fun SpaceRoomItemScaffold( avatarData: AvatarData, isSpace: Boolean, heroes: ImmutableList, - onClick: () -> Unit, - onLongClick: () -> Unit, hideAvatars: Boolean, modifier: Modifier = Modifier, trailingAction: @Composable (() -> Unit)? = null, content: @Composable ColumnScope.() -> Unit, ) { - val clickModifier = Modifier - .combinedClickable( - onClick = onClick, - onLongClick = onLongClick, - onLongClickLabel = stringResource(CommonStrings.action_open_context_menu), - indication = ripple(), - interactionSource = remember { MutableInteractionSource() } - ) - .onKeyboardContextMenuAction { onLongClick } Row( modifier = modifier .fillMaxWidth() - .then(clickModifier) - .padding(horizontal = 16.dp, vertical = 8.dp) .height(IntrinsicSize.Min), + verticalAlignment = Alignment.CenterVertically, ) { Avatar( avatarData = avatarData, @@ -249,7 +264,7 @@ internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomProvider::class hideAvatars = false, onClick = {}, onLongClick = {}, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth().padding(8.dp), bottomAction = if (spaceRoom.state == CurrentUserMembership.INVITED) { { InviteButtonsRowMolecule({}, {}) } } else { From 7491b5479a8c49567a252aecde0500531677c30f Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Wed, 15 Oct 2025 11:45:04 +0200 Subject: [PATCH 076/898] Allow uploading notification push rules in bug reports (#5538) * Allow uploading push rules in bug reports * Improve bug report screen previews * Update screenshots --------- Co-authored-by: ElementBot --- .../rageshake/api/reporter/BugReporter.kt | 2 ++ .../impl/bugreport/BugReportEvents.kt | 1 + .../impl/bugreport/BugReportPresenter.kt | 4 +++ .../impl/bugreport/BugReportState.kt | 6 +++-- .../rageshake/impl/bugreport/BugReportView.kt | 25 ++++++++++++++++--- .../impl/reporter/DefaultBugReporter.kt | 12 +++++++++ .../impl/src/main/res/values/localazy.xml | 2 +- .../impl/bugreport/BugReportPresenterTest.kt | 14 +++++++++++ .../impl/bugreport/FakeBugReporter.kt | 1 + .../impl/reporter/DefaultBugReporterTest.kt | 15 +++++++++-- .../libraries/core/mimetype/MimeTypes.kt | 1 + .../NotificationSettingsService.kt | 1 + .../RustNotificationSettingsService.kt | 4 +++ .../FakeNotificationSettingsService.kt | 6 +++++ ...e.impl.bugreport_BugReportViewDay_0_en.png | 3 +++ ...e.impl.bugreport_BugReportViewDay_1_en.png | 3 +++ ...e.impl.bugreport_BugReportViewDay_2_en.png | 3 +++ ...e.impl.bugreport_BugReportViewDay_3_en.png | 3 +++ ...e.impl.bugreport_BugReportViewDay_4_en.png | 3 +++ ...impl.bugreport_BugReportViewNight_0_en.png | 3 +++ ...impl.bugreport_BugReportViewNight_1_en.png | 3 +++ ...impl.bugreport_BugReportViewNight_2_en.png | 3 +++ ...impl.bugreport_BugReportViewNight_3_en.png | 3 +++ ...impl.bugreport_BugReportViewNight_4_en.png | 3 +++ ....impl.bugreport_BugReportView_Day_0_en.png | 3 --- ....impl.bugreport_BugReportView_Day_1_en.png | 3 --- ....impl.bugreport_BugReportView_Day_2_en.png | 3 --- ....impl.bugreport_BugReportView_Day_3_en.png | 3 --- ....impl.bugreport_BugReportView_Day_4_en.png | 3 --- ...mpl.bugreport_BugReportView_Night_0_en.png | 3 --- ...mpl.bugreport_BugReportView_Night_1_en.png | 3 --- ...mpl.bugreport_BugReportView_Night_2_en.png | 3 --- ...mpl.bugreport_BugReportView_Night_3_en.png | 3 --- ...mpl.bugreport_BugReportView_Night_4_en.png | 3 --- 34 files changed, 116 insertions(+), 38 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_4_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/reporter/BugReporter.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/reporter/BugReporter.kt index bb625370cf..02e53fbb1c 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/reporter/BugReporter.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/reporter/BugReporter.kt @@ -18,6 +18,7 @@ interface BugReporter { * @param withScreenshot true to include the screenshot * @param problemDescription the bug description * @param canContact true if the user opt in to be contacted directly + * @param sendPushRules true to include the push rules * @param listener the listener */ suspend fun sendBugReport( @@ -26,6 +27,7 @@ interface BugReporter { withScreenshot: Boolean, problemDescription: String, canContact: Boolean = false, + sendPushRules: Boolean = false, listener: BugReporterListener ) diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportEvents.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportEvents.kt index fbf2906623..1b0a61e1d5 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportEvents.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportEvents.kt @@ -16,4 +16,5 @@ sealed interface BugReportEvents { data class SetSendLog(val sendLog: Boolean) : BugReportEvents data class SetCanContact(val canContact: Boolean) : BugReportEvents data class SetSendScreenshot(val sendScreenshot: Boolean) : BugReportEvents + data class SetSendPushRules(val sendPushRules: Boolean) : BugReportEvents } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt index 4faef73589..bfcfcf424e 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt @@ -105,6 +105,9 @@ class BugReportPresenter( is BugReportEvents.SetSendScreenshot -> updateFormState(formState) { copy(sendScreenshot = event.sendScreenshot) } + is BugReportEvents.SetSendPushRules -> updateFormState(formState) { + copy(sendPushRules = event.sendPushRules) + } BugReportEvents.ClearError -> { sendingProgress.floatValue = 0f sendingAction.value = AsyncAction.Uninitialized @@ -137,6 +140,7 @@ class BugReportPresenter( withScreenshot = formState.sendScreenshot, problemDescription = formState.description, canContact = formState.canContact, + sendPushRules = formState.sendPushRules, listener = listener ) } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportState.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportState.kt index 8922446329..54b8608add 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportState.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportState.kt @@ -29,14 +29,16 @@ data class BugReportFormState( val description: String, val sendLogs: Boolean, val canContact: Boolean, - val sendScreenshot: Boolean + val sendScreenshot: Boolean, + val sendPushRules: Boolean, ) : Parcelable { companion object { val Default = BugReportFormState( description = "", sendLogs = true, canContact = false, - sendScreenshot = false + sendScreenshot = false, + sendPushRules = false, ) } } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt index 760106b0fb..95dff10804 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportView.kt @@ -7,6 +7,7 @@ package io.element.android.features.rageshake.impl.bugreport +import android.content.res.Configuration import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth @@ -26,6 +27,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import coil3.compose.AsyncImage @@ -40,7 +42,6 @@ import io.element.android.libraries.designsystem.components.preferences.Preferen import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch import io.element.android.libraries.designsystem.modifiers.onTabOrEnterKeyFocusNext import io.element.android.libraries.designsystem.preview.ElementPreview -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text @@ -142,6 +143,13 @@ fun BugReportView( } } } + PreferenceSwitch( + isChecked = state.formState.sendPushRules, + onCheckedChange = { eventSink(BugReportEvents.SetSendPushRules(it)) }, + enabled = isFormEnabled, + title = stringResource(R.string.screen_bug_report_send_notification_settings_title), + subtitle = stringResource(R.string.screen_bug_report_send_notification_settings_description), + ) // Submit PreferenceRow { Button( @@ -174,9 +182,20 @@ fun BugReportView( } } -@PreviewsDayNight +@Preview(heightDp = 1000) @Composable -internal fun BugReportViewPreview(@PreviewParameter(BugReportStateProvider::class) state: BugReportState) = ElementPreview { +internal fun BugReportViewDayPreview(@PreviewParameter(BugReportStateProvider::class) state: BugReportState) = ElementPreview { + BugReportView( + state = state, + onSuccess = {}, + onBackClick = {}, + onViewLogs = {}, + ) +} + +@Preview(heightDp = 1000, uiMode = Configuration.UI_MODE_NIGHT_YES) +@Composable +internal fun BugReportViewNightPreview(@PreviewParameter(BugReportStateProvider::class) state: BugReportState) = ElementPreview { BugReportView( state = state, onSuccess = {}, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 5787939688..a4651cc433 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -44,6 +44,7 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody.Companion.asRequestBody +import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response import org.json.JSONException import org.json.JSONObject @@ -113,6 +114,7 @@ class DefaultBugReporter( withScreenshot: Boolean, problemDescription: String, canContact: Boolean, + sendPushRules: Boolean, listener: BugReporterListener, ) { val url = bugReporterUrlProvider.provide().first() @@ -181,6 +183,16 @@ class DefaultBugReporter( if (curveKey != null && edKey != null) { builder.addFormDataPart("device_keys", "curve25519:$curveKey, ed25519:$edKey") } + + if (sendPushRules) { + client.notificationSettingsService.getRawPushRules().getOrNull()?.let { pushRules -> + builder.addFormDataPart( + name = "file", + filename = "push_rules.json", + body = pushRules.toByteArray().toRequestBody(MimeTypes.Json.toMediaTypeOrNull()) + ) + } + } } } if (crashCallStack.isNotEmpty() && withCrashLogs) { diff --git a/features/rageshake/impl/src/main/res/values/localazy.xml b/features/rageshake/impl/src/main/res/values/localazy.xml index f6d93c4114..85af2af4a7 100644 --- a/features/rageshake/impl/src/main/res/values/localazy.xml +++ b/features/rageshake/impl/src/main/res/values/localazy.xml @@ -14,7 +14,7 @@ "Send screenshot" "Logs will be included with your message to make sure that everything is working properly. To send your message without logs, turn off this setting." "%1$s crashed the last time it was used. Would you like to share a crash report with us?" - "If you are having issues with notifications, uploading the notification settings can help us pinpoint the root cause." + "If you are having issues with notifications, uploading the notification push rules can help us pinpoint the root cause. Note these rules can contain private information, such as your display name or keywords to be notified for." "Send notification settings" "View logs" diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt index 362b3798d6..780377025e 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenterTest.kt @@ -106,6 +106,20 @@ class BugReportPresenterTest { } } + @Test + fun `present - send notification settings`() = runTest { + val presenter = createPresenter() + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + initialState.eventSink.invoke(BugReportEvents.SetSendPushRules(true)) + assertThat(awaitItem().formState).isEqualTo(BugReportFormState.Default.copy(sendPushRules = true)) + initialState.eventSink.invoke(BugReportEvents.SetSendPushRules(false)) + assertThat(awaitItem().formState).isEqualTo(BugReportFormState.Default.copy(sendPushRules = false)) + } + } + @Test fun `present - reset all`() = runTest { val presenter = createPresenter( diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt index ebaa524bd5..bd9c538c0d 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/FakeBugReporter.kt @@ -26,6 +26,7 @@ class FakeBugReporter(val mode: Mode = Mode.Success) : BugReporter { withScreenshot: Boolean, problemDescription: String, canContact: Boolean, + sendPushRules: Boolean, listener: BugReporterListener, ) { delay(100) diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt index ecb8d13b12..360b0fbbcb 100755 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt @@ -24,6 +24,7 @@ import io.element.android.libraries.matrix.test.FakeSdkMetadata import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService +import io.element.android.libraries.matrix.test.notificationsettings.FakeNotificationSettingsService import io.element.android.libraries.matrix.test.tracing.FakeTracingService import io.element.android.libraries.network.useragent.DefaultUserAgentProvider import io.element.android.libraries.sessionstorage.api.SessionStore @@ -65,6 +66,7 @@ class DefaultBugReporterTest { withDevicesLogs = true, withCrashLogs = true, withScreenshot = true, + sendPushRules = true, problemDescription = "a bug occurred", canContact = true, listener = object : BugReporterListener { @@ -109,7 +111,12 @@ class DefaultBugReporterTest { ) val fakeEncryptionService = FakeEncryptionService() - val matrixClient = FakeMatrixClient(encryptionService = fakeEncryptionService) + + val fakePushRules = "{ content: ... }" + val fakeNotificationSettingsService = FakeNotificationSettingsService( + getRawPushRulesResult = { Result.success(fakePushRules) } + ) + val matrixClient = FakeMatrixClient(encryptionService = fakeEncryptionService, notificationSettingsService = fakeNotificationSettingsService) fakeEncryptionService.givenDeviceKeys("CURVECURVECURVE", "EDKEYEDKEYEDKY") val sut = createDefaultBugReporter( @@ -124,6 +131,7 @@ class DefaultBugReporterTest { withDevicesLogs = true, withCrashLogs = true, withScreenshot = true, + sendPushRules = true, problemDescription = "a bug occurred", canContact = true, listener = object : BugReporterListener { @@ -149,9 +157,11 @@ class DefaultBugReporterTest { assertThat(foundValues["user_id"]).isEqualTo("@foo:example.com") assertThat(foundValues["text"]).isEqualTo("a bug occurred") assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY") + assertThat(foundValues["file"]).contains(fakePushRules) // device_key now added given they are not null - assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 1) + // so is the push_rules value + assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 2) server.shutdown() } @@ -272,6 +282,7 @@ class DefaultBugReporterTest { withDevicesLogs = true, withCrashLogs = true, withScreenshot = true, + sendPushRules = true, problemDescription = "a bug occurred", canContact = true, listener = object : BugReporterListener { diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt index 357fce2feb..f18702639f 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/mimetype/MimeTypes.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.core.bool.orFalse @Suppress("ktlint:standard:property-naming") object MimeTypes { const val Any: String = "*/*" + const val Json = "application/json" const val OctetStream = "application/octet-stream" const val Apk = "application/vnd.android.package-archive" const val Pdf = "application/pdf" diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt index 703ec1205e..7f8b2e1c1f 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/notificationsettings/NotificationSettingsService.kt @@ -33,4 +33,5 @@ interface NotificationSettingsService { suspend fun setInviteForMeEnabled(enabled: Boolean): Result suspend fun getRoomsWithUserDefinedRules(): Result> suspend fun canHomeServerPushEncryptedEventsToDevice(): Result + suspend fun getRawPushRules(): Result } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt index b4f3e70754..40be78cf31 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsService.kt @@ -139,4 +139,8 @@ class RustNotificationSettingsService( runCatchingExceptions { notificationSettings.await().canPushEncryptedEventToDevice() } + + override suspend fun getRawPushRules(): Result = runCatchingExceptions { + notificationSettings.await().getRawPushRules() + } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt index c5c09981fc..e23ccb30cc 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/notificationsettings/FakeNotificationSettingsService.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationSettings import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_NOTIFICATION_MODE +import io.element.android.tests.testutils.lambda.lambdaError import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow @@ -23,6 +24,7 @@ class FakeNotificationSettingsService( initialEncryptedGroupDefaultMode: RoomNotificationMode = RoomNotificationMode.MENTIONS_AND_KEYWORDS_ONLY, initialOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, initialEncryptedOneToOneDefaultMode: RoomNotificationMode = RoomNotificationMode.ALL_MESSAGES, + private val getRawPushRulesResult: () -> Result = { lambdaError() }, ) : NotificationSettingsService { private val notificationSettingsStateFlow = MutableStateFlow(Unit) private var defaultGroupRoomNotificationMode: RoomNotificationMode = initialGroupDefaultMode @@ -178,4 +180,8 @@ class FakeNotificationSettingsService( fun givenCanHomeServerPushEncryptedEventsToDeviceResult(result: Result) { canHomeServerPushEncryptedEventsToDeviceResult = result } + + override suspend fun getRawPushRules(): Result { + return getRawPushRulesResult() + } } diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_0_en.png new file mode 100644 index 0000000000..df6127b08e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c229f0f963e247de755f45e55432191f88a51ba79baf49f0002c2c12dbdc09e +size 48613 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_1_en.png new file mode 100644 index 0000000000..830b19be50 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf1430985870c99c6e6a2b427257235219250e1c6805bde44de64d1382bd30a +size 113544 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_2_en.png new file mode 100644 index 0000000000..cb45797e1f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc84691892f956b6d282ae5aff0a7ef7900aad754bb7f04e25582c25a256342 +size 45892 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_3_en.png new file mode 100644 index 0000000000..df6127b08e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c229f0f963e247de755f45e55432191f88a51ba79baf49f0002c2c12dbdc09e +size 48613 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_4_en.png new file mode 100644 index 0000000000..625d293aab --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewDay_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a5a053b88110ed76a59a99a199ada720fd7a44ff3b95546c4993ae3d8edddf +size 37496 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_0_en.png new file mode 100644 index 0000000000..d1fe942dc1 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1020f77055e3369f012f73159be9e8c7bf582d4211b3b22f5409ecba46b6898 +size 47180 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_1_en.png new file mode 100644 index 0000000000..fbbcced394 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47c2e74119bd6f2329f15ee3b7dbf0115c69293bd34ed5c2e67de77319b7f820 +size 111436 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_2_en.png new file mode 100644 index 0000000000..b0496a7ccb --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:984d43efa545fb9f104ea6d4eba87e768ade025eee8d1f74260049a64c7e7a7c +size 44401 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_3_en.png new file mode 100644 index 0000000000..d1fe942dc1 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1020f77055e3369f012f73159be9e8c7bf582d4211b3b22f5409ecba46b6898 +size 47180 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_4_en.png new file mode 100644 index 0000000000..c6fed6a85c --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportViewNight_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41c5eb671aaa7c8666942dbc808eb7b03f81cbde98906c5c17cdee61b1d9566b +size 35446 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png deleted file mode 100644 index 98aeade96c..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c56f65335dcc9cda18ed7f647bf1dc9428ee07762ea3d40e7d28731a81ca8f2e -size 69552 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png deleted file mode 100644 index 954d1ed9f9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12d9e6e297bbb3429a4fe6dd3ac16847280e479fe89e96ec78f35159a51d01f0 -size 108813 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png deleted file mode 100644 index 8f24a727e6..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b9e42889c2b31dfee71a644b2da66c0b7cf4f4f475030d7aab3a7d500e7246a -size 66366 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png deleted file mode 100644 index 98aeade96c..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c56f65335dcc9cda18ed7f647bf1dc9428ee07762ea3d40e7d28731a81ca8f2e -size 69552 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png deleted file mode 100644 index a477999b9e..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Day_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57402ade9b70c2124b6764edbaac71d30b89c49eea8175c448cbe7520867a42f -size 49569 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png deleted file mode 100644 index 12f80074b2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38b5fb1099f10dae154270b5df1f52f4018d355d04e0040ba9c06ebe57f259c6 -size 67628 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png deleted file mode 100644 index ff52e5e80b..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a5920a102082f35d0f0a7171687998f568da5e2d68a9f9d9b5884c55c832bd2 -size 106479 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png deleted file mode 100644 index cd533fbb73..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5035c2ffa678e1c761030fbac56dfb3afd043c25a3df0cd6fb7c83b2b311c2ae -size 63678 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png deleted file mode 100644 index 12f80074b2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38b5fb1099f10dae154270b5df1f52f4018d355d04e0040ba9c06ebe57f259c6 -size 67628 diff --git a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png deleted file mode 100644 index d7be6c5994..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.rageshake.impl.bugreport_BugReportView_Night_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:946751ac246e3e833ec39da86b25d80766daed29449b1d0fcebe33c5079b724a -size 46418 From d44ba9fa1a165f5cb62578eff806405656bcd6fa Mon Sep 17 00:00:00 2001 From: ElementBot Date: Wed, 15 Oct 2025 09:50:04 +0000 Subject: [PATCH 077/898] Update screenshots --- .../features.home.impl.spaces_HomeSpacesView_Day_0_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Day_1_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Night_0_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Night_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_4_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_0_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_1_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_2_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_5_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_0_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_1_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_2_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_5_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png | 4 ++-- 36 files changed, 72 insertions(+), 72 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png index 126917cd1d..8bf9eeded7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7300d8335682f4b7b8ccbba229da035cc7146f991a4655a1f12951616871398e -size 88697 +oid sha256:40570506b75d7cb582cee70eb3d6453b673087a17a18d8ef148e3ff5edb6f1b9 +size 89228 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png index cfeda876a9..b61f724c29 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1dc4637d968405a887b8db7087e3286995a0aff30c836d413992c9fff29e97a -size 40929 +oid sha256:491d0d8f7d7e269b13548c48a6eacb8fa4df5e2798aae5b3938e7eb7368ce3f9 +size 41251 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png index 9a0a2cb314..20ce14c682 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9cc67ba23c47728faf5cea8f19fd4e3815721e6b08dd1432b57886efbe12d1e2 -size 86926 +oid sha256:3fb98e398abcb465b94d4138eecbccf076e229cb0807f6543d4f77ebb0353499 +size 87390 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png index 5c819158aa..0192faf169 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46eed87406db894f387b653d32214ac376bd02cabdb200efea268bb2a4ee8240 -size 39837 +oid sha256:3bee6454b9fab1a579e86bece32c0d6134d08fed5a63fecf247a58d7acba142d +size 40125 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png index e5e9cd7d9f..71958573f2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a0fc1b40571d634ccc59e8266861adbaa0e0764c7c625b1352b064d08fd58f2 -size 54916 +oid sha256:08f1583ccded2046d10fd19890bcc70b9fedf0efe310318a6a6209bded37b423 +size 52241 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png index 5d00038e86..e9a3aa0e6e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f188d6dfb2a084f54af9c11385c227c8ef9b923e14c55713d8e5379830a50ec -size 52078 +oid sha256:e3d89f2829ddb05c63da3f4afcadf55e70a8c70b7df46d0e04eba35932fe947d +size 49455 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png index 93b42c769b..8e0e2b04ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:529b87a5fd0acf0fa8dedb0d62fae5e88562fca815ab7137c51009bd32124f9c -size 34574 +oid sha256:ba78cafc20c3d865fec9c7ab92f90e2565f233b224f99fb0665ad0d0c3c2be4e +size 34607 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png index cc51a9c8bb..0e81c563f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cf531dc152a18e417ac79f67c6b696721d4c870e6160f865c681b71f5de81cd -size 34769 +oid sha256:fe62bb5d157ba1b4c7a4e4f443f4b1b3e7d68bc0ac59ce7edb6fbc99e2abbdf7 +size 34795 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png index 29e21fa4d8..e692443bf6 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7387422ae0e659b9133f75307fce76d2eeed7d14c5c13c8263989c6512c87159 -size 35056 +oid sha256:88db0bd5d05963761bd3b3a5a97834f8937a9a0e10723238f2c104c5d03eb81a +size 35089 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png index 6d66e293ff..b6c04763dc 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aaeb807d588360026877dbee0b15373ee3930da71b609bb286c1a2472c0046c0 -size 64629 +oid sha256:0534ab33ee18f03d219eb5b1490d41ccd1e3a4eb6bf734f31383a75110e368b3 +size 63084 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png index 807269a48e..b86ae23e63 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcc29bb9583a195023237b3078aaccb8ed50d4bd81556cfd8f2615cdbf4fb460 -size 65318 +oid sha256:85971dfed5e1cb01f5b04f43cc998d9cb69b6f06a24e3ea28f32c74aa3445e94 +size 63755 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png index 92b1384f80..0a12faa0bd 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff38ad633e2b5124c179502eb747e8fd2571160c7899f4ffde1e80a915972ad9 -size 59721 +oid sha256:3e60857b4c0d801d3a6ad7f7383b8ff8428157763ca46d30c2a559a4957cb71e +size 59706 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png index d50d9aa98b..d27c35077e 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74a676ff3c6dcc32a79c9efbf2e73511a95e1659b60a6c09344cd72606240f0c -size 34024 +oid sha256:53b3736b922b746a996f71aa38b3937ebc16e37eb40bb57cd1991d6f9d98ea33 +size 34022 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png index 337bd83602..2dcc62b1d5 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c983b3fd1d771d3baf38afb9d5d8ea86d13445cce34b29338f256cc97d7ed987 -size 34172 +oid sha256:4f2d6b368d4a8eaa8f3a396ba6edf8252d52b0e7ebd3b3f416c60050d3cd3c57 +size 34170 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png index 55f14f6fb7..bebf4c51f7 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d924b5eede25be4c7854ad6852ebf55b0ea69db70b9fb0815163012f22114da3 -size 34488 +oid sha256:4b0b347f48ac09d05a2348383580d26e3725af2ef48558be86541afa239f3b06 +size 34485 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png index 0bc117076e..f1e6084199 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfd10b73e17028a8d0be148902dac4e37159b3f897fbe1fd058747bc749f4231 -size 63438 +oid sha256:b5e587b7c669fa8fd02b8202318cd405b6fbb3bc91928d56f4bf2ef12f3bbbcc +size 61863 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png index 3bd5af0514..890440ff1b 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d63f62058595f59b3557df4168e8f704ac912e6cbecbc4bbf5f8c58f3e0cb8dd -size 64034 +oid sha256:a25dcf4e97dddb032713e49e13f46836fd541382aad2a9aa9b683dbcfdd93ccc +size 62409 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png index 08c3b84e37..4367883548 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f10de9260c6d376add33518f8703259246663aa42ca6a6f41f080f13fe921b6 -size 57970 +oid sha256:f470577ca0f0de530db1ab0d531f5b14630f9082cc4c34ad4e3fcbc1ab9ee530 +size 57954 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png index b9aa714cd5..cbf7bc5ea6 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a7381573761bc4fe583892044618f58e0ff8aa5a94be09df577b1fd5d63fbd8 -size 16499 +oid sha256:ed823d5ab8f1e0b1af536c240b2d50ba741de64d443e54d998a4e2d02e373e05 +size 16202 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png index b3fab27ef0..8dfa3132e2 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c30ba9f665b153c5cae97e54a1bedad4f24640e2333b691d713727bf09ea262 -size 13075 +oid sha256:026c69cb2b201c1d753cd6197cdc124e208a3d3c9290d40e4de840ba0ac41cc0 +size 13054 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png index fa3190596a..0f72c0ecfd 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddcf8583e7c5bc93f3d71887960d4db21a57d1b9e0422f80965ddc353fadc0cd -size 8939 +oid sha256:0da8a3a836e8b3eebb48d00fa2b5080caf80a32579d775bebd7564a525423460 +size 9019 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png index f87479e24a..8fd804cdb1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:113450a4368f63f9839e27d884a8e170bde2cec2fbc483376393d7717ca0cebc -size 23564 +oid sha256:a8b5298b33db0c0e74c6a786598b1826767f5ba3bcf9187846b5b9332b81a3e3 +size 23146 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png index 3fcc4e2c51..1a7bf98e7c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:960c8e7d357885e40d8bda33cf87042091d1a42ac5010e7096edddb2e18605ce -size 17933 +oid sha256:7607784f41e0e7f6b4b1b4c983ed59aa466b01dd388a149b070a0540f6493d7f +size 18065 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png index 6de015ea4d..886a3cbb51 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db4c97fc50d11736276735af850d4416e32831ce69d7501442b23fc9e9799510 -size 13538 +oid sha256:d234be8428b62e19b4192a17f1c9c21eeee25c7fc683f1597631b0599fc34b32 +size 13625 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png index 6b084d8231..3ec3a1ec64 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bee6de2e44a69fdd6ebf0cff2b9dfb6871bbd4373d4e1fd0f7365a8af6a27960 -size 33646 +oid sha256:a725468cea9dfbf210d7367277b3a4d30438caf4ace60304e9942e4509c71972 +size 34014 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png index 410857803c..182ebc51a3 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eece85ade6f98c31df6ebed9c20db694cf75f525668c8a838b1ab100364838d -size 38571 +oid sha256:3c325ae3939648b0684e3ce2105e46445359748bf5d765593fa5eaca5d7e7082 +size 38852 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png index ef920b87bf..3d321a6803 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:225368f5fd5948bf823d7ddaf712ed65f16170de8de76d01c3d733ed3595429b -size 11012 +oid sha256:82ea9e352708d800c28d2651220294c1a12bd09b98cda6676a14680c337f3b6e +size 11094 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png index 65aaf60f62..272b05e17c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78bd541a6e71205688c8b323812e9c2880821ea2adef232db513548b8ee05a24 -size 15995 +oid sha256:85f42e6853aac517879a0d0379e655c7a23526e8e8a44f5c806323239df65639 +size 15810 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png index 993a63ba9e..3d058f4aee 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeae2ab8fcfc3a73b23d288f721edf0aeb23ee75fec0a1cd8b8e69b5529f11ad -size 12623 +oid sha256:288b0d6fbce8b5e90bca734635705217c01bbb2e82f516d66cd0d0cb5f854f94 +size 12568 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png index 44335fef01..8573a7aee5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3322f5cf8324a7dced0615fd76d26bef157432a7b1ab43d7e2be3760a821bed -size 9158 +oid sha256:0f931739c849cb283722149f9d89286633d7321d78b013281bb3333ae6af9cfd +size 9122 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png index 60fad82a29..c66c02a71d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1084cee1b18ff76198f8c4aaf787f4891df0cdd3b5dc7728707133b1eacea544 -size 22667 +oid sha256:35dcf251e3bb3613c1cf5fcc4bfed6b8bb837dd721404ac80b72d804830cd483 +size 22375 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png index 05ed8ce296..fe91d6ff20 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ca741f017239cac3b27197b72fa545945bde79d5f6216a15a474fed84431f2d -size 17212 +oid sha256:283a7f62058a6f4d29b94a7a0d35b381a3e5038cb59bf545179b807f005aa3dd +size 17240 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png index 0c8229e631..be21386b79 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24e9202a8ae6fbbed41eab7567af08fbc2e3d294afe502b61463791f45d36220 -size 13131 +oid sha256:8fb4b4a6588f44d637f770456ca621e2c47bb9e730a8d24ace74028b74056309 +size 13032 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png index d430cb48f7..6cfb8603b1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4ecdad099df03a2d19a86237d141e8546cfa86cbb8e03c4ace00a06950be6b6 -size 32668 +oid sha256:083774bc84a79daac071eac0fca284ce49af7fb3ae21c141684fb588bd8842ed +size 32868 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png index 91d3115e79..8304ff65d9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7d25a5255487869831f2f2e65b5dc494e381993806b4ced06b0180d905bba09 -size 37334 +oid sha256:4430144e9fb2637619b0fc9cd41ef5a3be7b5a3af7831caaba8bdeb9b96555ae +size 37560 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png index e6086ba1b1..1653879613 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d129cb5ef7a70ebf9b8a724c8bdc77f6f790f40a010e2712d6f5d59bcb0bf82 -size 10781 +oid sha256:e68cc7f49af74626e7019b2a4eeac37877b94f0bcba31a21fa3e20b6fde1244d +size 10724 From 175a9d2b26469711fc98107f4f4c792b8393f17b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 12:08:58 +0200 Subject: [PATCH 078/898] Fix tests. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 58f37695d2..aec257fe69 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 58f37695d280da85306973586c43d8d63e1c571c +Subproject commit aec257fe697d15493bc6b7112b75ddf4b634d3b6 From e74ec97ec0062d8c9ed43a0ecb3d69d0aa79b130 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Wed, 15 Oct 2025 14:07:18 +0200 Subject: [PATCH 079/898] Fix 'test push loop back' notification check (#5541) Include a fake client secret as the HS would do, since it's now mandatory. --- .../push/impl/pushgateway/PushGatewayDevice.kt | 11 ++++++++++- .../push/impl/pushgateway/PushGatewayNotification.kt | 2 +- .../push/impl/pushgateway/PushGatewayNotifyRequest.kt | 7 +++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayDevice.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayDevice.kt index 47ebc2754b..c712a2d24b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayDevice.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayDevice.kt @@ -21,5 +21,14 @@ data class PushGatewayDevice( * Required. The pushkey given when the pusher was created. */ @SerialName("pushkey") - val pushKey: String + val pushKey: String, + /** Optional. Additional pusher data. */ + @SerialName("data") + val data: PusherData? = null, +) + +@Serializable +data class PusherData( + @SerialName("default_payload") + val defaultPayload: Map, ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt index ebbc305a75..0305ebad8b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotification.kt @@ -20,5 +20,5 @@ data class PushGatewayNotification( * Required. This is an array of devices that the notification should be sent to. */ @SerialName("devices") - val devices: List + val devices: List, ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt index 65f5f8a139..907e307184 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt @@ -42,9 +42,12 @@ class DefaultPushGatewayNotifyRequest( devices = listOf( PushGatewayDevice( params.appId, - params.pushKey + params.pushKey, + PusherData(mapOf( + "cs" to "A_FAKE_SECRET", + )) ) - ) + ), ) ) ) From 370300f81055a20ea55d63e867bd99fcbfb7f59e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 14:10:42 +0200 Subject: [PATCH 080/898] Remove custom color for enterprise build. --- .../timeline/components/TimelineItemRow.kt | 23 +------------------ .../tests/konsist/KonsistPreviewTest.kt | 1 - ...onents_FocusedEventEnterprise_Day_0_en.png | 3 --- ...ents_FocusedEventEnterprise_Night_0_en.png | 3 --- 4 files changed, 1 insertion(+), 29 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Night_0_en.png diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt index 09332ef5c3..917ea2eba0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt @@ -42,7 +42,6 @@ import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenu import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.text.toPx -import io.element.android.libraries.designsystem.theme.LocalBuildMeta import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.user.MatrixUser @@ -220,13 +219,8 @@ internal fun TimelineItemRow( @Composable private fun Modifier.focusedEvent( focusedEventOffset: Dp, - isEnterpriseBuild: Boolean = LocalBuildMeta.current.isEnterpriseBuild, ): Modifier { - val highlightedLineColor = if (isEnterpriseBuild) { - ElementTheme.colors.textActionAccent - } else { - ElementTheme.colors.borderAccentSubtle - } + val highlightedLineColor = ElementTheme.colors.borderAccentSubtle val gradientColors = gradientSubtleColors() val verticalOffset = focusedEventOffset.toPx() val verticalRatio = 0.7f @@ -261,18 +255,3 @@ internal fun FocusedEventPreview() = ElementPreview { .focusedEvent(0.dp), ) } - -@PreviewsDayNight -@Composable -internal fun FocusedEventEnterprisePreview() = ElementPreview { - Box( - modifier = Modifier - .padding(16.dp) - .fillMaxWidth() - .height(160.dp) - .focusedEvent( - focusedEventOffset = 0.dp, - isEnterpriseBuild = true, - ), - ) -} diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index bf41ce7933..941fde0124 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -83,7 +83,6 @@ class KonsistPreviewTest { "ColorAliasesPreview", "DefaultRoomListTopBarMultiAccountPreview", "DefaultRoomListTopBarWithIndicatorPreview", - "FocusedEventEnterprisePreview", "FocusedEventPreview", "GradientFloatingActionButtonCircleShapePreview", "HeaderFooterPageScrollablePreview", diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Day_0_en.png deleted file mode 100644 index 581c5d919f..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6349c9b5e5697b05e8c12896cf5e230edfe09330323c4b1658dfd84d3ebdaa38 -size 9664 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Night_0_en.png deleted file mode 100644 index f4cf788891..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl.timeline.components_FocusedEventEnterprise_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34bfc1aa893118f9e5f3da63896fcf85f946f0072c460d7f8a4f1d5722b6ec17 -size 9075 From 452489fbf132f71b15b201a65a01c61b50bb1836 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 14:17:00 +0200 Subject: [PATCH 081/898] GradientFloatingActionButton: use gradientActionColors(). --- .../button/GradientFloatingActionButton.kt | 25 +++---------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/GradientFloatingActionButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/GradientFloatingActionButton.kt index d58e181353..bb6f55b8ef 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/GradientFloatingActionButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/GradientFloatingActionButton.kt @@ -37,12 +37,10 @@ import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.unit.dp import io.element.android.compound.annotations.CoreColorToken -import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons -import io.element.android.compound.tokens.generated.internal.LightColorTokens +import io.element.android.libraries.designsystem.colors.gradientActionColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.theme.LocalBuildMeta import io.element.android.libraries.designsystem.theme.components.Icon @OptIn(CoreColorToken::class) @@ -53,26 +51,14 @@ fun GradientFloatingActionButton( shape: Shape = RoundedCornerShape(25), content: @Composable () -> Unit, ) { - val color1 = if (LocalBuildMeta.current.isEnterpriseBuild) { - ElementTheme.colors.textActionAccent - } else { - LightColorTokens.colorGreen700 - } - val color2 = if (LocalBuildMeta.current.isEnterpriseBuild) { - ElementTheme.colors.textActionAccent - } else { - LightColorTokens.colorBlue900 - } + val colors = gradientActionColors() val linearShaderBrush = remember { object : ShaderBrush() { override fun createShader(size: Size): Shader { return LinearGradientShader( from = Offset(size.width, size.height), to = Offset(size.width, 0f), - colors = listOf( - color2, - color1, - ), + colors = colors, ) } } @@ -83,10 +69,7 @@ fun GradientFloatingActionButton( return RadialGradientShader( center = size.center, radius = size.width / 2, - colors = listOf( - color1, - color2, - ) + colors = colors, ) } } From b1a97e2f23e5262e676e2e0c155404a640d05516 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 14:18:52 +0200 Subject: [PATCH 082/898] SuperButton: always use gradientActionColors(). --- .../designsystem/components/button/SuperButton.kt | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt index 90dd64d59d..d53bf61688 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/button/SuperButton.kt @@ -40,7 +40,6 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.designsystem.colors.gradientActionColors import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.theme.LocalBuildMeta import io.element.android.libraries.designsystem.theme.components.ButtonSize import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.lowHorizontalPaddingValue @@ -63,15 +62,7 @@ fun SuperButton( ButtonSize.Small -> PaddingValues(horizontal = 16.dp, vertical = 5.dp) } } - val colors = if (LocalBuildMeta.current.isEnterpriseBuild) { - listOf( - ElementTheme.colors.textActionAccent, - ElementTheme.colors.textActionAccent, - ) - } else { - gradientActionColors() - } - + val colors = gradientActionColors() val shaderBrush = remember(colors) { object : ShaderBrush() { override fun createShader(size: Size): Shader { From 8c218634d661f0fd432463680ab3eae582a25cf8 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Wed, 15 Oct 2025 12:37:27 +0000 Subject: [PATCH 083/898] Update screenshots --- ...ferences.impl.developer_DeveloperSettingsView_Day_3_en.png | 3 +++ ...rences.impl.developer_DeveloperSettingsView_Night_3_en.png | 3 +++ ...utton_GradientFloatingActionButtonCircleShape_Day_0_en.png | 4 ++-- ...ton_GradientFloatingActionButtonCircleShape_Night_0_en.png | 4 ++-- ...omponents.button_GradientFloatingActionButton_Day_0_en.png | 4 ++-- ...ponents.button_GradientFloatingActionButton_Night_0_en.png | 4 ++-- ...odifiers_BackgroundVerticalGradientEnterprise_Day_0_en.png | 3 --- ...ifiers_BackgroundVerticalGradientEnterprise_Night_0_en.png | 3 --- 8 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_3_en.png new file mode 100644 index 0000000000..9f6f9bc434 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Day_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77847b759a0795c7c4f6ed529c0d20ffa060983c06196061f3ff61171774d1ab +size 39412 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_3_en.png new file mode 100644 index 0000000000..2d9b113aa1 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.developer_DeveloperSettingsView_Night_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea0cb97b7f8363fb4581da232c2ec6cd5c7ad17a9dcbf5339b275f590e53a8e +size 38794 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png index 7bb9ad0c60..ca8b99159f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d78695ba9a688d64996fb13ffa27f2870b613141c3bc4ca9ae565fc97de00e1e -size 10522 +oid sha256:45e0eed913d8987940b6745620e229c8ce1659f2603b3bc4a1d19d6753742f6d +size 12394 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png index ac4762f9c9..39a307604c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButtonCircleShape_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35b75a3b70d0b8b5d1279b99ba715150ecf8a8d64f8961c69394a7f7d6292d18 -size 10485 +oid sha256:98302375a306d4a396888cdbaecf358e246f25dcc5e300a2548b84d6fb9c4974 +size 11745 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png index fb1b6f0d0c..a9ee021ab5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:454d022bb76f1469ee071bac71d0b2a9061ed2f97390abe591ba17dfb194b98f -size 10576 +oid sha256:52ddea2d8936364fe4b8fcf9c140830cd4354db214cc43f737eaab6070b84c6d +size 12713 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png index 8df3db1483..0857be997a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.button_GradientFloatingActionButton_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c39f527f535195124f0720f598df65665559e91fd6f2dbf35e17f9e71c25f6d -size 10533 +oid sha256:dc4d9958f19470f82c43cc7cc2eb6ae4c0b2ec954a66bd654c76759780c0ae22 +size 11873 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Day_0_en.png deleted file mode 100644 index f3a0c39c8e..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6f581db727c01b084bc60ddb19cfe34e1f097cb91e6ac675c7721021f1d48c4 -size 8446 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Night_0_en.png deleted file mode 100644 index b9746b8511..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.modifiers_BackgroundVerticalGradientEnterprise_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad28a3e8f78ccd0263eff3c3d42f506ea4ae54eea88fe81849eac71fbaf0dd05 -size 8458 From e1ccfb8c6f27b953a52bf3de40ba176c634f6318 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 15:31:53 +0200 Subject: [PATCH 084/898] Add tests --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index aec257fe69..3b9622f942 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit aec257fe697d15493bc6b7112b75ddf4b634d3b6 +Subproject commit 3b9622f94241c925bb8ad17693fe5855d8bd3259 From 8457a2faea01bc62ab1d972b963bc696726eb1c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E5=9D=82=E9=9B=85?= <23130178+ShadowRZ@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:35:49 +0800 Subject: [PATCH 085/898] fix: Remove unknown room display condition (#5514) --- .../joinroom/impl/JoinRoomPresenter.kt | 8 +--- .../joinroom/impl/JoinRoomPresenterTest.kt | 40 +------------------ 2 files changed, 2 insertions(+), 46 deletions(-) diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt index 6e123630d6..2d737a17d4 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt @@ -39,8 +39,6 @@ import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias -import io.element.android.libraries.matrix.api.exception.ClientException -import io.element.android.libraries.matrix.api.exception.ErrorKind import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomInfo import io.element.android.libraries.matrix.api.room.RoomMembershipDetails @@ -141,11 +139,7 @@ class JoinRoomPresenter( preview.previewInfo.toContentState(membershipDetails) }, onFailure = { throwable -> - if (throwable is ClientException.MatrixApi && (throwable.kind == ErrorKind.NotFound || throwable.kind == ErrorKind.Forbidden)) { - ContentState.UnknownRoom - } else { - ContentState.Failure(throwable) - } + ContentState.UnknownRoom } ) } diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt index 10b5c1a712..0aed9ca424 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenterTest.kt @@ -1193,46 +1193,8 @@ class JoinRoomPresenterTest { skipItems(1) awaitItem().also { state -> assertThat(state.contentState).isEqualTo( - ContentState.Failure(error = AN_EXCEPTION) + ContentState.UnknownRoom ) - state.eventSink(JoinRoomEvents.RetryFetchingContent) - } - skipItems(1) - awaitItem().also { state -> - assertThat(state.contentState).isEqualTo(ContentState.Loading) - } - awaitItem().also { state -> - assertThat(state.contentState).isEqualTo( - ContentState.Failure(error = AN_EXCEPTION) - ) - } - } - } - - @Test - fun `present - when room is not known RoomPreview is loaded with error - dismiss`() = runTest { - val client = FakeMatrixClient( - getNotJoinedRoomResult = { _, _ -> - Result.failure(AN_EXCEPTION) - }, - spaceService = FakeSpaceService( - spaceRoomListResult = { FakeSpaceRoomList() }, - ), - ) - val presenter = createJoinRoomPresenter( - matrixClient = client - ) - presenter.test { - skipItems(1) - awaitItem().also { state -> - assertThat(state.contentState).isEqualTo( - ContentState.Failure(error = AN_EXCEPTION) - ) - state.eventSink(JoinRoomEvents.DismissErrorAndHideContent) - } - skipItems(1) - awaitItem().also { state -> - assertThat(state.contentState).isEqualTo(ContentState.Dismissing) } } } From 4367669404078188eb785ea8c045e62d947faa9c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 17:36:03 +0200 Subject: [PATCH 086/898] Update ref to submodule. --- enterprise | 2 +- gradle/libs.versions.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 3b9622f942..42efee0022 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 3b9622f94241c925bb8ad17693fe5855d8bd3259 +Subproject commit 42efee00222c3d0789feaa332739706af1b3c093 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e4e713dca9..21b88ad6b5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -93,6 +93,7 @@ androidx_constraintlayout_compose = { module = "androidx.constraintlayout:constr androidx_camera_lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camera" } androidx_camera_view = { module = "androidx.camera:camera-view", version.ref = "camera" } androidx_camera_camera2 = { module = "androidx.camera:camera-camera2", version.ref = "camera" } +androidx_javascriptengine = "androidx.javascriptengine:javascriptengine:1.0.0" androidx_recyclerview = "androidx.recyclerview:recyclerview:1.4.0" androidx_browser = "androidx.browser:browser:1.9.0" @@ -126,6 +127,7 @@ androidx_compose_material_icons = { module = "androidx.compose.material:material # Coroutines coroutines_core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } +coroutines_guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "coroutines" } coroutines_test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } # Accompanist From b3b92bc959b5dfe0b3bc85fb01b4d1614d81fce9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 15 Oct 2025 18:26:48 +0200 Subject: [PATCH 087/898] Cleanup --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 42efee0022..796be46999 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 42efee00222c3d0789feaa332739706af1b3c093 +Subproject commit 796be4699913b3a5e67ca1241f620b0df5b1cec5 From d09d71481061e550e7669c2583a21ea456c60030 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:29:47 +0200 Subject: [PATCH 088/898] fix(deps): update dependency org.maplibre.gl:android-sdk to v12.0.1 (#5548) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8ba007008..f5757e3e72 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -196,7 +196,7 @@ vanniktech_blurhash = "com.vanniktech:blurhash:0.3.0" telephoto_zoomableimage = { module = "me.saket.telephoto:zoomable-image-coil", version.ref = "telephoto" } telephoto_flick = { module = "me.saket.telephoto:flick-android", version.ref = "telephoto" } statemachine = "com.freeletics.flowredux:compose:1.2.2" -maplibre = "org.maplibre.gl:android-sdk:12.0.0" +maplibre = "org.maplibre.gl:android-sdk:12.0.1" maplibre_ktx = "org.maplibre.gl:android-sdk-ktx-v7:3.0.2" maplibre_annotation = "org.maplibre.gl:android-plugin-annotation-v9:3.0.2" opusencoder = "io.element.android:opusencoder:1.2.0" From cf8c8652d1132ce8c804b3509bbca812d90c5111 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 09:58:11 +0200 Subject: [PATCH 089/898] Update ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 796be46999..dc42b35239 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 796be4699913b3a5e67ca1241f620b0df5b1cec5 +Subproject commit dc42b35239830bac7d7f43b10999af5c50d82019 From 5b00fcc1297a9ffb7f7028b97cd505c419afc7ab Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 12:19:48 +0200 Subject: [PATCH 090/898] Always show dividers. --- .../preferences/impl/developer/DeveloperSettingsView.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index bfea30d2b4..4a9b47c0c9 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -58,7 +58,6 @@ fun DeveloperSettingsView( // Note: this is OK to hardcode strings in this debug screen. PreferenceCategory( title = "Feature flags", - showTopDivider = true, ) { FeatureListContent(state) } @@ -104,7 +103,7 @@ fun DeveloperSettingsView( state = state.rageshakeState, ) if (state.isEnterpriseBuild) { - PreferenceCategory(title = "Theme", showTopDivider = false) { + PreferenceCategory(title = "Theme") { ListItem( headlineContent = { Text("Change brand color") @@ -115,7 +114,7 @@ fun DeveloperSettingsView( ) } } - PreferenceCategory(title = "Crash", showTopDivider = false) { + PreferenceCategory(title = "Crash") { ListItem( headlineContent = { Text("Crash the app 💥") @@ -124,7 +123,7 @@ fun DeveloperSettingsView( ) } val cache = state.cacheSize - PreferenceCategory(title = "Cache", showTopDivider = false) { + PreferenceCategory(title = "Cache") { ListItem( headlineContent = { Text("Clear cache") @@ -167,7 +166,7 @@ fun DeveloperSettingsView( private fun ElementCallCategory( state: DeveloperSettingsState, ) { - PreferenceCategory(title = "Element Call", showTopDivider = true) { + PreferenceCategory(title = "Element Call") { val callUrlState = state.customElementCallBaseUrlState val supportingText = if (callUrlState.baseUrl.isNullOrEmpty()) { From 7d6971a9e57326e18bf681ba2e67517ed600b3cc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 15:19:19 +0200 Subject: [PATCH 091/898] Add a way to reset the colors. --- enterprise | 2 +- .../preferences/impl/developer/DeveloperSettingsEvents.kt | 2 +- .../impl/developer/DeveloperSettingsPresenter.kt | 2 +- .../preferences/impl/developer/DeveloperSettingsView.kt | 8 ++++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/enterprise b/enterprise index dc42b35239..5bb4720132 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit dc42b35239830bac7d7f43b10999af5c50d82019 +Subproject commit 5bb47201328b08d1c7d79a20f62268e8a4a51ba9 diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt index cb7a9f5de6..953ed61128 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt @@ -18,6 +18,6 @@ sealed interface DeveloperSettingsEvents { data class SetTracingLogLevel(val logLevel: LogLevelItem) : DeveloperSettingsEvents data class ToggleTracingLogPack(val logPack: TraceLogPack, val enabled: Boolean) : DeveloperSettingsEvents data class SetShowColorPicker(val show: Boolean) : DeveloperSettingsEvents - data class ChangeBrandColor(val color: Color) : DeveloperSettingsEvents + data class ChangeBrandColor(val color: Color?) : DeveloperSettingsEvents data object ClearCache : DeveloperSettingsEvents } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index cf2147f5bc..7106b53503 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -144,7 +144,7 @@ class DeveloperSettingsPresenter( } is DeveloperSettingsEvents.ChangeBrandColor -> { showColorPicker = false - val color = event.color.value.toHexString(HexFormat.UpperCase).substring(2, 8) + val color = event.color?.value?.toHexString(HexFormat.UpperCase)?.substring(2, 8) enterpriseService.overrideBrandColor(color) } is DeveloperSettingsEvents.SetShowColorPicker -> { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index 4a9b47c0c9..e00716e2ce 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -112,6 +112,14 @@ fun DeveloperSettingsView( state.eventSink(DeveloperSettingsEvents.SetShowColorPicker(true)) } ) + ListItem( + headlineContent = { + Text("Reset brand color") + }, + onClick = { + state.eventSink(DeveloperSettingsEvents.ChangeBrandColor(null)) + } + ) } } PreferenceCategory(title = "Crash") { From 14c7a63f45b503f3b06aae0b87c6c9a8c9a97f3a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 16:15:09 +0200 Subject: [PATCH 092/898] Extract code that log a ConsoleMessage so that it can be reused. --- .../features/call/impl/ui/CallScreenView.kt | 42 ++++--------- .../call/impl/ui/ElementCallActivity.kt | 5 ++ .../browser/ConsoleMessageLogger.kt | 61 +++++++++++++++++++ 3 files changed, 77 insertions(+), 31 deletions(-) create mode 100644 libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenView.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenView.kt index 88d2e81f8b..2f7a700794 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenView.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallScreenView.kt @@ -8,7 +8,6 @@ package io.element.android.features.call.impl.ui import android.annotation.SuppressLint -import android.util.Log import android.view.ViewGroup import android.webkit.ConsoleMessage import android.webkit.JavascriptInterface @@ -60,6 +59,7 @@ interface CallScreenNavigator { internal fun CallScreenView( state: CallScreenState, pipState: PictureInPictureState, + onConsoleMessage: (ConsoleMessage) -> Unit, requestPermissions: (Array, RequestPermissionCallback) -> Unit, modifier: Modifier = Modifier, ) { @@ -108,6 +108,7 @@ internal fun CallScreenView( val callback: RequestPermissionCallback = { request.grant(it) } requestPermissions(androidPermissions.toTypedArray(), callback) }, + onConsoleMessage = onConsoleMessage, onCreateWebView = { webView -> webView.addBackHandler(onBackPressed = ::handleBack) val interceptor = WebViewWidgetMessageInterceptor( @@ -174,6 +175,7 @@ private fun CallWebView( url: AsyncData, userAgent: String, onPermissionsRequest: (PermissionRequest) -> Unit, + onConsoleMessage: (ConsoleMessage) -> Unit, onCreateWebView: (WebView) -> Unit, onDestroyWebView: (WebView) -> Unit, modifier: Modifier = Modifier, @@ -188,7 +190,11 @@ private fun CallWebView( factory = { context -> WebView(context).apply { onCreateWebView(this) - setup(userAgent, onPermissionsRequest) + setup( + userAgent = userAgent, + onPermissionsRequested = onPermissionsRequest, + onConsoleMessage = onConsoleMessage, + ) } }, update = { webView -> @@ -208,6 +214,7 @@ private fun CallWebView( private fun WebView.setup( userAgent: String, onPermissionsRequested: (PermissionRequest) -> Unit, + onConsoleMessage: (ConsoleMessage) -> Unit, ) { layoutParams = ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -232,35 +239,7 @@ private fun WebView.setup( } override fun onConsoleMessage(consoleMessage: ConsoleMessage): Boolean { - val priority = when (consoleMessage.messageLevel()) { - ConsoleMessage.MessageLevel.ERROR -> Log.ERROR - ConsoleMessage.MessageLevel.WARNING -> Log.WARN - else -> Log.DEBUG - } - - val message = buildString { - append(consoleMessage.sourceId()) - append(":") - append(consoleMessage.lineNumber()) - append(" ") - append(consoleMessage.message()) - } - - if (message.contains("password=")) { - // Avoid logging any messages that contain "password" to prevent leaking sensitive information - return true - } - - Timber.tag("WebView").log( - priority = priority, - message = buildString { - append(consoleMessage.sourceId()) - append(":") - append(consoleMessage.lineNumber()) - append(" ") - append(consoleMessage.message()) - }, - ) + onConsoleMessage(consoleMessage) return true } } @@ -286,6 +265,7 @@ internal fun CallScreenViewPreview( state = state, pipState = aPictureInPictureState(), requestPermissions = { _, _ -> }, + onConsoleMessage = {}, ) } diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt index bf210b0a42..ae04606d29 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt @@ -42,6 +42,7 @@ import io.element.android.features.call.impl.pip.PipView import io.element.android.features.call.impl.services.CallForegroundService import io.element.android.features.call.impl.utils.CallIntentDataParser import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.libraries.androidutils.browser.ConsoleMessageLogger import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.bindings import io.element.android.libraries.audio.api.AudioFocus @@ -65,6 +66,7 @@ class ElementCallActivity : @Inject lateinit var pictureInPicturePresenter: PictureInPicturePresenter @Inject lateinit var buildMeta: BuildMeta @Inject lateinit var audioFocus: AudioFocus + @Inject lateinit var consoleMessageLogger: ConsoleMessageLogger private lateinit var presenter: Presenter @@ -119,6 +121,9 @@ class ElementCallActivity : CallScreenView( state = state, pipState = pipState, + onConsoleMessage = { + consoleMessageLogger.log("ElementCall", it) + }, requestPermissions = { permissions, callback -> requestPermissionCallback = callback requestPermissionsLauncher.launch(permissions) diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt new file mode 100644 index 0000000000..3c3cf24ebc --- /dev/null +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt @@ -0,0 +1,61 @@ +/* + * 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.androidutils.browser + +import android.util.Log +import android.webkit.ConsoleMessage +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import dev.zacsweers.metro.Inject +import timber.log.Timber + +interface ConsoleMessageLogger { + fun log( + tag: String, + consoleMessage: ConsoleMessage, + ) +} + +@ContributesBinding(AppScope::class) +@Inject +class DefaultConsoleMessageLogger : ConsoleMessageLogger { + override fun log( + tag: String, + consoleMessage: ConsoleMessage, + ) { + val priority = when (consoleMessage.messageLevel()) { + ConsoleMessage.MessageLevel.ERROR -> Log.ERROR + ConsoleMessage.MessageLevel.WARNING -> Log.WARN + else -> Log.DEBUG + } + + val message = buildString { + append(consoleMessage.sourceId()) + append(":") + append(consoleMessage.lineNumber()) + append(" ") + append(consoleMessage.message()) + } + + // Avoid logging any messages that contain "password" to prevent leaking sensitive information + if (message.contains("password=")) { + return + } + + Timber.tag(tag).log( + priority = priority, + message = buildString { + append(consoleMessage.sourceId()) + append(":") + append(consoleMessage.lineNumber()) + append(" ") + append(consoleMessage.message()) + }, + ) + } +} From 276c707e420993ab351e72d40e6ed92933a344a5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 16:37:08 +0200 Subject: [PATCH 093/898] Move Json provider from Network module to AppModule to reuse it. --- .../main/kotlin/io/element/android/x/di/AppModule.kt | 7 +++++++ .../features/call/impl/ui/CallScreenPresenter.kt | 5 +++-- .../call/impl/utils/WidgetMessageSerializer.kt | 12 +++++++----- .../features/call/ui/CallScreenPresenterTest.kt | 6 +++++- .../impl/screens/createaccount/MessageParser.kt | 4 ++-- .../createaccount/DefaultMessageParserTest.kt | 4 +++- .../android/libraries/network/NetworkModule.kt | 7 ------- .../pushproviders/unifiedpush/UnifiedPushParser.kt | 6 +++--- .../impl/DefaultSessionWellknownRetriever.kt | 6 +++--- .../impl/DefaultSessionWellknownRetrieverTest.kt | 2 +- 10 files changed, 34 insertions(+), 25 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index d98a05321d..02f132d34a 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -35,6 +35,7 @@ import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.plus +import kotlinx.serialization.json.Json import java.io.File @BindingContainer @@ -120,4 +121,10 @@ object AppModule { fun providesEmojibaseProvider(@ApplicationContext context: Context): EmojibaseProvider { return DefaultEmojibaseProvider(context) } + + @Provides + @SingleIn(AppScope::class) + fun providesJson(): Json = Json { + ignoreUnknownKeys = true + } } 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 06929093f5..7604dbae18 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 @@ -64,6 +64,7 @@ class CallScreenPresenter( private val appForegroundStateService: AppForegroundStateService, @AppCoroutineScope private val appCoroutineScope: CoroutineScope, + private val widgetMessageSerializer: WidgetMessageSerializer, ) : Presenter { @AssistedFactory interface Factory { @@ -258,7 +259,7 @@ class CallScreenPresenter( } private fun parseMessage(message: String): WidgetMessage? { - return WidgetMessageSerializer.deserialize(message).getOrNull() + return widgetMessageSerializer.deserialize(message).getOrNull() } private fun sendHangupMessage(widgetId: String, messageInterceptor: WidgetMessageInterceptor) { @@ -269,7 +270,7 @@ class CallScreenPresenter( action = WidgetMessage.Action.HangUp, data = null, ) - messageInterceptor.sendMessage(WidgetMessageSerializer.serialize(message)) + messageInterceptor.sendMessage(widgetMessageSerializer.serialize(message)) } private fun CoroutineScope.close(widgetDriver: MatrixWidgetDriver?, navigator: CallScreenNavigator) = launch(dispatchers.io) { diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WidgetMessageSerializer.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WidgetMessageSerializer.kt index a21cadab7a..2beaea7061 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WidgetMessageSerializer.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WidgetMessageSerializer.kt @@ -7,18 +7,20 @@ package io.element.android.features.call.impl.utils +import dev.zacsweers.metro.Inject import io.element.android.features.call.impl.data.WidgetMessage import io.element.android.libraries.core.extensions.runCatchingExceptions import kotlinx.serialization.json.Json -object WidgetMessageSerializer { - private val coder = Json { ignoreUnknownKeys = true } - +@Inject +class WidgetMessageSerializer( + private val json: Json, +) { fun deserialize(message: String): Result { - return runCatchingExceptions { coder.decodeFromString(WidgetMessage.serializer(), message) } + return runCatchingExceptions { json.decodeFromString(WidgetMessage.serializer(), message) } } fun serialize(message: WidgetMessage): String { - return coder.encodeToString(WidgetMessage.serializer(), message) + return json.encodeToString(WidgetMessage.serializer(), message) } } 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 47a91afa1c..c3a68994da 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 @@ -16,6 +16,7 @@ import io.element.android.features.call.api.CallType import io.element.android.features.call.impl.ui.CallScreenEvents import io.element.android.features.call.impl.ui.CallScreenNavigator import io.element.android.features.call.impl.ui.CallScreenPresenter +import io.element.android.features.call.impl.utils.WidgetMessageSerializer import io.element.android.features.call.utils.FakeActiveCallManager import io.element.android.features.call.utils.FakeCallWidgetProvider import io.element.android.features.call.utils.FakeWidgetMessageInterceptor @@ -46,11 +47,13 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import kotlinx.serialization.json.Json import org.junit.Rule import org.junit.Test import kotlin.time.Duration.Companion.seconds -@OptIn(ExperimentalCoroutinesApi::class) class CallScreenPresenterTest { +@OptIn(ExperimentalCoroutinesApi::class) +class CallScreenPresenterTest { @get:Rule val warmUpRule = WarmUpRule() @@ -409,6 +412,7 @@ import kotlin.time.Duration.Companion.seconds languageTagProvider = FakeLanguageTagProvider("en-US"), appForegroundStateService = appForegroundStateService, appCoroutineScope = backgroundScope, + widgetMessageSerializer = WidgetMessageSerializer(Json { ignoreUnknownKeys = true }), ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt index 8450aef1d3..8762bc5e46 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt @@ -26,10 +26,10 @@ interface MessageParser { @Inject class DefaultMessageParser( private val accountProviderDataSource: AccountProviderDataSource, + private val json: Json, ) : MessageParser { override fun parse(message: String): ExternalSession { - val parser = Json { ignoreUnknownKeys = true } - val response = parser.decodeFromString(MobileRegistrationResponse.serializer(), message) + val response = json.decodeFromString(MobileRegistrationResponse.serializer(), message) val userId = response.userId ?: error("No user ID in response") val homeServer = response.homeServer ?: accountProviderDataSource.flow.value.url val accessToken = response.accessToken ?: error("No access token in response") diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/DefaultMessageParserTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/DefaultMessageParserTest.kt index a1fbbc0fe2..fa97a2b1fc 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/DefaultMessageParserTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/DefaultMessageParserTest.kt @@ -13,6 +13,7 @@ import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.matrix.api.auth.external.ExternalSession import kotlinx.serialization.SerializationException +import kotlinx.serialization.json.Json import org.junit.Assert.assertThrows import org.junit.Test @@ -68,7 +69,8 @@ class DefaultMessageParserTest { private fun createDefaultMessageParser(): DefaultMessageParser { return DefaultMessageParser( - AccountProviderDataSource(FakeEnterpriseService()) + accountProviderDataSource = AccountProviderDataSource(FakeEnterpriseService()), + json = Json { ignoreUnknownKeys = true }, ) } } diff --git a/libraries/network/src/main/kotlin/io/element/android/libraries/network/NetworkModule.kt b/libraries/network/src/main/kotlin/io/element/android/libraries/network/NetworkModule.kt index 6ede5a0c48..b749ebec39 100644 --- a/libraries/network/src/main/kotlin/io/element/android/libraries/network/NetworkModule.kt +++ b/libraries/network/src/main/kotlin/io/element/android/libraries/network/NetworkModule.kt @@ -15,7 +15,6 @@ import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.network.interceptors.FormattedJsonHttpLogger import io.element.android.libraries.network.interceptors.UserAgentInterceptor -import kotlinx.serialization.json.Json import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import java.util.concurrent.TimeUnit @@ -35,12 +34,6 @@ object NetworkModule { addInterceptor(userAgentInterceptor) if (buildMeta.isDebuggable) addInterceptor(providesHttpLoggingInterceptor()) }.build() - - @Provides - @SingleIn(AppScope::class) - fun providesJson(): Json = Json { - ignoreUnknownKeys = true - } } private fun providesHttpLoggingInterceptor(): HttpLoggingInterceptor { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt index f1290636c3..14a0bf3e85 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParser.kt @@ -13,9 +13,9 @@ import io.element.android.libraries.pushproviders.api.PushData import kotlinx.serialization.json.Json @Inject -class UnifiedPushParser { - private val json by lazy { Json { ignoreUnknownKeys = true } } - +class UnifiedPushParser( + private val json: Json, +) { fun parse(message: ByteArray, clientSecret: String): PushData? { return tryOrNull { json.decodeFromString(String(message)) }?.toPushData(clientSecret) } diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt index 81bbab5ab8..c34a0a12d3 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt @@ -22,7 +22,7 @@ import timber.log.Timber @Inject class DefaultSessionWellknownRetriever( private val matrixClient: MatrixClient, - private val parser: Json, + private val json: Json, ) : SessionWellknownRetriever { private val domain by lazy { matrixClient.userIdServerName() } @@ -32,7 +32,7 @@ class DefaultSessionWellknownRetriever( .getUrl(url) .mapCatchingExceptions { val data = String(it) - parser.decodeFromString(InternalWellKnown.serializer(), data) + json.decodeFromString(InternalWellKnown.serializer(), data) } .onFailure { Timber.e(it, "Failed to retrieve .well-known from $domain") } .map { it.map() } @@ -45,7 +45,7 @@ class DefaultSessionWellknownRetriever( .getUrl(url) .mapCatchingExceptions { val data = String(it) - parser.decodeFromString(InternalElementWellKnown.serializer(), data) + json.decodeFromString(InternalElementWellKnown.serializer(), data) } .onFailure { Timber.e(it, "Failed to retrieve Element .well-known from $domain") } .map { it.map() } diff --git a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt index 624370466a..2c788cae63 100644 --- a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt +++ b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt @@ -244,6 +244,6 @@ class DefaultSessionWellknownRetrieverTest { userIdServerNameLambda = { "user.domain.org" }, getUrlLambda = getUrlLambda, ), - parser = Json { ignoreUnknownKeys = true } + json = Json { ignoreUnknownKeys = true }, ) } From 535211631db02abb55f66afa1093583463823efa Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 16:46:40 +0200 Subject: [PATCH 094/898] Improve AssetReader. --- .../libraries/androidutils/assets/AssetReader.kt | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt index 5de329a754..c0499c97b4 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/assets/AssetReader.kt @@ -31,16 +31,7 @@ class AssetReader( fun readAssetFile(assetFilename: String): String? { return cache.getOrPut(assetFilename, { return try { - context.assets.open(assetFilename) - .use { asset -> - buildString { - var ch = asset.read() - while (ch != -1) { - append(ch.toChar()) - ch = asset.read() - } - } - } + context.assets.open(assetFilename).use { it.bufferedReader().readText() } } catch (e: Exception) { Timber.e(e, "## readAssetFile() failed") null From bb104cc96f845bea779d8c15476f6a09b9f09175 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 17:10:03 +0200 Subject: [PATCH 095/898] Fix test compilation/execution issue. Happened after concurrent merging of PRs. --- .../rageshake/impl/reporter/DefaultBugReporterTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt index c20f306d6c..3f3eecb35d 100755 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterTest.kt @@ -160,9 +160,11 @@ class DefaultBugReporterTest { assertThat(foundValues["number_of_accounts"]).isEqualTo("1") assertThat(foundValues["text"]).isEqualTo("a bug occurred") assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY") + assertThat(foundValues["file"]).contains(fakePushRules) // device_key now added given they are not null - assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 1) + // so is the push_rules value + assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 2) server.shutdown() } @@ -225,11 +227,9 @@ class DefaultBugReporterTest { assertThat(foundValues["number_of_accounts"]).isEqualTo("2") assertThat(foundValues["text"]).isEqualTo("a bug occurred") assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY") - assertThat(foundValues["file"]).contains(fakePushRules) // device_key now added given they are not null - // so is the push_rules value - assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 2) + assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 1) server.shutdown() } From ff205042ece395b75f6f7ff2d9ddc5c9c2f95647 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 18:15:01 +0200 Subject: [PATCH 096/898] Fix tests. --- .../unifiedpush/UnifiedPushParserTest.kt | 19 +++++++++++++------ .../VectorUnifiedPushMessagingReceiverTest.kt | 3 ++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParserTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParserTest.kt index 89d4fec3b2..a269f906fe 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParserTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushParserTest.kt @@ -12,6 +12,7 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.pushproviders.api.PushData import io.element.android.tests.testutils.assertThrowsInDebug +import kotlinx.serialization.json.Json import org.junit.Test class UnifiedPushParserTest { @@ -25,7 +26,7 @@ class UnifiedPushParserTest { @Test fun `test edge cases UnifiedPush`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() // Empty string assertThat(pushParser.parse("".toByteArray(), aClientSecret)).isNull() // Empty Json @@ -36,13 +37,13 @@ class UnifiedPushParserTest { @Test fun `test UnifiedPush format`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() assertThat(pushParser.parse(UNIFIED_PUSH_DATA.toByteArray(), aClientSecret)).isEqualTo(validData) } @Test fun `test empty roomId`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() assertThrowsInDebug { pushParser.parse(UNIFIED_PUSH_DATA.replace(A_ROOM_ID.value, "").toByteArray(), aClientSecret) } @@ -50,7 +51,7 @@ class UnifiedPushParserTest { @Test fun `test invalid roomId`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() assertThrowsInDebug { pushParser.parse(UNIFIED_PUSH_DATA.mutate(A_ROOM_ID.value, "aRoomId:domain"), aClientSecret) } @@ -58,7 +59,7 @@ class UnifiedPushParserTest { @Test fun `test empty eventId`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() assertThrowsInDebug { pushParser.parse(UNIFIED_PUSH_DATA.mutate(AN_EVENT_ID.value, ""), aClientSecret) } @@ -66,7 +67,7 @@ class UnifiedPushParserTest { @Test fun `test invalid eventId`() { - val pushParser = UnifiedPushParser() + val pushParser = createUnifiedPushParser() assertThrowsInDebug { pushParser.parse(UNIFIED_PUSH_DATA.mutate(AN_EVENT_ID.value, "anEventId"), aClientSecret) } @@ -81,3 +82,9 @@ class UnifiedPushParserTest { private fun String.mutate(oldValue: String, newValue: String): ByteArray { return replace(oldValue, newValue).toByteArray() } + +fun createUnifiedPushParser( + json: Json = Json { ignoreUnknownKeys = true }, +) = UnifiedPushParser( + json = json, +) diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt index 0215ff66ee..5465149642 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/VectorUnifiedPushMessagingReceiverTest.kt @@ -191,6 +191,7 @@ class VectorUnifiedPushMessagingReceiverTest { } private fun TestScope.createVectorUnifiedPushMessagingReceiver( + unifiedPushParser: UnifiedPushParser = createUnifiedPushParser(), pushHandler: PushHandler = FakePushHandler(), unifiedPushStore: UnifiedPushStore = FakeUnifiedPushStore(), unifiedPushGatewayResolver: UnifiedPushGatewayResolver = FakeUnifiedPushGatewayResolver(), @@ -199,7 +200,7 @@ class VectorUnifiedPushMessagingReceiverTest { endpointRegistrationHandler: EndpointRegistrationHandler = EndpointRegistrationHandler(), ): VectorUnifiedPushMessagingReceiver { return VectorUnifiedPushMessagingReceiver().apply { - this.pushParser = UnifiedPushParser() + this.pushParser = unifiedPushParser this.pushHandler = pushHandler this.guardServiceStarter = NoopGuardServiceStarter() this.unifiedPushStore = unifiedPushStore From 14cebee7b3ad78518322cfbe56475ff9d75ae856 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 20:58:39 +0200 Subject: [PATCH 097/898] Update Ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 5bb4720132..9f3ff0cd6e 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 5bb47201328b08d1c7d79a20f62268e8a4a51ba9 +Subproject commit 9f3ff0cd6e2e69ce3b684ba40b667a29aa6a943c From ed50f2c9f943406bd029681b0425f5eb1a1d1204 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 21:16:10 +0200 Subject: [PATCH 098/898] Update Ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index 9f3ff0cd6e..ef920ba9ad 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 9f3ff0cd6e2e69ce3b684ba40b667a29aa6a943c +Subproject commit ef920ba9ade662c80f36dca59ab6e40276583bf9 From aefef9095b7f13bb1d525a756ae191a5b1c00373 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 16 Oct 2025 21:40:14 +0200 Subject: [PATCH 099/898] Update Ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index ef920ba9ad..38992f58ef 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit ef920ba9ade662c80f36dca59ab6e40276583bf9 +Subproject commit 38992f58ef472520a2192696c1bbf20e3066191e From 597c9b473a03d1da80ef7c2c29621ca65213f5ab Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 17 Oct 2025 11:51:27 +0200 Subject: [PATCH 100/898] Sync notifications using WorkManager (#5545) * Initial implementation of notification sync using `WorkManager` * Use custom `MetroWorkerFactory` to allow assisted injection in WorkManager Workers * Add tests for `FetchNotificationWorker`. Create `FakeNotificationResolverQueue` to help testing. * Add more tests, fix Konsist checks * Add tests for `SyncNotificationWorkManagerRequest` * Simplify `FakeNotificationResolverQueue` --- app/src/main/AndroidManifest.xml | 10 +- .../element/android/x/ElementXApplication.kt | 9 +- .../io/element/android/x/di/AppGraph.kt | 8 + features/logout/impl/build.gradle.kts | 2 + .../features/logout/impl/LogoutPresenter.kt | 5 + .../logout/impl/LogoutPresenterTest.kt | 11 +- .../impl/reporter/DefaultBugReporterTest.kt | 2 +- gradle/libs.versions.toml | 2 + .../libraries/featureflag/api/FeatureFlags.kt | 8 + .../push/api/push/NotificationEventRequest.kt | 19 ++ .../push/api/push/SyncOnNotifiableEvent.kt | 12 + libraries/push/impl/build.gradle.kts | 4 + .../DefaultNotifiableEventResolver.kt | 6 +- .../NotificationResolverQueue.kt | 58 +++-- .../push/impl/push/DefaultPushHandler.kt | 11 +- ...ent.kt => DefaultSyncOnNotifiableEvent.kt} | 18 +- .../impl/push/OnNotifiableEventReceived.kt | 2 - .../workmanager/FetchNotificationsWorker.kt | 123 +++++++++++ .../SyncNotificationWorkManagerRequest.kt | 87 ++++++++ .../DefaultNotifiableEventResolverTest.kt | 1 + .../FakeNotifiableEventResolver.kt | 1 + .../NotificationEventRequestFixture.kt | 28 +++ .../push/impl/push/DefaultPushHandlerTest.kt | 63 +++++- .../impl/push/SyncOnNotifiableEventTest.kt | 62 +----- .../FetchNotificationWorkerTest.kt | 206 ++++++++++++++++++ .../SyncNotificationWorkManagerRequestTest.kt | 50 +++++ .../FakeNotificationResolverQueue.kt | 23 ++ libraries/workmanager/api/build.gradle.kts | 23 ++ .../workmanager/api/WorkManagerRequest.kt | 14 ++ .../workmanager/api/WorkManagerScheduler.kt | 26 +++ .../workmanager/api/di/MetroWorkerFactory.kt | 35 +++ .../libraries/workmanager/api/di/WorkerKey.kt | 18 ++ libraries/workmanager/impl/build.gradle.kts | 24 ++ .../impl/DefaultWorkManagerScheduler.kt | 47 ++++ libraries/workmanager/test/build.gradle.kts | 19 ++ .../test/FakeWorkManagerScheduler.kt | 26 +++ .../kotlin/extension/DependencyHandleScope.kt | 1 + .../tests/konsist/KonsistClassNameTest.kt | 2 + 38 files changed, 968 insertions(+), 98 deletions(-) create mode 100644 libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/push/NotificationEventRequest.kt create mode 100644 libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/push/SyncOnNotifiableEvent.kt rename libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/{SyncOnNotifiableEvent.kt => DefaultSyncOnNotifiableEvent.kt} (74%) create mode 100644 libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt create mode 100644 libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt create mode 100644 libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fixtures/NotificationEventRequestFixture.kt create mode 100644 libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt create mode 100644 libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt create mode 100644 libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationResolverQueue.kt create mode 100644 libraries/workmanager/api/build.gradle.kts create mode 100644 libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/WorkManagerRequest.kt create mode 100644 libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/WorkManagerScheduler.kt create mode 100644 libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/MetroWorkerFactory.kt create mode 100644 libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/WorkerKey.kt create mode 100644 libraries/workmanager/impl/build.gradle.kts create mode 100644 libraries/workmanager/impl/src/main/kotlin/io/element/android/libraries/workmanager/impl/DefaultWorkManagerScheduler.kt create mode 100644 libraries/workmanager/test/build.gradle.kts create mode 100644 libraries/workmanager/test/src/main/kotlin/io/element/android/libraries/workmanager/test/FakeWorkManagerScheduler.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26e8c7dc23..bcfcd71b94 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,10 +34,17 @@ + android:exported="false" + tools:node="merge"> + + + + +## What's Changed +### ✨ Features +* Sync notifications using WorkManager by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5545 +### 🙌 Improvements +* Sort feature flags by @bmarty in https://github.com/element-hq/element-x-android/pull/5557 +### 🐛 Bugfixes +* Makes sure images are loaded when cancelling multiaccount flow by @ganfra in https://github.com/element-hq/element-x-android/pull/5502 +* Fix 'test push loop back' notification check by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5541 +* Display 'join anyway' button on room preview when the state can't be loaded by @ShadowRZ in https://github.com/element-hq/element-x-android/pull/5514 +* Fix media viewer not being dismissed with reduced motion enabled by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5555 +* Keep the cursor position in room list search when going back by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5570 +* Make sure declining a call stops observing the ringing call state by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5563 +### 🗣 Translations +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5515 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5562 +### 🧱 Build +* Do some cleanup on our immutable annotation usage by @bmarty in https://github.com/element-hq/element-x-android/pull/5503 +* `interface TestParameterValuesProvider` is deprecated. by @bmarty in https://github.com/element-hq/element-x-android/pull/5568 +### Dependency upgrades +* fix(deps): update metro to v0.6.9 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5480 +* fix(deps): update dependency org.unifiedpush.android:connector to v3.1.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5443 +* fix(deps): update wysiwyg to v2.40.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5400 +* fix(deps): update dependency io.github.sergio-sastre.composablepreviewscanner:android to v0.7.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5510 +* fix(deps): update camera to v1.5.1 - autoclosed by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5509 +* chore(deps): update plugin dependencycheck to v12.1.7 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5518 +* chore(deps): update plugin licensee to v1.14.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5477 +* chore(deps): update dependency python to 3.14 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5475 +* fix(deps): update metro to v0.6.10 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5520 +* fix(deps): update dependency org.unifiedpush.android:connector to v3.1.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5519 +* chore(deps): update plugin gms_google_services to v4.4.4 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5507 +* fix(deps): update dependency com.google.firebase:firebase-bom to v34.4.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5522 +* fix(deps): update dependency com.squareup.okhttp3:okhttp-bom to v5.2.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5524 +* fix(deps): update dependency net.zetetic:sqlcipher-android to v4.11.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5525 +* fix(deps): update dependencyanalysis to v3.1.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5523 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.13 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5527 +* chore(deps): update plugin dependencycheck to v12.1.8 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5531 +* chore(deps): update rnkdsh/action-upload-diawi action to v1.5.12 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5533 +* fix(deps): update dependency org.maplibre.gl:android-sdk to v12.0.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5548 +* fix(deps): update metro to v0.7.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5554 +* fix(deps): update dependency com.posthog:posthog-android to v3.24.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5564 +* chore(deps): update plugin sonarqube to v7 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5535 +### Others +* Import Compound tokens - fixed icons by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5506 +* Replace Uri by String in States that are used in Composable function. by @bmarty in https://github.com/element-hq/element-x-android/pull/5508 +* Let room filters follow the design. by @bmarty in https://github.com/element-hq/element-x-android/pull/5526 +* Allow uploading notification push rules in bug reports by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5538 +* Add number of accounts info in the rageshake data. by @bmarty in https://github.com/element-hq/element-x-android/pull/5532 +* design(space): match figma for Space views by @ganfra in https://github.com/element-hq/element-x-android/pull/5540 +* Extract console message logger and mutualize instance of Json by @bmarty in https://github.com/element-hq/element-x-android/pull/5552 +* Improve colors customization by @bmarty in https://github.com/element-hq/element-x-android/pull/5542 +* Fix test warning by @bmarty in https://github.com/element-hq/element-x-android/pull/5558 + + +**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.10.0...v25.10.1 + Changes in Element X v25.10.0 ============================= From 68daf8d2cffe724232e281a799d40049b8539bb8 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 21 Oct 2025 16:05:20 +0200 Subject: [PATCH 145/898] misc: display offline banner directly in LoggedInFlowNode (and fix window insets) --- .../android/appnav/LoggedInFlowNode.kt | 19 ++-- .../android/appnav/room/RoomFlowNode.kt | 5 -- .../appnav/room/joined/JoinedRoomFlowNode.kt | 8 +- .../appnav/room/joined/LoadingRoomNodeView.kt | 13 +-- .../android/features/home/impl/HomeView.kt | 87 ++++++++----------- .../messages/impl/MessagesPresenter.kt | 15 ++-- .../features/messages/impl/MessagesState.kt | 1 - .../messages/impl/MessagesStateProvider.kt | 3 - .../features/messages/impl/MessagesView.kt | 7 +- .../messages/impl/MessagesPresenterTest.kt | 15 ++-- ...{Indicator.kt => ConnectivityIndicator.kt} | 10 ++- .../api/ui/ConnectivityIndicatorContainer.kt | 67 +++++++------- .../api/ui/ConnectivityIndicatorView.kt | 65 -------------- 13 files changed, 111 insertions(+), 204 deletions(-) rename features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/{Indicator.kt => ConnectivityIndicator.kt} (89%) delete mode 100644 features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index b0fc707d07..01f8185e99 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -53,6 +53,7 @@ import io.element.android.features.ftue.api.state.FtueState import io.element.android.features.home.api.HomeEntryPoint import io.element.android.features.networkmonitor.api.NetworkMonitor import io.element.android.features.networkmonitor.api.NetworkStatus +import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorContainer import io.element.android.features.preferences.api.PreferencesEntryPoint import io.element.android.features.roomdirectory.api.RoomDescription import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint @@ -77,6 +78,7 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias 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.sync.SyncService import io.element.android.libraries.matrix.api.verification.SessionVerificationServiceListener import io.element.android.libraries.matrix.api.verification.VerificationRequest import io.element.android.libraries.push.api.notifications.conversations.NotificationConversationService @@ -122,6 +124,7 @@ class LoggedInFlowNode( private val sessionEnterpriseService: SessionEnterpriseService, private val networkMonitor: NetworkMonitor, private val notificationConversationService: NotificationConversationService, + private val syncService: SyncService, snackbarDispatcher: SnackbarDispatcher, ) : BaseFlowNode( backstack = BackStack( @@ -538,11 +541,17 @@ class LoggedInFlowNode( @Composable override fun View(modifier: Modifier) { - Box(modifier = modifier) { - val ftueState by ftueService.state.collectAsState() - BackstackView() - if (ftueState is FtueState.Complete) { - PermanentChild(permanentNavModel = permanentNavModel, navTarget = NavTarget.LoggedInPermanent) + val isOnline by syncService.isOnline.collectAsState() + ConnectivityIndicatorContainer( + isOnline = isOnline, + modifier = modifier, + ) { contentModifier -> + Box(modifier = contentModifier) { + val ftueState by ftueService.state.collectAsState() + BackstackView() + if (ftueState is FtueState.Complete) { + PermanentChild(permanentNavModel = permanentNavModel, navTarget = NavTarget.LoggedInPermanent) + } } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 9a84049497..01683c01e7 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -9,7 +9,6 @@ package io.element.android.appnav.room 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 androidx.lifecycle.lifecycleScope @@ -48,7 +47,6 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias -import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.ui.room.LoadingRoomState import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.combine @@ -71,7 +69,6 @@ class RoomFlowNode( private val client: MatrixClient, private val joinRoomEntryPoint: JoinRoomEntryPoint, private val roomAliasResolverEntryPoint: RoomAliasResolverEntryPoint, - private val syncService: SyncService, private val membershipObserver: RoomMembershipObserver, private val spaceEntryPoint: SpaceEntryPoint, ) : BaseFlowNode( @@ -222,10 +219,8 @@ class RoomFlowNode( } private fun loadingNode(buildContext: BuildContext) = node(buildContext) { modifier -> - val isOnline by syncService.isOnline.collectAsState() LoadingRoomNodeView( state = LoadingRoomState.Loading, - hasNetworkConnection = isOnline, onBackClick = { navigateUp() }, modifier = modifier, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt index cbda7a8bfb..5874145377 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt @@ -35,7 +35,6 @@ import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.ui.room.LoadingRoomState import io.element.android.libraries.matrix.ui.room.LoadingRoomStateFlowFactory import kotlinx.coroutines.flow.distinctUntilChanged @@ -50,7 +49,6 @@ class JoinedRoomFlowNode( @Assisted val buildContext: BuildContext, @Assisted plugins: List, loadingRoomStateFlowFactory: LoadingRoomStateFlowFactory, - private val syncService: SyncService, ) : BaseFlowNode( backstack = BackStack( @@ -116,12 +114,10 @@ class JoinedRoomFlowNode( private fun loadingNode(buildContext: BuildContext, onBackClick: () -> Unit) = node(buildContext) { modifier -> val loadingRoomState by loadingRoomStateStateFlow.collectAsState() - val isOnline by syncService.isOnline.collectAsState() LoadingRoomNodeView( state = loadingRoomState, - hasNetworkConnection = isOnline, - modifier = modifier, - onBackClick = onBackClick + onBackClick = onBackClick, + modifier = modifier ) } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt index 938e46f915..95463fdc3f 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt @@ -8,8 +8,6 @@ package io.element.android.appnav.room.joined import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -21,7 +19,6 @@ import androidx.compose.ui.res.stringResource 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.networkmonitor.api.ui.ConnectivityIndicatorView import io.element.android.libraries.designsystem.atomic.molecules.IconTitlePlaceholdersRowMolecule import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton @@ -38,17 +35,13 @@ import io.element.android.libraries.ui.strings.CommonStrings @Composable fun LoadingRoomNodeView( state: LoadingRoomState, - hasNetworkConnection: Boolean, onBackClick: () -> Unit, modifier: Modifier = Modifier, ) { Scaffold( modifier = modifier, topBar = { - Column { - ConnectivityIndicatorView(isOnline = hasNetworkConnection) - LoadingRoomTopBar(onBackClick) - } + LoadingRoomTopBar(onBackClick) }, content = { padding -> Box( @@ -85,7 +78,6 @@ private fun LoadingRoomTopBar( title = { IconTitlePlaceholdersRowMolecule(iconSize = AvatarSize.TimelineRoom.dp) }, - windowInsets = WindowInsets(0.dp), ) } @@ -94,7 +86,6 @@ private fun LoadingRoomTopBar( internal fun LoadingRoomNodeViewPreview(@PreviewParameter(LoadingRoomStateProvider::class) state: LoadingRoomState) = ElementPreview { LoadingRoomNodeView( state = state, - onBackClick = {}, - hasNetworkConnection = false + onBackClick = {} ) } 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 aa4742f074..563f9c86c4 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 @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState @@ -50,7 +49,6 @@ 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.home.impl.spaces.HomeSpacesView -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 import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -84,56 +82,47 @@ fun HomeView( val state: RoomListState = homeState.roomListState val coroutineScope = rememberCoroutineScope() val firstThrottler = remember { FirstThrottler(300, coroutineScope) } - - ConnectivityIndicatorContainer( - modifier = modifier, - isOnline = homeState.hasNetworkConnection, - ) { topPadding -> - Box { - if (state.contextMenu is RoomListState.ContextMenu.Shown) { - RoomListContextMenu( - contextMenu = state.contextMenu, - canReportRoom = state.canReportRoom, - eventSink = state.eventSink, - onRoomSettingsClick = onRoomSettingsClick, - onReportRoomClick = onReportRoomClick, - ) - } - if (state.declineInviteMenu is RoomListState.DeclineInviteMenu.Shown) { - RoomListDeclineInviteMenu( - menu = state.declineInviteMenu, - canReportRoom = state.canReportRoom, - eventSink = state.eventSink, - onDeclineAndBlockClick = onDeclineInviteAndBlockUser, - ) - } - - leaveRoomView() - - HomeScaffold( - state = homeState, - onSetUpRecoveryClick = onSetUpRecoveryClick, - onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, - onRoomClick = { if (firstThrottler.canHandle()) onRoomClick(it) }, - onOpenSettings = { if (firstThrottler.canHandle()) onSettingsClick() }, - onStartChatClick = { if (firstThrottler.canHandle()) onStartChatClick() }, - onMenuActionClick = onMenuActionClick, - modifier = Modifier.padding(top = topPadding), - ) - // This overlaid view will only be visible when state.displaySearchResults is true - RoomListSearchView( - state = state.searchState, + Box(modifier) { + if (state.contextMenu is RoomListState.ContextMenu.Shown) { + RoomListContextMenu( + contextMenu = state.contextMenu, + canReportRoom = state.canReportRoom, eventSink = state.eventSink, - hideInvitesAvatars = state.hideInvitesAvatars, - onRoomClick = { if (firstThrottler.canHandle()) onRoomClick(it) }, - modifier = Modifier - .statusBarsPadding() - .padding(top = topPadding) - .fillMaxSize() - .background(ElementTheme.colors.bgCanvasDefault) + onRoomSettingsClick = onRoomSettingsClick, + onReportRoomClick = onReportRoomClick, ) - acceptDeclineInviteView() } + if (state.declineInviteMenu is RoomListState.DeclineInviteMenu.Shown) { + RoomListDeclineInviteMenu( + menu = state.declineInviteMenu, + canReportRoom = state.canReportRoom, + eventSink = state.eventSink, + onDeclineAndBlockClick = onDeclineInviteAndBlockUser, + ) + } + + leaveRoomView() + + HomeScaffold( + state = homeState, + onSetUpRecoveryClick = onSetUpRecoveryClick, + onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, + onRoomClick = { if (firstThrottler.canHandle()) onRoomClick(it) }, + onOpenSettings = { if (firstThrottler.canHandle()) onSettingsClick() }, + onStartChatClick = { if (firstThrottler.canHandle()) onStartChatClick() }, + onMenuActionClick = onMenuActionClick, + ) + // This overlaid view will only be visible when state.displaySearchResults is true + RoomListSearchView( + state = state.searchState, + eventSink = state.eventSink, + hideInvitesAvatars = state.hideInvitesAvatars, + onRoomClick = { if (firstThrottler.canHandle()) onRoomClick(it) }, + modifier = Modifier + .fillMaxSize() + .background(ElementTheme.colors.bgCanvasDefault) + ) + acceptDeclineInviteView() } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 5bf92ef6f6..6740634c1c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -81,7 +81,6 @@ import io.element.android.libraries.matrix.api.room.powerlevels.canPinUnpin import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOther import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOwn import io.element.android.libraries.matrix.api.room.powerlevels.canSendMessage -import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.timeline.item.event.EventOrTransactionId import io.element.android.libraries.matrix.ui.messages.reply.map import io.element.android.libraries.matrix.ui.model.getAvatarData @@ -112,7 +111,6 @@ class MessagesPresenter( private val pinnedMessagesBannerPresenter: Presenter, private val roomCallStatePresenter: Presenter, private val roomMemberModerationPresenter: Presenter, - private val syncService: SyncService, private val snackbarDispatcher: SnackbarDispatcher, private val dispatchers: CoroutineDispatchers, private val clipboardHelper: ClipboardHelper, @@ -193,7 +191,6 @@ class MessagesPresenter( showReinvitePrompt = !hasDismissedInviteDialog && composerHasFocus && roomInfo.isDm && roomInfo.activeMembersCount == 1L } } - val isOnline by syncService.isOnline.collectAsState() val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState() @@ -250,8 +247,8 @@ class MessagesPresenter( roomName = roomInfo.name, roomAvatar = roomAvatar, heroes = heroes, - composerState = composerState, userEventPermissions = userEventPermissions, + composerState = composerState, voiceMessageComposerState = voiceMessageComposerState, timelineState = timelineState, timelineProtectionState = timelineProtectionState, @@ -261,19 +258,17 @@ class MessagesPresenter( customReactionState = customReactionState, reactionSummaryState = reactionSummaryState, readReceiptBottomSheetState = readReceiptBottomSheetState, - hasNetworkConnection = isOnline, snackbarMessage = snackbarMessage, - showReinvitePrompt = showReinvitePrompt, inviteProgress = inviteProgress.value, + showReinvitePrompt = showReinvitePrompt, enableTextFormatting = MessageComposerConfig.ENABLE_RICH_TEXT_EDITING, - appName = buildMeta.applicationName, roomCallState = roomCallState, + appName = buildMeta.applicationName, pinnedMessagesBannerState = pinnedMessagesBannerState, dmUserVerificationState = dmUserVerificationState, roomMemberModerationState = roomMemberModerationState, - successorRoom = roomInfo.successorRoom, - eventSink = { handleEvents(it) } - ) + successorRoom = roomInfo.successorRoom + ) { handleEvents(it) } } @Composable diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt index b92a0fc9d1..f5deede504 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt @@ -44,7 +44,6 @@ data class MessagesState( val customReactionState: CustomReactionState, val reactionSummaryState: ReactionSummaryState, val readReceiptBottomSheetState: ReadReceiptBottomSheetState, - val hasNetworkConnection: Boolean, val snackbarMessage: SnackbarMessage?, val inviteProgress: AsyncData, val showReinvitePrompt: Boolean, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt index 54b9dc659e..196ada786e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt @@ -56,7 +56,6 @@ open class MessagesStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aMessagesState(), - aMessagesState(hasNetworkConnection = false), aMessagesState(composerState = aMessageComposerState(showAttachmentSourcePicker = true)), aMessagesState(userEventPermissions = aUserEventPermissions(canSendMessage = false)), aMessagesState(showReinvitePrompt = true), @@ -108,7 +107,6 @@ fun aMessagesState( actionListState: ActionListState = anActionListState(), customReactionState: CustomReactionState = aCustomReactionState(), reactionSummaryState: ReactionSummaryState = aReactionSummaryState(), - hasNetworkConnection: Boolean = true, showReinvitePrompt: Boolean = false, roomCallState: RoomCallState = aStandByCallState(), pinnedMessagesBannerState: PinnedMessagesBannerState = aLoadedPinnedMessagesBannerState(), @@ -132,7 +130,6 @@ fun aMessagesState( actionListState = actionListState, customReactionState = customReactionState, reactionSummaryState = reactionSummaryState, - hasNetworkConnection = hasNetworkConnection, snackbarMessage = null, inviteProgress = AsyncData.Uninitialized, showReinvitePrompt = showReinvitePrompt, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index 6e9e5cf55d..0221bf2c94 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -71,7 +71,6 @@ import io.element.android.features.messages.impl.topbars.MessagesViewTopBar import io.element.android.features.messages.impl.topbars.ThreadTopBar import io.element.android.features.messages.impl.voicemessages.composer.VoiceMessagePermissionRationaleDialog import io.element.android.features.messages.impl.voicemessages.composer.VoiceMessageSendingFailedDialog -import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorView import io.element.android.libraries.androidutils.ui.hideKeyboard import io.element.android.libraries.designsystem.atomic.molecules.ComposerAlertMolecule import io.element.android.libraries.designsystem.components.ExpandableBottomSheetLayout @@ -84,6 +83,7 @@ import io.element.android.libraries.designsystem.text.toAnnotatedString import io.element.android.libraries.designsystem.theme.components.BottomSheetDragHandle import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.utils.HideKeyboardWhenDisposed import io.element.android.libraries.designsystem.utils.KeepScreenOn import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost @@ -123,6 +123,8 @@ fun MessagesView( KeepScreenOn(state.voiceMessageComposerState.keepScreenOn) + HideKeyboardWhenDisposed() + val snackbarHostState = rememberSnackbarHostState(snackbarMessage = state.snackbarMessage) // This is needed because the composer is inside an AndroidView that can't be affected by the FocusManager in Compose @@ -180,8 +182,6 @@ fun MessagesView( Scaffold( contentWindowInsets = WindowInsets.statusBars, topBar = { - Column { - ConnectivityIndicatorView(isOnline = state.hasNetworkConnection) if (state.timelineState.timelineMode is Timeline.Mode.Thread) { ThreadTopBar( roomName = state.roomName, @@ -203,7 +203,6 @@ fun MessagesView( onJoinCallClick = onJoinCallClick, ) } - } }, content = { padding -> Box( diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index 56a3badf26..34fd4df7f0 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -84,7 +84,6 @@ 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.sync.FakeSyncService import io.element.android.libraries.matrix.test.timeline.FakeTimeline import io.element.android.libraries.matrix.test.timeline.aTimelineItemDebugInfo import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails @@ -130,7 +129,6 @@ class MessagesPresenterTest { .isEqualTo(AvatarData(id = A_ROOM_ID.value, name = "", url = AN_AVATAR_URL, size = AvatarSize.TimelineRoom)) assertThat(initialState.userEventPermissions.canSendMessage).isTrue() assertThat(initialState.userEventPermissions.canRedactOwn).isTrue() - assertThat(initialState.hasNetworkConnection).isTrue() assertThat(initialState.snackbarMessage).isNull() assertThat(initialState.inviteProgress).isEqualTo(AsyncData.Uninitialized) assertThat(initialState.showReinvitePrompt).isFalse() @@ -1274,31 +1272,30 @@ class MessagesPresenterTest { addRecentEmoji: AddRecentEmoji = AddRecentEmoji(FakeMatrixClient(), testCoroutineDispatchers()), ): MessagesPresenter { return MessagesPresenter( + navigator = navigator, room = joinedRoom, composerPresenter = messageComposerPresenter, voiceMessageComposerPresenterFactory = FakeDefaultVoiceMessageComposerPresenterFactory(backgroundScope), timelinePresenter = { aTimelineState(eventSink = timelineEventSink) }, timelineProtectionPresenter = { aTimelineProtectionState() }, + identityChangeStatePresenter = { anIdentityChangeState() }, + linkPresenter = { aLinkState() }, actionListPresenter = { anActionListState(eventSink = actionListEventSink) }, customReactionPresenter = { aCustomReactionState() }, reactionSummaryPresenter = { aReactionSummaryState() }, readReceiptBottomSheetPresenter = { aReadReceiptBottomSheetState() }, - identityChangeStatePresenter = { anIdentityChangeState() }, - linkPresenter = { aLinkState() }, pinnedMessagesBannerPresenter = { aLoadedPinnedMessagesBannerState() }, roomCallStatePresenter = { aStandByCallState() }, roomMemberModerationPresenter = roomMemberModerationPresenter, - syncService = FakeSyncService(), snackbarDispatcher = SnackbarDispatcher(), - navigator = navigator, - clipboardHelper = clipboardHelper, - buildMeta = aBuildMeta(), dispatchers = coroutineDispatchers, + clipboardHelper = clipboardHelper, htmlConverterProvider = FakeHtmlConverterProvider(), + buildMeta = aBuildMeta(), timelineController = TimelineController(joinedRoom, timeline), permalinkParser = permalinkParser, - encryptionService = encryptionService, analyticsService = analyticsService, + encryptionService = encryptionService, featureFlagService = featureFlagService, addRecentEmoji = addRecentEmoji, ) diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/Indicator.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicator.kt similarity index 89% rename from features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/Indicator.kt rename to features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicator.kt index 95c46d3fd0..9d82e545db 100644 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/Indicator.kt +++ b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicator.kt @@ -20,6 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.element.android.compound.theme.ElementTheme @@ -32,7 +33,8 @@ import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.ui.strings.CommonStrings @Composable -internal fun Indicator( +internal fun ConnectivityIndicator( + verticalPadding: Dp, modifier: Modifier = Modifier, ) { Row( @@ -40,7 +42,7 @@ internal fun Indicator( .fillMaxWidth() .background(ElementTheme.colors.bgSubtlePrimary) .statusBarsPadding() - .padding(vertical = 6.dp), + .padding(vertical = verticalPadding), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, ) { @@ -61,6 +63,6 @@ internal fun Indicator( @PreviewsDayNight @Composable -internal fun IndicatorPreview() = ElementPreview { - Indicator() +internal fun ConnectivityIndicatorPreview() = ElementPreview { + ConnectivityIndicator(verticalPadding = 6.dp) } diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorContainer.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorContainer.kt index 6079cb7bbe..71b72a5ee8 100644 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorContainer.kt +++ b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorContainer.kt @@ -16,55 +16,58 @@ import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkVertically +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.statusBars import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalInspectionMode -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +private val INDICATOR_VERTICAL_PADDING = 6.dp + /** - * A view that displays a connectivity indicator when the device is offline, passing the padding - * needed to make sure the status bar is not overlapped to its content views. + * A view that displays a connectivity indicator when the device is offline. */ @Composable fun ConnectivityIndicatorContainer( isOnline: Boolean, modifier: Modifier = Modifier, - content: @Composable (topPadding: Dp) -> Unit = {}, + content: @Composable (Modifier) -> Unit = {}, ) { val isIndicatorVisible = remember { MutableTransitionState(!isOnline) }.apply { targetState = !isOnline } - - val statusBarTopPadding = if (LocalInspectionMode.current) { - // Needed to get valid UI previews - 24.dp - } else { - WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + 6.dp - } - val target = remember(isIndicatorVisible.targetState, statusBarTopPadding) { - if (!isIndicatorVisible.targetState) 0.dp else statusBarTopPadding - } - val animationStateOffset by animateDpAsState( - targetValue = target, - animationSpec = spring( - stiffness = Spring.StiffnessMediumLow, - visibilityThreshold = 1.dp, - ), - label = "insets-animation", - ) - - content(animationStateOffset) - - // Display the network indicator with an animation - AnimatedVisibility( - visibleState = isIndicatorVisible, - enter = fadeIn() + expandVertically(), - exit = fadeOut() + shrinkVertically(), - ) { - Indicator(modifier) + Column(modifier = modifier) { + val statusBarTopPadding = if (LocalInspectionMode.current) { + // Needed to get valid UI previews + 24.dp + } else { + WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + INDICATOR_VERTICAL_PADDING + } + val target = if (isIndicatorVisible.targetState) statusBarTopPadding else 0.dp + val topWindowInset by animateDpAsState( + targetValue = target, + animationSpec = spring( + stiffness = Spring.StiffnessMediumLow, + visibilityThreshold = 1.dp, + ), + label = "insets-animation", + ) + // Display the network indicator with an animation + AnimatedVisibility( + visibleState = isIndicatorVisible, + enter = fadeIn() + expandVertically(), + exit = fadeOut() + shrinkVertically(), + ) { + ConnectivityIndicator(verticalPadding = INDICATOR_VERTICAL_PADDING) + } + // Consume the window insets to avoid double padding. + content( + Modifier.consumeWindowInsets(PaddingValues(top = topWindowInset)) + ) } } diff --git a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt b/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt deleted file mode 100644 index 3e18046878..0000000000 --- a/features/networkmonitor/api/src/main/kotlin/io/element/android/features/networkmonitor/api/ui/ConnectivityIndicatorView.kt +++ /dev/null @@ -1,65 +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.networkmonitor.api.ui - -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.core.MutableTransitionState -import androidx.compose.animation.expandVertically -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut -import androidx.compose.animation.shrinkVertically -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.statusBarsPadding -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import io.element.android.libraries.designsystem.preview.ElementPreview -import io.element.android.libraries.designsystem.preview.PreviewsDayNight - -/** - * A view that displays a connectivity indicator when the device is offline, adding a default - * padding to make sure the status bar is not overlapped. - */ -@Composable -fun ConnectivityIndicatorView( - isOnline: Boolean, -) { - val isIndicatorVisible = remember { MutableTransitionState(!isOnline) }.apply { targetState = !isOnline } - val isStatusBarPaddingVisible = remember { MutableTransitionState(isOnline) }.apply { targetState = isOnline } - - // Display the network indicator with an animation - AnimatedVisibility( - visibleState = isIndicatorVisible, - enter = fadeIn() + expandVertically(), - exit = fadeOut() + shrinkVertically(), - ) { - Indicator() - } - - // Show missing status bar padding when the indicator is not visible - AnimatedVisibility( - visibleState = isStatusBarPaddingVisible, - enter = fadeIn() + expandVertically(), - exit = fadeOut() + shrinkVertically(), - ) { - StatusBarPaddingSpacer() - } -} - -@Composable -private fun StatusBarPaddingSpacer(modifier: Modifier = Modifier) { - Spacer(modifier = modifier.statusBarsPadding()) -} - -@PreviewsDayNight -@Composable -internal fun ConnectivityIndicatorViewPreview() { - ElementPreview { - ConnectivityIndicatorView(isOnline = false) - } -} From 1902b6a4e544256e56ef35275a1fc57e0a51cc50 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Tue, 21 Oct 2025 14:31:48 +0000 Subject: [PATCH 146/898] Update screenshots --- .../appnav.room.joined_LoadingRoomNodeView_Day_0_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Day_1_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Night_0_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Night_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_1_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_1_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_10_en.png | 3 --- .../images/features.messages.impl_MessagesView_Day_1_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_2_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_3_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_4_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_5_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_6_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_7_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_8_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Day_9_en.png | 4 ++-- .../features.messages.impl_MessagesView_Night_10_en.png | 3 --- .../images/features.messages.impl_MessagesView_Night_1_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_2_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_3_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_4_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_5_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_6_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_7_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_8_en.png | 4 ++-- .../images/features.messages.impl_MessagesView_Night_9_en.png | 4 ++-- ....networkmonitor.api.ui_ConnectivityIndicator_Day_0_en.png} | 0 ...etworkmonitor.api.ui_ConnectivityIndicator_Night_0_en.png} | 0 .../features.networkmonitor.api.ui_Indicator_Day_0_en.png | 3 --- .../features.networkmonitor.api.ui_Indicator_Night_0_en.png | 3 --- 30 files changed, 48 insertions(+), 60 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png rename tests/uitests/src/test/snapshots/images/{features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png => features.networkmonitor.api.ui_ConnectivityIndicator_Day_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png => features.networkmonitor.api.ui_ConnectivityIndicator_Night_0_en.png} (100%) delete mode 100644 tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png index 310d0ce9fe..58d3ffea16 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:513b6de9643106b0c021a60a2791e6227ce81ff1089338a5d3de8ba525e353ab -size 8389 +oid sha256:c9583a29e680bee98819258e5b7356dd8677144957d5869da72c47685d986e87 +size 6494 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png index f01029b957..ef5c3290e1 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7aebe39a70a79e025d392ffb6c97793c828cc29acf7700461399e6cbea0d27a3 -size 10512 +oid sha256:f5c19a8b26c9187c9bfd630242b15370ec8f0b874f9d3913ce53c743c0e0bdcd +size 8574 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png index 9246f89c07..05eb8b590c 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89bd61aa2d74f720a2b1d73fa5379e712fc61e423cbcbfab83cb291bdbd75766 -size 8013 +oid sha256:74ad11143fc70164f67a8326cb87ce90a2c8730317540810ea138e39fc9093fa +size 6306 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png index 7ac1f95544..04b13d3533 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:831058152c5c6e691afecab498ae07f4b35f7b75438a4efa1841cc04922bb7be -size 10037 +oid sha256:bde612ade7298aeef44bbc480ee9d742ccb8c94108e21dcae9e804c744032a08 +size 8308 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png index b5491b11c2..ac59c14e46 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bc9668d1caef19e9a4fe76ff4ed0eab8107aa493c3adcaef7ebbbb878925ac62 -size 66408 +oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 +size 65098 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png index ea4098d13d..56b6111cb7 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bfc8aff1305c39b400c95831a6b07f00c376c328b3ad2281cf4b6b74970f67c -size 61538 +oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 +size 60213 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png deleted file mode 100644 index 6fe7bf12f9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_10_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67981be91a4736680a69b9d2dfe11cab3a69e0d375cf2589e38bed3630b9fc12 -size 53199 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png index 6cdba980f9..eb74b4c697 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dd9bacf4f467ac0f2b1050fcf5a4246e520674009471c05d2e32eb5d1d1f7bf -size 57599 +oid sha256:3917d9d2d5c67e840e613cc8dfc39212e11853ac8710e87af554e20dea31d34d +size 39439 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png index eb74b4c697..e65e33d743 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3917d9d2d5c67e840e613cc8dfc39212e11853ac8710e87af554e20dea31d34d -size 39439 +oid sha256:432fae13ece80f287afc16411ca162c2ea0b19d66b148adcb13c7710ac442b5d +size 60866 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png index e65e33d743..97b59cf5bf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:432fae13ece80f287afc16411ca162c2ea0b19d66b148adcb13c7710ac442b5d -size 60866 +oid sha256:cc380e2b1c75c5b38ac410a271ddb9c02d41ebf9ff037fc59f20d23d87241590 +size 56864 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png index 97b59cf5bf..7873d95d66 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cc380e2b1c75c5b38ac410a271ddb9c02d41ebf9ff037fc59f20d23d87241590 -size 56864 +oid sha256:0cb2168ef240a788416f0f7d5cf949b282b9c4cf76338c4d547562b15ff3dba1 +size 55322 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png index 7873d95d66..648fa50528 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cb2168ef240a788416f0f7d5cf949b282b9c4cf76338c4d547562b15ff3dba1 -size 55322 +oid sha256:17ec77b5053bff9057d6b122140f53c5384abac7998bbc8d770db95a04bc0062 +size 59963 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png index 648fa50528..e2c39da845 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17ec77b5053bff9057d6b122140f53c5384abac7998bbc8d770db95a04bc0062 -size 59963 +oid sha256:ac595ce33affb3eec6c465fd68ab1fa57eb942f58944cc16e5e01892a21ba4a7 +size 50323 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png index e2c39da845..c784b566db 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac595ce33affb3eec6c465fd68ab1fa57eb942f58944cc16e5e01892a21ba4a7 -size 50323 +oid sha256:2831b5841aac7cdec50829002aa46fabf530163e0600185f32da0793c3637fb5 +size 61695 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png index c784b566db..7f20ff552d 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2831b5841aac7cdec50829002aa46fabf530163e0600185f32da0793c3637fb5 -size 61695 +oid sha256:ac8dd9bc435999370adc7b3d4a0eb96c7eeedcb500818b44e05aafe759b720ba +size 63860 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png index 7f20ff552d..6fe7bf12f9 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac8dd9bc435999370adc7b3d4a0eb96c7eeedcb500818b44e05aafe759b720ba -size 63860 +oid sha256:67981be91a4736680a69b9d2dfe11cab3a69e0d375cf2589e38bed3630b9fc12 +size 53199 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png deleted file mode 100644 index e2f96c870f..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_10_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7fb56dba32bfc9db1ddf201d118c580b21143f1f74575bda95ff43fa0914b2a3 -size 52344 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png index ac950f3c88..9530e558ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e64f40aac075bd075f92cf98ffa864ced12b3a43a874d72cd5f293202859623 -size 55090 +oid sha256:beb8fc32a4b048ba5c5053ad5d62da55aac8072234af59a2a1af6dd3b03be74c +size 37401 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png index 9530e558ab..bc8637095e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:beb8fc32a4b048ba5c5053ad5d62da55aac8072234af59a2a1af6dd3b03be74c -size 37401 +oid sha256:d654cda7c0f4df547ccf00fc3a8121d0c5bd2b337be17b71f7b95e5987833032 +size 58473 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png index bc8637095e..6078d81cbf 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d654cda7c0f4df547ccf00fc3a8121d0c5bd2b337be17b71f7b95e5987833032 -size 58473 +oid sha256:794ef2d62ae364d456930dc7879741848c8f65696a5b7676b032da70e3ef7330 +size 51156 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png index 6078d81cbf..aef3f70a89 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:794ef2d62ae364d456930dc7879741848c8f65696a5b7676b032da70e3ef7330 -size 51156 +oid sha256:96bdb7695db3a0476480e4e675dfc5d088d210b519a3f6b9592bbe6ec18f4ec6 +size 52985 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png index aef3f70a89..d8299fa73a 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96bdb7695db3a0476480e4e675dfc5d088d210b519a3f6b9592bbe6ec18f4ec6 -size 52985 +oid sha256:e12bc7c029daee03dc31bc889c37ebbd597ac61bf18bf13867a867983a79bb2b +size 54085 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png index d8299fa73a..4db80abcb1 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e12bc7c029daee03dc31bc889c37ebbd597ac61bf18bf13867a867983a79bb2b -size 54085 +oid sha256:72023d9b9eaade788d33ef6c123a89edc079c4cc543421c256676b75fba6adc1 +size 44505 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png index 4db80abcb1..255e8a62ad 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72023d9b9eaade788d33ef6c123a89edc079c4cc543421c256676b75fba6adc1 -size 44505 +oid sha256:1ad3ae1b79bf30293e306ebac5806d328569f03b1370adb39c6dec143d8789c1 +size 59027 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png index 255e8a62ad..542e857d5e 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ad3ae1b79bf30293e306ebac5806d328569f03b1370adb39c6dec143d8789c1 -size 59027 +oid sha256:83a7cce4a92980220d2afd24d895154d1a463e685c9f81ee91707ae78c12809d +size 64594 diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png index 542e857d5e..e2f96c870f 100644 --- a/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.messages.impl_MessagesView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83a7cce4a92980220d2afd24d895154d1a463e685c9f81ee91707ae78c12809d -size 64594 +oid sha256:7fb56dba32bfc9db1ddf201d118c580b21143f1f74575bda95ff43fa0914b2a3 +size 52344 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicator_Day_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Day_0_en.png rename to tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicator_Day_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicator_Night_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicatorView_Night_0_en.png rename to tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_ConnectivityIndicator_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png deleted file mode 100644 index 7201350ae2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d7cbce14d66654ba69cd6a154eefecebacf1556f29c5ccefb1d6f1975270814 -size 5427 diff --git a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png deleted file mode 100644 index 4cc90db554..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.networkmonitor.api.ui_Indicator_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14927029a06e7f4f5346573d5020fa7582ff716dd552db969bb84304a879d4f0 -size 5384 From 3d203d19e13b3d9374421a482e57e8381425d202 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 21 Oct 2025 17:26:43 +0200 Subject: [PATCH 147/898] misc: fix insets for search room list after offline banner rework --- .../android/features/home/impl/search/RoomListSearchView.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt index 05ee11997d..a506ab7176 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt @@ -20,7 +20,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.TextFieldDefaults -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -51,7 +50,6 @@ import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.TopAppBar -import io.element.android.libraries.designsystem.utils.copy import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.ui.strings.CommonStrings @@ -157,7 +155,6 @@ private fun RoomListSearchContent( focusRequester.saveFocusedChild() } }, - windowInsets = TopAppBarDefaults.windowInsets.copy(top = 0) ) } ) { padding -> From c2c77aad2a8ba66b9202b3afab90689c0db68a84 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 09:32:15 +0200 Subject: [PATCH 148/898] Improve API and fix theme glitch when switching between accounts. --- .../io/element/android/x/MainActivity.kt | 10 ++++++- .../android/appnav/LoggedInFlowNode.kt | 29 +++++++++++++++---- enterprise | 2 +- .../android/features/call/api/CallType.kt | 7 +++++ .../call/impl/ui/ElementCallActivity.kt | 10 ++++++- .../call/impl/ui/IncomingCallActivity.kt | 10 ++++++- .../enterprise/api/EnterpriseService.kt | 24 ++++++++++----- .../impl/DefaultEnterpriseService.kt | 23 +++++---------- .../enterprise/test/FakeEnterpriseService.kt | 23 ++++++--------- .../impl/unlock/activity/PinUnlockActivity.kt | 10 ++++++- .../reporter/DefaultBugReporterUrlProvider.kt | 25 +++++++++++----- libraries/designsystem/build.gradle.kts | 1 - .../designsystem/theme/ElementThemeApp.kt | 7 ++--- 13 files changed, 120 insertions(+), 61 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/MainActivity.kt b/app/src/main/kotlin/io/element/android/x/MainActivity.kt index f80db878a7..b919351a80 100644 --- a/app/src/main/kotlin/io/element/android/x/MainActivity.kt +++ b/app/src/main/kotlin/io/element/android/x/MainActivity.kt @@ -16,6 +16,9 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen @@ -26,6 +29,7 @@ import com.bumble.appyx.core.integration.NodeHost import com.bumble.appyx.core.integrationpoint.NodeActivity import com.bumble.appyx.core.plugin.NodeReadyObserver import io.element.android.compound.theme.ElementTheme +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenService @@ -61,9 +65,13 @@ class MainActivity : NodeActivity() { @Composable private fun MainContent(appBindings: AppBindings) { val migrationState = appBindings.migrationEntryPoint().present() + val colors by remember { + appBindings.enterpriseService().semanticColorsFlow(sessionId = null) + }.collectAsState(SemanticColorsLightDark.default) ElementThemeApp( appPreferencesStore = appBindings.preferencesStore(), - enterpriseService = appBindings.enterpriseService(), + compoundLight = colors.light, + compoundDark = colors.dark, buildMeta = appBindings.buildMeta() ) { CompositionLocalProvider( diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index b0fc707d07..0eea6f5236 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.composable.PermanentChild @@ -46,6 +47,8 @@ import io.element.android.appnav.loggedin.SendQueues import io.element.android.appnav.room.RoomFlowNode import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.enterprise.api.SessionEnterpriseService import io.element.android.features.ftue.api.FtueEntryPoint import io.element.android.features.ftue.api.state.FtueService @@ -66,6 +69,8 @@ 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.architecture.waitForNavTargetAttached +import io.element.android.libraries.core.meta.BuildMeta +import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.annotations.SessionCoroutineScope @@ -79,6 +84,7 @@ 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.verification.SessionVerificationServiceListener import io.element.android.libraries.matrix.api.verification.VerificationRequest +import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.push.api.notifications.conversations.NotificationConversationService import io.element.android.libraries.ui.common.nodes.emptyNode import io.element.android.services.appnavstate.api.AppNavigationStateService @@ -122,6 +128,9 @@ class LoggedInFlowNode( private val sessionEnterpriseService: SessionEnterpriseService, private val networkMonitor: NetworkMonitor, private val notificationConversationService: NotificationConversationService, + private val enterpriseService: EnterpriseService, + private val appPreferencesStore: AppPreferencesStore, + private val buildMeta: BuildMeta, snackbarDispatcher: SnackbarDispatcher, ) : BaseFlowNode( backstack = BackStack( @@ -538,11 +547,21 @@ class LoggedInFlowNode( @Composable override fun View(modifier: Modifier) { - Box(modifier = modifier) { - val ftueState by ftueService.state.collectAsState() - BackstackView() - if (ftueState is FtueState.Complete) { - PermanentChild(permanentNavModel = permanentNavModel, navTarget = NavTarget.LoggedInPermanent) + val colors by remember { + enterpriseService.semanticColorsFlow(sessionId = matrixClient.sessionId) + }.collectAsState(SemanticColorsLightDark.default) + ElementThemeApp( + appPreferencesStore = appPreferencesStore, + compoundLight = colors.light, + compoundDark = colors.dark, + buildMeta = buildMeta, + ) { + Box(modifier = modifier) { + val ftueState by ftueService.state.collectAsState() + BackstackView() + if (ftueState is FtueState.Complete) { + PermanentChild(permanentNavModel = permanentNavModel, navTarget = NavTarget.LoggedInPermanent) + } } } } diff --git a/enterprise b/enterprise index f662f079f9..b5ab0a6aa0 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit f662f079f911b728e5769d10268e2c2775d7287a +Subproject commit b5ab0a6aa01aa03e89fa7593ea144a043b8f7487 diff --git a/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt b/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt index 2c279b7725..677b76a825 100644 --- a/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt +++ b/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt @@ -31,3 +31,10 @@ sealed interface CallType : NodeInputs, Parcelable { } } } + +fun CallType.getSessionId(): SessionId? { + return when (this) { + is CallType.ExternalUrl -> null + is CallType.RoomCall -> sessionId + } +} diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt index ae04606d29..75fff51892 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt @@ -23,8 +23,10 @@ import androidx.appcompat.app.AppCompatActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.core.app.PictureInPictureModeChangedInfo import androidx.core.content.IntentCompat @@ -33,6 +35,7 @@ import androidx.lifecycle.Lifecycle import dev.zacsweers.metro.Inject import io.element.android.features.call.api.CallType import io.element.android.features.call.api.CallType.ExternalUrl +import io.element.android.features.call.api.getSessionId import io.element.android.features.call.impl.DefaultElementCallEntryPoint import io.element.android.features.call.impl.di.CallBindings import io.element.android.features.call.impl.pip.PictureInPictureEvents @@ -42,6 +45,7 @@ import io.element.android.features.call.impl.pip.PipView import io.element.android.features.call.impl.services.CallForegroundService import io.element.android.features.call.impl.utils.CallIntentDataParser import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.androidutils.browser.ConsoleMessageLogger import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.bindings @@ -105,9 +109,13 @@ class ElementCallActivity : setContent { val pipState = pictureInPicturePresenter.present() ListenToAndroidEvents(pipState) + val colors by remember(webViewTarget.value?.getSessionId()) { + enterpriseService.semanticColorsFlow(sessionId = webViewTarget.value?.getSessionId()) + }.collectAsState(SemanticColorsLightDark.default) ElementThemeApp( appPreferencesStore = appPreferencesStore, - enterpriseService = enterpriseService, + compoundLight = colors.light, + compoundDark = colors.dark, buildMeta = buildMeta, ) { val state = presenter.present() diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt index daf0e26797..10273e4fd6 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt @@ -11,6 +11,9 @@ import android.os.Bundle import android.view.WindowManager import androidx.activity.compose.setContent import androidx.appcompat.app.AppCompatActivity +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.core.content.IntentCompat import androidx.lifecycle.lifecycleScope import dev.zacsweers.metro.Inject @@ -21,6 +24,7 @@ import io.element.android.features.call.impl.notifications.CallNotificationData import io.element.android.features.call.impl.utils.ActiveCallManager import io.element.android.features.call.impl.utils.CallState import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.architecture.bindings import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.ElementThemeApp @@ -78,9 +82,13 @@ class IncomingCallActivity : AppCompatActivity() { val notificationData = intent?.let { IntentCompat.getParcelableExtra(it, EXTRA_NOTIFICATION_DATA, CallNotificationData::class.java) } if (notificationData != null) { setContent { + val colors by remember { + enterpriseService.semanticColorsFlow(sessionId = notificationData.sessionId) + }.collectAsState(SemanticColorsLightDark.default) ElementThemeApp( appPreferencesStore = appPreferencesStore, - enterpriseService = enterpriseService, + compoundLight = colors.light, + compoundDark = colors.dark, buildMeta = buildMeta, ) { IncomingCallScreen( diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index 2f62327643..d7140867c9 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -7,9 +7,9 @@ package io.element.android.features.enterprise.api -import androidx.compose.runtime.Composable -import androidx.compose.runtime.State import io.element.android.compound.tokens.generated.SemanticColors +import io.element.android.compound.tokens.generated.compoundColorsDark +import io.element.android.compound.tokens.generated.compoundColorsLight import io.element.android.libraries.matrix.api.core.SessionId import kotlinx.coroutines.flow.Flow @@ -26,16 +26,12 @@ interface EnterpriseService { */ suspend fun overrideBrandColor(sessionId: SessionId?, brandColor: String?) - @Composable - fun semanticColorsLight(): State - - @Composable - fun semanticColorsDark(): State + fun semanticColorsFlow(sessionId: SessionId?): Flow fun firebasePushGateway(): String? fun unifiedPushDefaultPushGateway(): String? - val bugReportUrlFlow: Flow + fun bugReportUrlFlow(sessionId: SessionId?): Flow companion object { const val ANY_ACCOUNT_PROVIDER = "*" @@ -47,3 +43,15 @@ fun EnterpriseService.canConnectToAnyHomeserver(): Boolean { it.isEmpty() || it.contains(EnterpriseService.ANY_ACCOUNT_PROVIDER) } } + +data class SemanticColorsLightDark( + val light: SemanticColors, + val dark: SemanticColors, +) { + companion object { + val default = SemanticColorsLightDark( + light = compoundColorsLight, + dark = compoundColorsDark, + ) + } +} diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index f2171c4a49..cfff305585 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -7,19 +7,14 @@ package io.element.android.features.enterprise.impl -import androidx.compose.runtime.Composable -import androidx.compose.runtime.State -import androidx.compose.runtime.derivedStateOf -import androidx.compose.runtime.remember import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject -import io.element.android.compound.tokens.generated.SemanticColors -import io.element.android.compound.tokens.generated.compoundColorsDark -import io.element.android.compound.tokens.generated.compoundColorsLight import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf @ContributesBinding(AppScope::class) @@ -34,18 +29,14 @@ class DefaultEnterpriseService : EnterpriseService { override suspend fun overrideBrandColor(sessionId: SessionId?, brandColor: String?) = Unit - @Composable - override fun semanticColorsLight(): State { - return remember { derivedStateOf { compoundColorsLight } } - } - - @Composable - override fun semanticColorsDark(): State { - return remember { derivedStateOf { compoundColorsDark } } + override fun semanticColorsFlow(sessionId: SessionId?): Flow { + return flowOf(SemanticColorsLightDark.default) } override fun firebasePushGateway(): String? = null override fun unifiedPushDefaultPushGateway(): String? = null - override val bugReportUrlFlow = flowOf(BugReportUrl.UseDefault) + override fun bugReportUrlFlow(sessionId: SessionId?): Flow { + return flowOf(BugReportUrl.UseDefault) + } } diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 64f2898078..10ef91cf41 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -7,11 +7,9 @@ package io.element.android.features.enterprise.test -import androidx.compose.runtime.Composable -import androidx.compose.runtime.State -import io.element.android.compound.tokens.generated.SemanticColors import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.simulateLongTask @@ -24,12 +22,13 @@ class FakeEnterpriseService( private val isEnterpriseUserResult: (SessionId) -> Boolean = { lambdaError() }, private val defaultHomeserverListResult: () -> List = { emptyList() }, private val isAllowedToConnectToHomeserverResult: (String) -> Boolean = { lambdaError() }, - private val semanticColorsLightResult: () -> State = { lambdaError() }, - private val semanticColorsDarkResult: () -> State = { lambdaError() }, + initialSemanticColors: SemanticColorsLightDark = SemanticColorsLightDark.default, private val overrideBrandColorResult: (SessionId?, String?) -> Unit = { _, _ -> lambdaError() }, private val firebasePushGatewayResult: () -> String? = { lambdaError() }, private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() }, ) : EnterpriseService { + private val semanticColorsState = MutableStateFlow(initialSemanticColors) + override suspend fun isEnterpriseUser(sessionId: SessionId): Boolean = simulateLongTask { isEnterpriseUserResult(sessionId) } @@ -46,14 +45,8 @@ class FakeEnterpriseService( overrideBrandColorResult(sessionId, brandColor) } - @Composable - override fun semanticColorsLight(): State { - return semanticColorsLightResult() - } - - @Composable - override fun semanticColorsDark(): State { - return semanticColorsDarkResult() + override fun semanticColorsFlow(sessionId: SessionId?): Flow { + return semanticColorsState.asStateFlow() } override fun firebasePushGateway(): String? { @@ -65,5 +58,7 @@ class FakeEnterpriseService( } val bugReportUrlMutableFlow = MutableStateFlow(BugReportUrl.UseDefault) - override val bugReportUrlFlow: Flow = bugReportUrlMutableFlow.asStateFlow() + override fun bugReportUrlFlow(sessionId: SessionId?): Flow { + return bugReportUrlMutableFlow.asStateFlow() + } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt index a494bca8c6..11025b036e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt @@ -14,9 +14,13 @@ import androidx.activity.OnBackPressedCallback import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.lifecycle.lifecycleScope import dev.zacsweers.metro.Inject import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.impl.unlock.PinUnlockPresenter @@ -46,9 +50,13 @@ class PinUnlockActivity : AppCompatActivity() { super.onCreate(savedInstanceState) bindings().inject(this) setContent { + val colors by remember { + enterpriseService.semanticColorsFlow(sessionId = null) + }.collectAsState(SemanticColorsLightDark.default) ElementThemeApp( appPreferencesStore = appPreferencesStore, - enterpriseService = enterpriseService, + compoundLight = colors.light, + compoundDark = colors.dark, buildMeta = buildMeta, ) { val state = presenter.present() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt index 84f8e2ca0a..7148d9e95e 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt @@ -13,7 +13,12 @@ import dev.zacsweers.metro.Inject import io.element.android.appconfig.RageshakeConfig import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.sessionstorage.api.SessionStore +import io.element.android.libraries.sessionstorage.api.sessionIdFlow +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import okhttp3.HttpUrl @@ -24,17 +29,21 @@ import okhttp3.HttpUrl.Companion.toHttpUrl class DefaultBugReporterUrlProvider( private val bugReportAppNameProvider: BugReportAppNameProvider, private val enterpriseService: EnterpriseService, + private val sessionStore: SessionStore, ) : BugReporterUrlProvider { + @OptIn(ExperimentalCoroutinesApi::class) override fun provide(): Flow { if (bugReportAppNameProvider.provide().isEmpty()) return flowOf(null) - return enterpriseService.bugReportUrlFlow - .map { bugReportUrl -> - when (bugReportUrl) { - is BugReportUrl.Custom -> bugReportUrl.url - BugReportUrl.Disabled -> null - BugReportUrl.UseDefault -> RageshakeConfig.BUG_REPORT_URL.takeIf { it.isNotEmpty() } + return sessionStore.sessionIdFlow().flatMapLatest { sessionId -> + enterpriseService.bugReportUrlFlow(sessionId?.let(::SessionId)) + .map { bugReportUrl -> + when (bugReportUrl) { + is BugReportUrl.Custom -> bugReportUrl.url + BugReportUrl.Disabled -> null + BugReportUrl.UseDefault -> RageshakeConfig.BUG_REPORT_URL.takeIf { it.isNotEmpty() } + } } - } - .map { it?.toHttpUrl() } + .map { it?.toHttpUrl() } + } } } diff --git a/libraries/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts index 3983317055..ff0b4878b2 100644 --- a/libraries/designsystem/build.gradle.kts +++ b/libraries/designsystem/build.gradle.kts @@ -33,7 +33,6 @@ android { implementation(libs.androidx.compose.material3.adaptive) implementation(libs.coil.compose) implementation(libs.vanniktech.blurhash) - implementation(projects.features.enterprise.api) implementation(projects.libraries.androidutils) implementation(projects.libraries.architecture) implementation(projects.libraries.core) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt index 78d02c7f17..adec2348ef 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/ElementThemeApp.kt @@ -19,7 +19,7 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.Theme import io.element.android.compound.theme.isDark import io.element.android.compound.theme.mapToTheme -import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.compound.tokens.generated.SemanticColors import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.preferences.api.store.AppPreferencesStore @@ -53,7 +53,8 @@ val LocalBuildMeta = staticCompositionLocalOf { @Composable fun ElementThemeApp( appPreferencesStore: AppPreferencesStore, - enterpriseService: EnterpriseService, + compoundLight: SemanticColors, + compoundDark: SemanticColors, buildMeta: BuildMeta, content: @Composable () -> Unit, ) { @@ -70,8 +71,6 @@ fun ElementThemeApp( } ) } - val compoundLight by enterpriseService.semanticColorsLight() - val compoundDark by enterpriseService.semanticColorsDark() CompositionLocalProvider( LocalBuildMeta provides buildMeta, ) { From 82c6aca7e540f1d5a4b99d42b98e715e6efe761a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 09:35:55 +0200 Subject: [PATCH 149/898] Move SemanticColorsLightDark to compound module --- .../io/element/android/x/MainActivity.kt | 2 +- .../android/appnav/LoggedInFlowNode.kt | 2 +- enterprise | 2 +- .../call/impl/ui/ElementCallActivity.kt | 2 +- .../call/impl/ui/IncomingCallActivity.kt | 2 +- .../enterprise/api/EnterpriseService.kt | 16 +------------ .../impl/DefaultEnterpriseService.kt | 2 +- .../enterprise/test/FakeEnterpriseService.kt | 2 +- .../impl/unlock/activity/PinUnlockActivity.kt | 2 +- .../colors/SemanticColorsLightDark.kt | 24 +++++++++++++++++++ 10 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 libraries/compound/src/main/kotlin/io/element/android/compound/colors/SemanticColorsLightDark.kt diff --git a/app/src/main/kotlin/io/element/android/x/MainActivity.kt b/app/src/main/kotlin/io/element/android/x/MainActivity.kt index b919351a80..836a78b398 100644 --- a/app/src/main/kotlin/io/element/android/x/MainActivity.kt +++ b/app/src/main/kotlin/io/element/android/x/MainActivity.kt @@ -28,8 +28,8 @@ import androidx.lifecycle.repeatOnLifecycle import com.bumble.appyx.core.integration.NodeHost import com.bumble.appyx.core.integrationpoint.NodeActivity import com.bumble.appyx.core.plugin.NodeReadyObserver +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.compound.theme.ElementTheme -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenService diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 0eea6f5236..29b74c2624 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -47,8 +47,8 @@ import io.element.android.appnav.loggedin.SendQueues import io.element.android.appnav.room.RoomFlowNode import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.enterprise.api.SessionEnterpriseService import io.element.android.features.ftue.api.FtueEntryPoint import io.element.android.features.ftue.api.state.FtueService diff --git a/enterprise b/enterprise index b5ab0a6aa0..70f85be002 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit b5ab0a6aa01aa03e89fa7593ea144a043b8f7487 +Subproject commit 70f85be002edebf773c274f978cd706a36c090a8 diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt index 75fff51892..5b35d68755 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt @@ -33,6 +33,7 @@ import androidx.core.content.IntentCompat import androidx.core.util.Consumer import androidx.lifecycle.Lifecycle import dev.zacsweers.metro.Inject +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.call.api.CallType import io.element.android.features.call.api.CallType.ExternalUrl import io.element.android.features.call.api.getSessionId @@ -45,7 +46,6 @@ import io.element.android.features.call.impl.pip.PipView import io.element.android.features.call.impl.services.CallForegroundService import io.element.android.features.call.impl.utils.CallIntentDataParser import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.androidutils.browser.ConsoleMessageLogger import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.bindings diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt index 10273e4fd6..34f229b5dc 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/IncomingCallActivity.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.remember import androidx.core.content.IntentCompat import androidx.lifecycle.lifecycleScope import dev.zacsweers.metro.Inject +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint import io.element.android.features.call.impl.di.CallBindings @@ -24,7 +25,6 @@ import io.element.android.features.call.impl.notifications.CallNotificationData import io.element.android.features.call.impl.utils.ActiveCallManager import io.element.android.features.call.impl.utils.CallState import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.architecture.bindings import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.ElementThemeApp diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index d7140867c9..0c855c3a82 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -7,9 +7,7 @@ package io.element.android.features.enterprise.api -import io.element.android.compound.tokens.generated.SemanticColors -import io.element.android.compound.tokens.generated.compoundColorsDark -import io.element.android.compound.tokens.generated.compoundColorsLight +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId import kotlinx.coroutines.flow.Flow @@ -43,15 +41,3 @@ fun EnterpriseService.canConnectToAnyHomeserver(): Boolean { it.isEmpty() || it.contains(EnterpriseService.ANY_ACCOUNT_PROVIDER) } } - -data class SemanticColorsLightDark( - val light: SemanticColors, - val dark: SemanticColors, -) { - companion object { - val default = SemanticColorsLightDark( - light = compoundColorsLight, - dark = compoundColorsDark, - ) - } -} diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index cfff305585..a619c9cf8f 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -10,9 +10,9 @@ package io.element.android.features.enterprise.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 10ef91cf41..2aedd1edbd 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -7,9 +7,9 @@ package io.element.android.features.enterprise.test +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.simulateLongTask diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt index 11025b036e..2eacb9fdd0 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/activity/PinUnlockActivity.kt @@ -19,8 +19,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.lifecycle.lifecycleScope import dev.zacsweers.metro.Inject +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.enterprise.api.SemanticColorsLightDark import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.features.lockscreen.impl.unlock.PinUnlockPresenter diff --git a/libraries/compound/src/main/kotlin/io/element/android/compound/colors/SemanticColorsLightDark.kt b/libraries/compound/src/main/kotlin/io/element/android/compound/colors/SemanticColorsLightDark.kt new file mode 100644 index 0000000000..40667f5009 --- /dev/null +++ b/libraries/compound/src/main/kotlin/io/element/android/compound/colors/SemanticColorsLightDark.kt @@ -0,0 +1,24 @@ +/* + * 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.compound.colors + +import io.element.android.compound.tokens.generated.SemanticColors +import io.element.android.compound.tokens.generated.compoundColorsDark +import io.element.android.compound.tokens.generated.compoundColorsLight + +data class SemanticColorsLightDark( + val light: SemanticColors, + val dark: SemanticColors, +) { + companion object { + val default = SemanticColorsLightDark( + light = compoundColorsLight, + dark = compoundColorsDark, + ) + } +} From 9af694b4a248c889244d60bf4d1faf81274a5d58 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 09:48:07 +0200 Subject: [PATCH 150/898] Use right colors on ForcedDarkElementTheme --- features/messages/impl/build.gradle.kts | 1 + .../attachments/preview/AttachmentsPreviewNode.kt | 15 ++++++++++++++- .../compound/theme/ForcedDarkElementTheme.kt | 10 +++++++++- .../screenshot/ForcedDarkElementThemeTest.kt | 5 ++++- libraries/mediaviewer/impl/build.gradle.kts | 1 + .../mediaviewer/impl/viewer/MediaViewerNode.kt | 15 ++++++++++++++- 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index d05ede00ab..43efad9da0 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { api(projects.features.messages.api) implementation(projects.appconfig) implementation(projects.features.call.api) + implementation(projects.features.enterprise.api) implementation(projects.features.location.api) implementation(projects.features.poll.api) implementation(projects.features.roomcall.api) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt index 1df9969f72..985557c8d8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewNode.kt @@ -8,6 +8,9 @@ package io.element.android.features.messages.impl.attachments.preview import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node @@ -15,12 +18,15 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.compound.theme.ForcedDarkElementTheme +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.mediaviewer.api.local.LocalMediaRenderer @@ -31,6 +37,8 @@ class AttachmentsPreviewNode( @Assisted plugins: List, presenterFactory: AttachmentsPreviewPresenter.Factory, private val localMediaRenderer: LocalMediaRenderer, + private val sessionId: SessionId, + private val enterpriseService: EnterpriseService, ) : Node(buildContext, plugins = plugins) { data class Inputs( val attachment: Attachment, @@ -53,7 +61,12 @@ class AttachmentsPreviewNode( @Composable override fun View(modifier: Modifier) { - ForcedDarkElementTheme { + val colors by remember { + enterpriseService.semanticColorsFlow(sessionId = sessionId) + }.collectAsState(SemanticColorsLightDark.default) + ForcedDarkElementTheme( + colors = colors, + ) { val state = presenter.present() AttachmentsPreviewView( state = state, diff --git a/libraries/compound/src/main/kotlin/io/element/android/compound/theme/ForcedDarkElementTheme.kt b/libraries/compound/src/main/kotlin/io/element/android/compound/theme/ForcedDarkElementTheme.kt index cd168713ae..fe9ea18b9c 100644 --- a/libraries/compound/src/main/kotlin/io/element/android/compound/theme/ForcedDarkElementTheme.kt +++ b/libraries/compound/src/main/kotlin/io/element/android/compound/theme/ForcedDarkElementTheme.kt @@ -16,6 +16,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb +import io.element.android.compound.colors.SemanticColorsLightDark /** * Can be used to force a composable in dark theme. @@ -23,6 +24,7 @@ import androidx.compose.ui.graphics.toArgb */ @Composable fun ForcedDarkElementTheme( + colors: SemanticColorsLightDark, lightStatusBar: Boolean = false, content: @Composable () -> Unit, ) { @@ -47,5 +49,11 @@ fun ForcedDarkElementTheme( ) } } - ElementTheme(darkTheme = true, lightStatusBar = lightStatusBar, content = content) + ElementTheme( + darkTheme = true, + compoundLight = colors.light, + compoundDark = colors.dark, + lightStatusBar = lightStatusBar, + content = content, + ) } diff --git a/libraries/compound/src/test/kotlin/io/element/android/compound/screenshot/ForcedDarkElementThemeTest.kt b/libraries/compound/src/test/kotlin/io/element/android/compound/screenshot/ForcedDarkElementThemeTest.kt index 341b7cb650..401fa92fc1 100644 --- a/libraries/compound/src/test/kotlin/io/element/android/compound/screenshot/ForcedDarkElementThemeTest.kt +++ b/libraries/compound/src/test/kotlin/io/element/android/compound/screenshot/ForcedDarkElementThemeTest.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.test.ext.junit.runners.AndroidJUnit4 import com.github.takahirom.roborazzi.captureRoboImage +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.compound.screenshot.utils.screenshotFile import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ForcedDarkElementTheme @@ -42,7 +43,9 @@ class ForcedDarkElementThemeTest { verticalArrangement = Arrangement.spacedBy(10.dp) ) { Text(text = "Outside") - ForcedDarkElementTheme { + ForcedDarkElementTheme( + colors = SemanticColorsLightDark.default, + ) { Surface { Box(modifier = Modifier.fillMaxSize()) { Text(text = "Inside ForcedDarkElementTheme", modifier = Modifier.align(Alignment.Center)) diff --git a/libraries/mediaviewer/impl/build.gradle.kts b/libraries/mediaviewer/impl/build.gradle.kts index 4af1c54f46..4c373da5eb 100644 --- a/libraries/mediaviewer/impl/build.gradle.kts +++ b/libraries/mediaviewer/impl/build.gradle.kts @@ -32,6 +32,7 @@ dependencies { implementation(libs.vanniktech.blurhash) implementation(libs.telephoto.flick) + implementation(projects.features.enterprise.api) implementation(projects.features.viewfolder.api) implementation(projects.libraries.androidutils) implementation(projects.libraries.architecture) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index cb9743bf97..6599411411 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -8,6 +8,9 @@ package io.element.android.libraries.mediaviewer.impl.viewer import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node @@ -16,13 +19,16 @@ import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.compound.theme.ForcedDarkElementTheme +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.viewfolder.api.TextFileViewer import io.element.android.libraries.architecture.inputs import io.element.android.libraries.audio.api.AudioFocus import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.media.MatrixMediaLoader import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint @@ -47,6 +53,8 @@ class MediaViewerNode( pagerKeysHandler: PagerKeysHandler, private val textFileViewer: TextFileViewer, private val audioFocus: AudioFocus, + private val sessionId: SessionId, + private val enterpriseService: EnterpriseService, ) : Node(buildContext, plugins = plugins), MediaViewerNavigator { private val inputs = inputs() @@ -127,7 +135,12 @@ class MediaViewerNode( @Composable override fun View(modifier: Modifier) { - ForcedDarkElementTheme { + val colors by remember { + enterpriseService.semanticColorsFlow(sessionId = sessionId) + }.collectAsState(SemanticColorsLightDark.default) + ForcedDarkElementTheme( + colors = colors, + ) { val state = presenter.present() MediaViewerView( state = state, From e7f6a1a5e6c5743835f82aafc60747c0c6d01957 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 10:15:32 +0200 Subject: [PATCH 151/898] Fix tests. --- enterprise | 2 +- .../impl/DefaultEnterpriseServiceTest.kt | 27 +++++++------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/enterprise b/enterprise index 70f85be002..dac93821a6 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 70f85be002edebf773c274f978cd706a36c090a8 +Subproject commit dac93821a6f9f9ad1494d3c69c115ef0696eb7ce diff --git a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt index 5701aa6574..33bb8476db 100644 --- a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt +++ b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt @@ -7,12 +7,9 @@ package io.element.android.features.enterprise.impl -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.compound.tokens.generated.compoundColorsDark -import io.element.android.compound.tokens.generated.compoundColorsLight +import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.A_SESSION_ID import kotlinx.coroutines.test.runTest @@ -44,28 +41,22 @@ class DefaultEnterpriseServiceTest { } @Test - fun `semanticColorsLight always emits the same value`() = runTest { + fun `semanticColorsFlow always emits the same value`() = runTest { val defaultEnterpriseService = DefaultEnterpriseService() - moleculeFlow(RecompositionMode.Immediate) { - defaultEnterpriseService.semanticColorsLight().value - }.test { + defaultEnterpriseService.semanticColorsFlow(null).test { val initialState = awaitItem() - assertThat(initialState).isEqualTo(compoundColorsLight) - defaultEnterpriseService.overrideBrandColor(A_SESSION_ID, "#87654321") - expectNoEvents() + assertThat(initialState).isEqualTo(SemanticColorsLightDark.default) + awaitComplete() } } @Test - fun `semanticColorsDark always emits the same value`() = runTest { + fun `semanticColorsFlow always emits the same value for a session`() = runTest { val defaultEnterpriseService = DefaultEnterpriseService() - moleculeFlow(RecompositionMode.Immediate) { - defaultEnterpriseService.semanticColorsDark().value - }.test { + defaultEnterpriseService.semanticColorsFlow(A_SESSION_ID).test { val initialState = awaitItem() - assertThat(initialState).isEqualTo(compoundColorsDark) - defaultEnterpriseService.overrideBrandColor(A_SESSION_ID, "#87654321") - expectNoEvents() + assertThat(initialState).isEqualTo(SemanticColorsLightDark.default) + awaitComplete() } } } From 1587ed5fe2c98126d83f4a3096fd52256d93cef1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 10:18:44 +0200 Subject: [PATCH 152/898] Fix tests. --- .../DefaultBugReporterUrlProviderTest.kt | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProviderTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProviderTest.kt index fb7464adf7..32e38075d8 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProviderTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProviderTest.kt @@ -11,16 +11,19 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.RageshakeConfig import io.element.android.features.enterprise.api.BugReportUrl +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.libraries.sessionstorage.api.SessionStore +import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import kotlinx.coroutines.test.runTest import okhttp3.HttpUrl.Companion.toHttpUrl import org.junit.Test class DefaultBugReporterUrlProviderTest { @Test - fun `provide return values when there is an rageshake app name`() = runTest { + fun `provide returns values when there is an rageshake app name`() = runTest { val enterpriseService = FakeEnterpriseService() - val sut = DefaultBugReporterUrlProvider( + val sut = createDefaultBugReporterUrlProvider( bugReportAppNameProvider = { "rageshakeAppName" }, enterpriseService = enterpriseService, ) @@ -36,15 +39,21 @@ class DefaultBugReporterUrlProviderTest { } @Test - fun `provide return null when there is no rageshake app name`() = runTest { - val enterpriseService = FakeEnterpriseService() - val sut = DefaultBugReporterUrlProvider( - bugReportAppNameProvider = { "" }, - enterpriseService = enterpriseService, - ) + fun `provide returns null when there is no rageshake app name`() = runTest { + val sut = createDefaultBugReporterUrlProvider() sut.provide().test { assertThat(awaitItem()).isNull() awaitComplete() } } } + +private fun createDefaultBugReporterUrlProvider( + bugReportAppNameProvider: BugReportAppNameProvider = BugReportAppNameProvider { "" }, + enterpriseService: EnterpriseService = FakeEnterpriseService(), + sessionStore: SessionStore = InMemorySessionStore(), +) = DefaultBugReporterUrlProvider( + bugReportAppNameProvider = bugReportAppNameProvider, + enterpriseService = enterpriseService, + sessionStore = sessionStore, +) From 3db100e61c9488863b3cb7b9cbdf12618588f1bd Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 10:31:12 +0200 Subject: [PATCH 153/898] Fix tests. --- libraries/mediaviewer/impl/build.gradle.kts | 1 + .../mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/libraries/mediaviewer/impl/build.gradle.kts b/libraries/mediaviewer/impl/build.gradle.kts index 4c373da5eb..ea435433f4 100644 --- a/libraries/mediaviewer/impl/build.gradle.kts +++ b/libraries/mediaviewer/impl/build.gradle.kts @@ -55,6 +55,7 @@ dependencies { implementation(projects.libraries.matrix.api) testCommonDependencies(libs, true) + testImplementation(projects.features.enterprise.test) testImplementation(projects.libraries.audio.test) testImplementation(projects.libraries.dateformatter.test) testImplementation(projects.libraries.featureflag.test) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index 3af2e8cf69..ddc04fc6ce 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -11,10 +11,12 @@ import android.net.Uri import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.media.MediaSource +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.media.FakeMatrixMediaLoader import io.element.android.libraries.mediaplayer.test.FakeAudioFocus import io.element.android.libraries.mediaviewer.api.MediaInfo @@ -63,6 +65,8 @@ class DefaultMediaViewerEntryPointTest { pagerKeysHandler = PagerKeysHandler(), textFileViewer = { _, _ -> lambdaError() }, audioFocus = FakeAudioFocus(), + sessionId = A_SESSION_ID, + enterpriseService = FakeEnterpriseService(), ) } val callback = object : MediaViewerEntryPoint.Callback { @@ -104,6 +108,8 @@ class DefaultMediaViewerEntryPointTest { pagerKeysHandler = PagerKeysHandler(), textFileViewer = { _, _ -> lambdaError() }, audioFocus = FakeAudioFocus(), + sessionId = A_SESSION_ID, + enterpriseService = FakeEnterpriseService(), ) } val callback = object : MediaViewerEntryPoint.Callback { From 4c86d78eeff32257de4f8a18d8bcd2a6601ad982 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 08:40:18 +0000 Subject: [PATCH 154/898] fix(deps): update metro to v0.7.2 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5900118e01..e9c1cdcc6a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -53,7 +53,7 @@ haze = "1.6.10" dependencyAnalysis = "3.1.0" # DI -metro = "0.7.0" +metro = "0.7.2" # Auto service autoservice = "1.1.1" From 4026757201d317bf453814cae93809d8071840fb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 11:55:58 +0200 Subject: [PATCH 155/898] Add missing tests on DefaultEnterpriseService --- .../impl/DefaultEnterpriseServiceTest.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt index 33bb8476db..b617f84bdd 100644 --- a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt +++ b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt @@ -10,6 +10,7 @@ package io.element.android.features.enterprise.impl import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.compound.colors.SemanticColorsLightDark +import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.A_SESSION_ID import kotlinx.coroutines.test.runTest @@ -59,4 +60,31 @@ class DefaultEnterpriseServiceTest { awaitComplete() } } + + @Test + fun `overrideBrandColor has no effect`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + defaultEnterpriseService.overrideBrandColor(A_SESSION_ID, "aColor") + } + + @Test + fun `firebasePushGateway returns null`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + assertThat(defaultEnterpriseService.firebasePushGateway()).isNull() + } + + @Test + fun `unifiedPushDefaultPushGateway returns null`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + assertThat(defaultEnterpriseService.unifiedPushDefaultPushGateway()).isNull() + } + + @Test + fun `bugReportUrlFlow only emits UseDefault`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + defaultEnterpriseService.bugReportUrlFlow(A_SESSION_ID).test { + assertThat(awaitItem()).isEqualTo(BugReportUrl.UseDefault) + awaitComplete() + } + } } From 9e6fd63feb54a2e0dd4aa65b919d4107862a2d40 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 12:07:45 +0200 Subject: [PATCH 156/898] Add missing tests on CallType and make it internal. --- .../android/features/call/api/CallType.kt | 7 --- .../call/impl/ui/CallTypeExtension.kt | 18 ++++++++ .../call/impl/ui/ElementCallActivity.kt | 1 - .../android/features/call/ui/CallTypeTest.kt | 43 +++++++++++++++++++ 4 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallTypeExtension.kt create mode 100644 features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallTypeTest.kt diff --git a/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt b/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt index 677b76a825..2c279b7725 100644 --- a/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt +++ b/features/call/api/src/main/kotlin/io/element/android/features/call/api/CallType.kt @@ -31,10 +31,3 @@ sealed interface CallType : NodeInputs, Parcelable { } } } - -fun CallType.getSessionId(): SessionId? { - return when (this) { - is CallType.ExternalUrl -> null - is CallType.RoomCall -> sessionId - } -} diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallTypeExtension.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallTypeExtension.kt new file mode 100644 index 0000000000..89a9bfeb19 --- /dev/null +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/CallTypeExtension.kt @@ -0,0 +1,18 @@ +/* + * 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.call.impl.ui + +import io.element.android.features.call.api.CallType +import io.element.android.libraries.matrix.api.core.SessionId + +fun CallType.getSessionId(): SessionId? { + return when (this) { + is CallType.ExternalUrl -> null + is CallType.RoomCall -> sessionId + } +} diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt index 5b35d68755..44c1c92506 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt @@ -36,7 +36,6 @@ import dev.zacsweers.metro.Inject import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.call.api.CallType import io.element.android.features.call.api.CallType.ExternalUrl -import io.element.android.features.call.api.getSessionId import io.element.android.features.call.impl.DefaultElementCallEntryPoint import io.element.android.features.call.impl.di.CallBindings import io.element.android.features.call.impl.pip.PictureInPictureEvents diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallTypeTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallTypeTest.kt new file mode 100644 index 0000000000..3b566784f4 --- /dev/null +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/ui/CallTypeTest.kt @@ -0,0 +1,43 @@ +/* + * 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.call.ui + +import com.google.common.truth.Truth.assertThat +import io.element.android.features.call.api.CallType +import io.element.android.features.call.impl.ui.getSessionId +import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_SESSION_ID +import org.junit.Test + +class CallTypeTest { + @Test + fun `getSessionId returns null for ExternalUrl`() { + assertThat(CallType.ExternalUrl("aURL").getSessionId()).isNull() + } + + @Test + fun `getSessionId returns the sessionId for RoomCall`() { + assertThat( + CallType.RoomCall( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + ).getSessionId() + ).isEqualTo(A_SESSION_ID) + } + + @Test + fun `ExternalUrl stringification does not contain the URL`() { + assertThat(CallType.ExternalUrl("aURL").toString()).isEqualTo("ExternalUrl") + } + + @Test + fun `RoomCall stringification does not contain the URL`() { + assertThat(CallType.RoomCall(A_SESSION_ID, A_ROOM_ID).toString()) + .isEqualTo("RoomCall(sessionId=$A_SESSION_ID, roomId=$A_ROOM_ID)") + } +} From 9ad9efe547c67572cfd9e5742d28efc4d106cb0a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 14:13:36 +0200 Subject: [PATCH 157/898] Improve API of interface WellknownRetriever to be able to distinguish between 404 and other errors. --- .../DefaultAccountProviderAccessControl.kt | 2 +- .../login/impl/resolver/HomeserverResolver.kt | 2 +- .../WebClientUrlForAuthenticationRetriever.kt | 2 +- ...DefaultAccountProviderAccessControlTest.kt | 9 +- .../changeserver/ChangeServerPresenterTest.kt | 9 +- .../SearchAccountProviderPresenterTest.kt | 21 ++-- .../api/SessionWellknownRetriever.kt | 4 +- .../wellknown/api/WellknownRetriever.kt | 4 +- .../wellknown/api/WellknownRetrieverResult.kt | 31 ++++++ .../impl/DefaultSessionWellknownRetriever.kt | 23 +++- .../impl/DefaultWellknownRetriever.kt | 66 ++++++++---- .../DefaultSessionWellknownRetrieverTest.kt | 101 ++++++++++-------- .../test/FakeSessionWellknownRetriever.kt | 9 +- .../wellknown/test/FakeWellknownRetriever.kt | 9 +- 14 files changed, 196 insertions(+), 96 deletions(-) create mode 100644 libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetrieverResult.kt diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt index fb739008a7..46256ab5c4 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt @@ -41,7 +41,7 @@ class DefaultAccountProviderAccessControl( // Ensure that Element Pro is not required for this account provider val wellKnown = wellknownRetriever.getElementWellKnown( baseUrl = accountProviderUrl.ensureProtocol(), - ) + ).dataOrNull() if (wellKnown?.enforceElementPro == true) { throw AccountProviderAccessException.NeedElementProException( unauthorisedAccountProviderTitle = title, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt index 5612a56d5e..7b6f3e4102 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt @@ -46,7 +46,7 @@ class HomeserverResolver( wellknownRetriever.getWellKnown(url) } } - val isValid = wellKnown?.isValid().orFalse() + val isValid = wellKnown?.dataOrNull()?.isValid().orFalse() if (isValid) { // Emit the list as soon as possible currentList.add( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt index f72af823f2..fcc8cb0db1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt @@ -30,7 +30,7 @@ class DefaultWebClientUrlForAuthenticationRetriever( Timber.w("Temporary account creation flow is only supported on matrix.org") throw AccountCreationNotSupported() } - val wellknown = wellknownRetriever.getElementWellKnown(homeServerUrl) + val wellknown = wellknownRetriever.getElementWellKnown(homeServerUrl).dataOrNull() ?: throw AccountCreationNotSupported() val registrationHelperUrl = wellknown.registrationHelperUrl return if (registrationHelperUrl != null) { diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControlTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControlTest.kt index f559c57bf0..c5ace5ca3f 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControlTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControlTest.kt @@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_URL import io.element.android.libraries.wellknown.api.ElementWellKnown +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import kotlinx.coroutines.test.runTest import org.junit.Assert.assertThrows import org.junit.Test @@ -155,7 +156,13 @@ class DefaultAccountProviderAccessControlTest { defaultHomeserverListResult = { allowedAccountProviders }, ), wellknownRetriever = FakeWellknownRetriever( - getElementWellKnownResult = { elementWellKnown }, + getElementWellKnownResult = { + if (elementWellKnown == null) { + WellknownRetrieverResult.NotFound + } else { + WellknownRetrieverResult.Success(elementWellKnown) + } + }, ), ) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index 620df9bba4..3b88ab03c0 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -114,9 +115,11 @@ class ChangeServerPresenterTest { @Test fun `present - change server element pro required error`() = runTest { - val getElementWellKnownResult = lambdaRecorder { - anElementWellKnown( - enforceElementPro = true, + val getElementWellKnownResult = lambdaRecorder> { + WellknownRetrieverResult.Success( + anElementWellKnown( + enforceElementPro = true, + ) ) } createPresenter( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index b679c92ee1..79cd3c954a 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -18,6 +18,7 @@ import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellKnownBaseConfig +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -94,12 +95,12 @@ class SearchAccountProviderPresenterTest { @Test fun `present - enter text one result with wellknown`() = runTest { - val getWellKnownResult = lambdaRecorder { + val getWellKnownResult = lambdaRecorder> { when (it) { - "https://test.org" -> error("not found") - "https://test.com" -> error("not found") - "https://test.io" -> aWellKnown() - "https://test" -> error("not found") + "https://test.org" -> WellknownRetrieverResult.NotFound + "https://test.com" -> WellknownRetrieverResult.NotFound + "https://test.io" -> WellknownRetrieverResult.Success(aWellKnown()) + "https://test" -> WellknownRetrieverResult.NotFound else -> error("should not happen") } } @@ -138,12 +139,12 @@ class SearchAccountProviderPresenterTest { @Test fun `present - enter text two results with wellknown`() = runTest { - val getWellKnownResult = lambdaRecorder { + val getWellKnownResult = lambdaRecorder> { when (it) { - "https://test.org" -> aWellKnown() - "https://test.com" -> error("not found") - "https://test.io" -> aWellKnown() - "https://test" -> error("not found") + "https://test.org" -> WellknownRetrieverResult.Success(aWellKnown()) + "https://test.com" -> WellknownRetrieverResult.NotFound + "https://test.io" -> WellknownRetrieverResult.Success(aWellKnown()) + "https://test" -> WellknownRetrieverResult.NotFound else -> error("should not happen") } } diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt index 7f7b9b983f..1c5570db94 100644 --- a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt +++ b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt @@ -8,6 +8,6 @@ package io.element.android.libraries.wellknown.api interface SessionWellknownRetriever { - suspend fun getWellKnown(): WellKnown? - suspend fun getElementWellKnown(): ElementWellKnown? + suspend fun getWellKnown(): WellknownRetrieverResult + suspend fun getElementWellKnown(): WellknownRetrieverResult } diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt index e617bc8e13..4675a0cb18 100644 --- a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt +++ b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt @@ -8,6 +8,6 @@ package io.element.android.libraries.wellknown.api interface WellknownRetriever { - suspend fun getWellKnown(baseUrl: String): WellKnown? - suspend fun getElementWellKnown(baseUrl: String): ElementWellKnown? + suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult + suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult } diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetrieverResult.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetrieverResult.kt new file mode 100644 index 0000000000..a094380b82 --- /dev/null +++ b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetrieverResult.kt @@ -0,0 +1,31 @@ +/* + * 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.wellknown.api + +sealed interface WellknownRetrieverResult { + /** + * Well-known data has been successfully retrieved. + */ + data class Success(val data: T) : WellknownRetrieverResult + + /** + * Well-known data is not found (file does not exist server side, we got a 404). + */ + data object NotFound : WellknownRetrieverResult + + /** + * Any other error. + */ + data class Error(val exception: Exception) : WellknownRetrieverResult + + fun dataOrNull(): T? = when (this) { + is Success -> data + is Error -> null + NotFound -> null + } +} diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt index 6116435970..1c7e28e62c 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt @@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.SessionWellknownRetriever import io.element.android.libraries.wellknown.api.WellKnown +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import timber.log.Timber @ContributesBinding(SessionScope::class) @@ -26,7 +27,7 @@ class DefaultSessionWellknownRetriever( ) : SessionWellknownRetriever { private val domain by lazy { matrixClient.userIdServerName() } - override suspend fun getWellKnown(): WellKnown? { + override suspend fun getWellKnown(): WellknownRetrieverResult { val url = "https://$domain/.well-known/matrix/client" return matrixClient .getUrl(url) @@ -36,10 +37,17 @@ class DefaultSessionWellknownRetriever( } .onFailure { Timber.e(it, "Failed to retrieve .well-known from $domain") } .map { it.map() } - .getOrNull() + .fold( + onSuccess = { + WellknownRetrieverResult.Success(it) + }, + onFailure = { + WellknownRetrieverResult.Error(it as Exception) + } + ) } - override suspend fun getElementWellKnown(): ElementWellKnown? { + override suspend fun getElementWellKnown(): WellknownRetrieverResult { val url = "https://$domain/.well-known/element/element.json" return matrixClient .getUrl(url) @@ -49,6 +57,13 @@ class DefaultSessionWellknownRetriever( } .onFailure { Timber.e(it, "Failed to retrieve Element .well-known from $domain") } .map { it.map() } - .getOrNull() + .fold( + onSuccess = { + WellknownRetrieverResult.Success(it) + }, + onFailure = { + WellknownRetrieverResult.Error(it as Exception) + } + ) } } diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt index aa0e28e85a..c369886459 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt @@ -10,46 +10,72 @@ package io.element.android.libraries.wellknown.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject +import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.network.RetrofitFactory import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult +import retrofit2.HttpException import timber.log.Timber +import java.net.HttpURLConnection @ContributesBinding(AppScope::class) @Inject class DefaultWellknownRetriever( private val retrofitFactory: RetrofitFactory, ) : WellknownRetriever { - override suspend fun getWellKnown(baseUrl: String): WellKnown? { - val wellknownApi = buildWellknownApi(baseUrl) ?: return null - return try { - wellknownApi.getWellKnown().map() - } catch (e: Exception) { - Timber.e(e, "Failed to retrieve well-known data for $baseUrl") - null - } + override suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult { + return buildWellknownApi(baseUrl) + .map { wellknownApi -> + try { + val result = wellknownApi.getWellKnown().map() + WellknownRetrieverResult.Success(result) + } catch (e: Exception) { + Timber.e(e, "Failed to retrieve well-known data for $baseUrl") + if ((e as? HttpException)?.code() == HttpURLConnection.HTTP_NOT_FOUND) { + WellknownRetrieverResult.NotFound + } else { + WellknownRetrieverResult.Error(e) + } + } + } + .fold( + onSuccess = { it }, + onFailure = { WellknownRetrieverResult.Error(it as Exception) } + ) } - override suspend fun getElementWellKnown(baseUrl: String): ElementWellKnown? { - val wellknownApi = buildWellknownApi(baseUrl) ?: return null - return try { - wellknownApi.getElementWellKnown().map() - } catch (e: Exception) { - Timber.e(e, "Failed to retrieve Element well-known data for $baseUrl") - null - } + override suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult { + return buildWellknownApi(baseUrl) + .map { wellknownApi -> + try { + val result = wellknownApi.getElementWellKnown().map() + WellknownRetrieverResult.Success(result) + } catch (e: Exception) { + // Is it a 404? + Timber.e(e, "Failed to retrieve Element well-known data for $baseUrl") + if ((e as? HttpException)?.code() == HttpURLConnection.HTTP_NOT_FOUND) { + WellknownRetrieverResult.NotFound + } else { + WellknownRetrieverResult.Error(e) + } + } + } + .fold( + onSuccess = { it }, + onFailure = { WellknownRetrieverResult.Error(it as Exception) } + ) } - private fun buildWellknownApi(accountProviderUrl: String): WellknownAPI? { - return try { + private fun buildWellknownApi(accountProviderUrl: String): Result { + return runCatchingExceptions { retrofitFactory.create(accountProviderUrl.ensureProtocol()) .create(WellknownAPI::class.java) - } catch (e: Exception) { + }.onFailure { e -> // If the base URL is not valid, we cannot retrieve the well-known data Timber.e(e, "Failed to create Retrofit instance for $accountProviderUrl") - null } } } diff --git a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt index 9356648a3a..12b961ff9e 100644 --- a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt +++ b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt @@ -14,6 +14,7 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellKnownBaseConfig +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.test.runTest @@ -29,9 +30,11 @@ class DefaultSessionWellknownRetrieverTest { getUrlLambda = getUrlLambda, ) assertThat(sut.getWellKnown()).isEqualTo( - WellKnown( - homeServer = null, - identityServer = null, + WellknownRetrieverResult.Success( + WellKnown( + homeServer = null, + identityServer = null, + ) ) ) getUrlLambda.assertions().isCalledOnce() @@ -55,13 +58,15 @@ class DefaultSessionWellknownRetrieverTest { } ) assertThat(sut.getWellKnown()).isEqualTo( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = "https://identity.example.org", - ), + WellknownRetrieverResult.Success( + WellKnown( + homeServer = WellKnownBaseConfig( + baseURL = "https://example.org", + ), + identityServer = WellKnownBaseConfig( + baseURL = "https://identity.example.org", + ), + ) ) ) } @@ -81,13 +86,15 @@ class DefaultSessionWellknownRetrieverTest { } ) assertThat(sut.getWellKnown()).isEqualTo( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = null, - ), + WellknownRetrieverResult.Success( + WellKnown( + homeServer = WellKnownBaseConfig( + baseURL = "https://example.org", + ), + identityServer = WellKnownBaseConfig( + baseURL = null, + ), + ) ) ) } @@ -110,13 +117,15 @@ class DefaultSessionWellknownRetrieverTest { }, ) assertThat(sut.getWellKnown()).isEqualTo( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = "https://identity.example.org", - ), + WellknownRetrieverResult.Success( + WellKnown( + homeServer = WellKnownBaseConfig( + baseURL = "https://example.org", + ), + identityServer = WellKnownBaseConfig( + baseURL = "https://identity.example.org", + ), + ) ) ) } @@ -135,7 +144,7 @@ class DefaultSessionWellknownRetrieverTest { ) } ) - assertThat(sut.getWellKnown()).isNull() + assertThat(sut.getWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) } @Test @@ -145,7 +154,7 @@ class DefaultSessionWellknownRetrieverTest { Result.failure(AN_EXCEPTION) } ) - assertThat(sut.getWellKnown()).isNull() + assertThat(sut.getWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) } @Test @@ -157,11 +166,13 @@ class DefaultSessionWellknownRetrieverTest { getUrlLambda = getUrlLambda, ) assertThat(sut.getElementWellKnown()).isEqualTo( - ElementWellKnown( - registrationHelperUrl = null, - enforceElementPro = null, - rageshakeUrl = null, - brandColor = null, + WellknownRetrieverResult.Success( + ElementWellKnown( + registrationHelperUrl = null, + enforceElementPro = null, + rageshakeUrl = null, + brandColor = null, + ) ) ) getUrlLambda.assertions().isCalledOnce() @@ -183,11 +194,13 @@ class DefaultSessionWellknownRetrieverTest { } ) assertThat(sut.getElementWellKnown()).isEqualTo( - ElementWellKnown( - registrationHelperUrl = "a_registration_url", - enforceElementPro = true, - rageshakeUrl = "a_rageshake_url", - brandColor = "#FF0000", + WellknownRetrieverResult.Success( + ElementWellKnown( + registrationHelperUrl = "a_registration_url", + enforceElementPro = true, + rageshakeUrl = "a_rageshake_url", + brandColor = "#FF0000", + ) ) ) } @@ -207,11 +220,13 @@ class DefaultSessionWellknownRetrieverTest { }, ) assertThat(sut.getElementWellKnown()).isEqualTo( - ElementWellKnown( - registrationHelperUrl = "a_registration_url", - enforceElementPro = true, - rageshakeUrl = "a_rageshake_url", - brandColor = null, + WellknownRetrieverResult.Success( + ElementWellKnown( + registrationHelperUrl = "a_registration_url", + enforceElementPro = true, + rageshakeUrl = "a_rageshake_url", + brandColor = null, + ) ) ) } @@ -228,7 +243,7 @@ class DefaultSessionWellknownRetrieverTest { ) } ) - assertThat(sut.getElementWellKnown()).isNull() + assertThat(sut.getElementWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) } @Test @@ -238,7 +253,7 @@ class DefaultSessionWellknownRetrieverTest { Result.failure(AN_EXCEPTION) } ) - assertThat(sut.getElementWellKnown()).isNull() + assertThat(sut.getElementWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) } private fun createDefaultSessionWellknownRetriever( diff --git a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt index 6c2c141622..d90a02ac96 100644 --- a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt +++ b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt @@ -10,17 +10,18 @@ package io.element.android.features.wellknown.test import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.SessionWellknownRetriever import io.element.android.libraries.wellknown.api.WellKnown +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.simulateLongTask class FakeSessionWellknownRetriever( - private val getWellKnownResult: () -> WellKnown? = { null }, - private val getElementWellKnownResult: () -> ElementWellKnown? = { null }, + private val getWellKnownResult: () -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, + private val getElementWellKnownResult: () -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, ) : SessionWellknownRetriever { - override suspend fun getWellKnown(): WellKnown? = simulateLongTask { + override suspend fun getWellKnown(): WellknownRetrieverResult = simulateLongTask { getWellKnownResult() } - override suspend fun getElementWellKnown(): ElementWellKnown? = simulateLongTask { + override suspend fun getElementWellKnown(): WellknownRetrieverResult = simulateLongTask { getElementWellKnownResult() } } diff --git a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt index c8bbbde26d..52bb1cfa4c 100644 --- a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt +++ b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt @@ -10,17 +10,18 @@ package io.element.android.features.wellknown.test import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever +import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.simulateLongTask class FakeWellknownRetriever( - private val getWellKnownResult: (String) -> WellKnown? = { null }, - private val getElementWellKnownResult: (String) -> ElementWellKnown? = { null }, + private val getWellKnownResult: (String) -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, + private val getElementWellKnownResult: (String) -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, ) : WellknownRetriever { - override suspend fun getWellKnown(baseUrl: String): WellKnown? = simulateLongTask { + override suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult = simulateLongTask { getWellKnownResult(baseUrl) } - override suspend fun getElementWellKnown(baseUrl: String): ElementWellKnown? = simulateLongTask { + override suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult = simulateLongTask { getElementWellKnownResult(baseUrl) } } From dc46e522af6fcf05a376770b982fb457d2df08c8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 15:28:31 +0200 Subject: [PATCH 158/898] Improve API of interface WellknownRetriever to be able to distinguish between 404 and other errors. --- .../libraries/matrix/impl/RustMatrixClient.kt | 2 +- .../impl/DefaultSessionWellknownRetriever.kt | 42 +++++++++---------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index c646e2ee18..94a562c160 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -286,7 +286,7 @@ class RustMatrixClient( override suspend fun getUrl(url: String): Result = withContext(sessionDispatcher) { runCatchingExceptions { innerClient.getUrl(url) - } + }.mapFailure { it.mapClientException() } } override suspend fun getRoom(roomId: RoomId): BaseRoom? = withContext(sessionDispatcher) { diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt index 1c7e28e62c..81b4d99134 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.core.extensions.mapCatchingExceptions import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.exception.ClientException import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.SessionWellknownRetriever import io.element.android.libraries.wellknown.api.WellKnown @@ -33,18 +34,9 @@ class DefaultSessionWellknownRetriever( .getUrl(url) .mapCatchingExceptions { val data = String(it) - json().decodeFromString(InternalWellKnown.serializer(), data) + json().decodeFromString(data).map() } - .onFailure { Timber.e(it, "Failed to retrieve .well-known from $domain") } - .map { it.map() } - .fold( - onSuccess = { - WellknownRetrieverResult.Success(it) - }, - onFailure = { - WellknownRetrieverResult.Error(it as Exception) - } - ) + .toWellknownRetrieverResult() } override suspend fun getElementWellKnown(): WellknownRetrieverResult { @@ -53,17 +45,23 @@ class DefaultSessionWellknownRetriever( .getUrl(url) .mapCatchingExceptions { val data = String(it) - json().decodeFromString(InternalElementWellKnown.serializer(), data) + json().decodeFromString(data).map() } - .onFailure { Timber.e(it, "Failed to retrieve Element .well-known from $domain") } - .map { it.map() } - .fold( - onSuccess = { - WellknownRetrieverResult.Success(it) - }, - onFailure = { - WellknownRetrieverResult.Error(it as Exception) - } - ) + .toWellknownRetrieverResult() } + + private fun Result.toWellknownRetrieverResult(): WellknownRetrieverResult = fold( + onSuccess = { + WellknownRetrieverResult.Success(it) + }, + onFailure = { + Timber.e(it, "Failed to retrieve Element .well-known from $domain") + // This check on message value is not ideal but this is what we got from the SDK. + if ((it as? ClientException.Generic)?.message?.contains("404") == true) { + WellknownRetrieverResult.NotFound + } else { + WellknownRetrieverResult.Error(it as Exception) + } + } + ) } From 08f0e2c79f08bd8b54583f0b85753f3836127a85 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 15:30:09 +0200 Subject: [PATCH 159/898] Update ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index dac93821a6..867d1118e1 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit dac93821a6f9f9ad1494d3c69c115ef0696eb7ce +Subproject commit 867d1118e157ba89a4f5462f8d9c13e206f10026 From 33ec18c68e3d5d9960562b8acbcb010956994ceb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 16:06:53 +0200 Subject: [PATCH 160/898] Change Preview height to give space for new icons to come. --- .../android/compound/previews/CompoundIconsPreview.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/compound/src/main/kotlin/io/element/android/compound/previews/CompoundIconsPreview.kt b/libraries/compound/src/main/kotlin/io/element/android/compound/previews/CompoundIconsPreview.kt index 0ee0546ca4..f4aa54d77b 100644 --- a/libraries/compound/src/main/kotlin/io/element/android/compound/previews/CompoundIconsPreview.kt +++ b/libraries/compound/src/main/kotlin/io/element/android/compound/previews/CompoundIconsPreview.kt @@ -41,13 +41,13 @@ import io.element.android.compound.tokens.generated.CompoundIcons import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList -@Preview(widthDp = 730, heightDp = 1800) +@Preview(widthDp = 730, heightDp = 1920) @Composable internal fun IconsCompoundPreviewLight() = ElementTheme { IconsCompoundPreview() } -@Preview(widthDp = 730, heightDp = 1800) +@Preview(widthDp = 730, heightDp = 1920) @Composable internal fun IconsCompoundPreviewRtl() = ElementTheme { CompositionLocalProvider( @@ -59,7 +59,7 @@ internal fun IconsCompoundPreviewRtl() = ElementTheme { } } -@Preview(widthDp = 730, heightDp = 1800) +@Preview(widthDp = 730, heightDp = 1920) @Composable internal fun IconsCompoundPreviewDark() = ElementTheme(darkTheme = true) { IconsCompoundPreview() From c9e65a7c7d0e37777c12a6203178a3e9eef2c611 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 16:11:41 +0200 Subject: [PATCH 161/898] Remove icon preview duplication. We now have IconsCompoundPreview with the same content in only one image. --- .../designsystem/icons/IconsPreview.kt | 50 ++----------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt index e2da9bdcc0..73300d2cdf 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsPreview.kt @@ -18,11 +18,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme -import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Icon @@ -30,53 +27,12 @@ import io.element.android.libraries.designsystem.theme.components.Text import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList -internal class CompoundIconChunkProvider : PreviewParameterProvider { - override val values: Sequence - get() { - val chunks = CompoundIcons.allResIds.chunked(36) - return chunks.mapIndexed { index, chunk -> - IconChunk(index = index + 1, total = chunks.size, icons = chunk.toImmutableList()) - } - .asSequence() - } -} - -internal class OtherIconChunkProvider : PreviewParameterProvider { - override val values: Sequence - get() { - val chunks = iconsOther.chunked(36) - return chunks.mapIndexed { index, chunk -> - IconChunk(index = index + 1, total = chunks.size, icons = chunk.toImmutableList()) - } - .asSequence() - } -} - -internal data class IconChunk( - val index: Int, - val total: Int, - val icons: ImmutableList, -) - @PreviewsDayNight @Composable -internal fun IconsCompoundPreview(@PreviewParameter(CompoundIconChunkProvider::class) chunk: IconChunk) = ElementPreview { +internal fun IconsOtherPreview() = ElementPreview { IconsPreview( - title = "R.drawable.ic_compound_* ${chunk.index}/${chunk.total}", - iconsList = chunk.icons, - iconNameTransform = { name -> - name.removePrefix("ic_compound_") - .replace("_", " ") - } - ) -} - -@PreviewsDayNight -@Composable -internal fun IconsOtherPreview(@PreviewParameter(OtherIconChunkProvider::class) iconChunk: IconChunk) = ElementPreview { - IconsPreview( - title = "R.drawable.ic_* ${iconChunk.index}/${iconChunk.total}", - iconsList = iconChunk.icons, + title = "Other icons", + iconsList = iconsOther.toImmutableList(), iconNameTransform = { name -> name.removePrefix("ic_") .replace("_", " ") From 7829c1fb5412d88674cd5257dc3bfe38c2553ce5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 16:14:06 +0200 Subject: [PATCH 162/898] Add missing icon in the list --- .../io/element/android/libraries/designsystem/icons/IconsList.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsList.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsList.kt index ff98ab5b1e..b9911e25a8 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsList.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/icons/IconsList.kt @@ -15,4 +15,5 @@ internal val iconsOther = listOf( R.drawable.ic_notification, R.drawable.ic_stop, R.drawable.pin, + R.drawable.ic_winner, ) From b579cd9831280f47e1c6450140c3a4493acf9dce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 16:23:55 +0200 Subject: [PATCH 163/898] fix(deps): update dependencyanalysis to v3.2.0 (#5577) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9c1cdcc6a..eb77c6c503 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,7 +50,7 @@ telephoto = "0.18.0" haze = "1.6.10" # Dependency analysis -dependencyAnalysis = "3.1.0" +dependencyAnalysis = "3.2.0" # DI metro = "0.7.2" From 13735f280b1c1921255656493edf76c34313278f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 16:25:24 +0200 Subject: [PATCH 164/898] fix(deps): update dependency io.sentry:sentry-android to v8.24.0 (#5586) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index eb77c6c503..ff4309c833 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -211,7 +211,7 @@ color_picker = "io.mhssn:colorpicker:1.0.0" # Analytics posthog = "com.posthog:posthog-android:3.24.0" -sentry = "io.sentry:sentry-android:8.23.0" +sentry = "io.sentry:sentry-android:8.24.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.28.0" From 2e59c057717680e6ac4d077fb8a6d96ea6fc8a49 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Wed, 22 Oct 2025 14:33:10 +0000 Subject: [PATCH 165/898] Update screenshots --- .../libraries.designsystem.icons_IconsCompound_Day_0_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Day_1_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Day_2_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Day_3_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Day_4_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Day_5_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_0_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_1_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_2_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_3_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_4_en.png | 3 --- .../libraries.designsystem.icons_IconsCompound_Night_5_en.png | 3 --- .../libraries.designsystem.icons_IconsOther_Day_0_en.png | 4 ++-- .../libraries.designsystem.icons_IconsOther_Night_0_en.png | 4 ++-- 14 files changed, 4 insertions(+), 40 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png deleted file mode 100644 index 761c7dbe49..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c68e00a3f0697a9f179fe8541876fbd371da1d8b55e72c02fbb92d64814863a -size 67653 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png deleted file mode 100644 index 40bafedca7..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0332e0bbea7856b02adb7a660c758a313235351891428fdfb1816d0fa26df4d6 -size 68540 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png deleted file mode 100644 index a7a65b89fb..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4c798bec96147f50016dad808d51de76c24339a8b9afe0119993dadd7dbff845 -size 73047 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png deleted file mode 100644 index 0458ab3442..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5cf492cd78477c2ce4c296fb6baa2af8baed6549fb51f58c06da9d4181aa8ac9 -size 73796 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png deleted file mode 100644 index 091df51555..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a3ab14628f86c883effa49f51c02255a96a0050a9b4261322b2cf596ed5298ed -size 73233 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png deleted file mode 100644 index 06fe965ca2..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Day_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2151c4bbd49af17c8af90b946c94ec40b3f51edd25157abc5e87e1b4f7b7922 -size 53698 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png deleted file mode 100644 index 30e8ec09d4..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50113ec351ed12a7ee31b5b9333dabbcce242bf762d9d09d41301484e04f33ff -size 64549 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png deleted file mode 100644 index 3098aa900e..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:78f6f70dbc14f5b035f6f7d3cc042328be0894771443f188c9bf5581e40bcf59 -size 65190 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png deleted file mode 100644 index c9e430c3a8..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cab2c2d5b07a795080fc887c6c8776a9a8630d9b2f6e5fde7ebb9f5f462fc41c -size 69708 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png deleted file mode 100644 index 8b1e249670..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ffb53277e999c57096a8d11a03b2835d30ba7f0e8b83db85d5d1a417bbe35502 -size 70680 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png deleted file mode 100644 index 1e290d9420..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d21b4e71d6d52f1e9d844dbff96dcec86f5a04871b861ce0b619f173edca66cd -size 69772 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png deleted file mode 100644 index 99c55da156..0000000000 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsCompound_Night_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f209a674db2371d1e85ec2b6d92468f92595f6b87948db19dd7aba8432221b67 -size 51793 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Day_0_en.png index 98b70f5c35..279c1855d5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e71f4f5c0d8f299ff91699612604f5b285160f5830a2b1e3e0c4092e85bd8aa7 -size 14064 +oid sha256:49f3e81d0a713630723c463c8705463e1ba04266624f71d6e29cd7d3a693c115 +size 13789 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Night_0_en.png index ed0853de74..e396168a4d 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.icons_IconsOther_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e526b48b8f340e5e5c31e0e976286a5d64f27928d3cdf00b3175e5840bc494f3 -size 13282 +oid sha256:76ecf55d5a354374db7b9ac14fb64fae7637b35b2908efcf73163b514710fcb0 +size 13127 From 4861ae5171823c94b79ed44dcd1618ef81b7cfec Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Wed, 22 Oct 2025 16:55:40 +0200 Subject: [PATCH 166/898] Enable `SyncNotificationsWithWorkManager` in nightly and debug builds (#5573) * Enable `SyncNotificationsWithWorkManager` in nightly and debug builds * Fix tests --- .../element/android/libraries/featureflag/api/FeatureFlags.kt | 3 ++- .../android/libraries/push/impl/push/DefaultPushHandlerTest.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 50dfb89eb9..314d4fef7c 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -114,7 +114,8 @@ enum class FeatureFlags( title = "Sync notifications with WorkManager", description = "Use WorkManager to schedule notification sync tasks when a push is received." + " This should improve reliability and battery usage.", - defaultValue = { false }, + // Enable by default on nightly and debug builds so we can get feedback before enabling it for everyone. + defaultValue = { meta -> meta.buildType != BuildType.RELEASE }, isFinished = false, ), } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt index 335e44db42..4bfb944202 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt @@ -690,7 +690,7 @@ class DefaultPushHandlerTest { notificationChannels: FakeNotificationChannels = FakeNotificationChannels(), pushHistoryService: PushHistoryService = FakePushHistoryService(), syncOnNotifiableEvent: SyncOnNotifiableEvent = SyncOnNotifiableEvent {}, - featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(), + featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(initialState = mapOf(FeatureFlags.SyncNotificationsWithWorkManager.key to false)), workManagerScheduler: FakeWorkManagerScheduler = FakeWorkManagerScheduler(), ): DefaultPushHandler { return DefaultPushHandler( From 80c0c1733601a3ea79f624b1c9aba1a9593af12d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 17:25:59 +0200 Subject: [PATCH 167/898] Remove exception --- .../io/element/android/tests/konsist/KonsistPreviewTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index 941fde0124..8120e2ff2e 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -86,7 +86,6 @@ class KonsistPreviewTest { "FocusedEventPreview", "GradientFloatingActionButtonCircleShapePreview", "HeaderFooterPageScrollablePreview", - "IconsCompoundPreview", "IconsOtherPreview", "MarkdownTextComposerEditPreview", "MatrixBadgeAtomInfoPreview", From 9285db9348453f04f046ee808e9c324e0daa248c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 17 Oct 2025 12:57:23 +0200 Subject: [PATCH 168/898] Add test around metro annotation. Metro 0.7.0 make optional to use @Inject when the class is annotation by @ContributesBinding --- .../element/android/tests/konsist/KonsistDiTest.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt index 093cfd4488..1f3bfce178 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt @@ -10,8 +10,10 @@ package io.element.android.tests.konsist import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAnnotationOf import com.lemonappdev.konsist.api.ext.list.withParameter +import com.lemonappdev.konsist.api.verify.assertFalse import com.lemonappdev.konsist.api.verify.assertTrue import dev.zacsweers.metro.Assisted +import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import org.junit.Test @@ -32,4 +34,15 @@ class KonsistDiTest { .isEmpty() } } + + @Test + fun `class annotated with @ContributesBinding does not need to be annotated with @Inject anymore`() { + Konsist + .scopeFromProject() + .classes() + .withAnnotationOf(ContributesBinding::class) + .assertFalse { classDeclaration -> + classDeclaration.hasAnnotationOf(Inject::class) + } + } } From f0174248198c816f653331753ba730e30311255f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 18:24:07 +0200 Subject: [PATCH 169/898] Metro: enable `contributesAsInject` option. --- .../main/kotlin/extension/DependencyInjectionExtensions.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt b/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt index 01895c4000..96a0638f75 100644 --- a/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt +++ b/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt @@ -7,6 +7,7 @@ package extension +import dev.zacsweers.metro.gradle.MetroPluginExtension import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.api.provider.Provider @@ -25,6 +26,9 @@ fun Project.setupDependencyInjection( // Apply Metro plugin and configure it applyPluginIfNeeded(libs.plugins.metro) + val metroExtension = extensions.getByName("metro") as MetroPluginExtension + metroExtension.contributesAsInject.value(true) + if (generateNodeFactories) { applyPluginIfNeeded(libs.plugins.ksp) From 666666a8b6bbe64249b927850229c77d3f7f2896 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 18:24:20 +0200 Subject: [PATCH 170/898] Fix compilation issue --- .../libraries/push/impl/workmanager/FetchNotificationsWorker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt index 4839bc193f..12c76e1e9b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt @@ -125,5 +125,5 @@ class FetchNotificationsWorker( @ContributesIntoMap(AppScope::class, binding = binding>()) @WorkerKey(FetchNotificationsWorker::class) @AssistedFactory - abstract class Factory : MetroWorkerFactory.WorkerInstanceFactory + interface Factory : MetroWorkerFactory.WorkerInstanceFactory } From 826cacf209c7d289b17267cf4a9ade3e2815de59 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 18:37:13 +0200 Subject: [PATCH 171/898] Remove @Inject, not necessary anymore when class is annotated with @ContributesBinding --- .../kotlin/io/element/android/x/di/DefaultRoomGraphFactory.kt | 2 -- .../io/element/android/x/di/DefaultSessionGraphFactory.kt | 2 -- .../io/element/android/x/intent/DefaultIntentProvider.kt | 2 -- .../element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt | 2 -- .../kotlin/io/element/android/appnav/di/MatrixSessionCache.kt | 2 -- .../features/analytics/impl/DefaultAnalyticsEntryPoint.kt | 2 -- .../features/announcement/impl/DefaultAnnouncementService.kt | 2 -- .../announcement/impl/store/DefaultAnnouncementStore.kt | 2 -- .../android/features/cachecleaner/impl/DefaultCacheCleaner.kt | 2 -- .../features/call/impl/DefaultElementCallEntryPoint.kt | 2 -- .../android/features/call/impl/pip/PipSupportProvider.kt | 2 -- .../android/features/call/impl/ui/LanguageTagProvider.kt | 2 -- .../android/features/call/impl/utils/ActiveCallManager.kt | 2 -- .../call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt | 2 -- .../features/call/impl/utils/DefaultCallWidgetProvider.kt | 2 -- .../features/call/impl/utils/DefaultCurrentCallService.kt | 2 -- .../impl/DefaultChangeRoomMemberRolesEntyPoint.kt | 2 -- .../features/createroom/impl/DefaultCreateRoomEntryPoint.kt | 2 -- .../logout/impl/DefaultAccountDeactivationEntryPoint.kt | 2 -- .../features/enterprise/impl/DefaultEnterpriseService.kt | 2 -- .../enterprise/impl/DefaultSessionEnterpriseService.kt | 2 -- .../android/features/ftue/impl/DefaultFtueEntryPoint.kt | 2 -- .../android/features/ftue/impl/state/DefaultFtueService.kt | 2 -- .../android/features/home/impl/DefaultHomeEntryPoint.kt | 2 -- .../impl/filters/selection/DefaultFilterSelectionStrategy.kt | 2 -- .../io/element/android/features/invite/impl/AcceptInvite.kt | 2 -- .../io/element/android/features/invite/impl/DeclineInvite.kt | 2 -- .../features/invite/impl/DefaultSeenInvitesStoreFactory.kt | 2 -- .../impl/acceptdecline/DefaultAcceptDeclineInviteView.kt | 2 -- .../impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt | 2 -- .../features/invitepeople/impl/DefaultInvitePeopleRenderer.kt | 2 -- .../features/joinroom/impl/DefaultJoinRoomEntryPoint.kt | 2 -- .../android/features/joinroom/impl/di/CancelKnockRoom.kt | 2 -- .../element/android/features/joinroom/impl/di/ForgetRoom.kt | 2 -- .../io/element/android/features/joinroom/impl/di/KnockRoom.kt | 2 -- .../impl/banner/DefaultKnockRequestsBannerRenderer.kt | 2 -- .../impl/list/DefaultKnockRequestsListEntryPoint.kt | 2 -- .../features/leaveroom/impl/InternalLeaveRoomRenderer.kt | 2 -- .../licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt | 2 -- .../android/features/licenses/impl/LicensesProvider.kt | 2 -- .../android/features/location/impl/DefaultLocationService.kt | 2 -- .../location/impl/common/actions/AndroidLocationActions.kt | 2 -- .../location/impl/send/DefaultSendLocationEntryPoint.kt | 2 -- .../location/impl/show/DefaultShowLocationEntryPoint.kt | 2 -- .../features/lockscreen/impl/DefaultLockScreenEntryPoint.kt | 2 -- .../features/lockscreen/impl/DefaultLockScreenService.kt | 2 -- .../impl/biometric/DefaultBiometricAuthenticatorManager.kt | 2 -- .../features/lockscreen/impl/pin/DefaultPinCodeManager.kt | 2 -- .../lockscreen/impl/storage/PreferencesLockScreenStore.kt | 2 -- .../android/features/login/impl/DefaultLoginEntryPoint.kt | 2 -- .../android/features/login/impl/DefaultLoginIntentResolver.kt | 2 -- .../impl/accesscontrol/DefaultAccountProviderAccessControl.kt | 2 -- .../features/login/impl/qrcode/DefaultQrCodeLoginManager.kt | 2 -- .../login/impl/screens/createaccount/MessageParser.kt | 2 -- .../impl/screens/onboarding/OnBoardingLogoResIdProvider.kt | 2 -- .../login/impl/web/WebClientUrlForAuthenticationRetriever.kt | 2 -- .../android/features/logout/impl/DefaultLogoutEntryPoint.kt | 2 -- .../android/features/logout/impl/DefaultLogoutUseCase.kt | 2 -- .../features/logout/impl/direct/DefaultDirectLogoutView.kt | 2 -- .../features/messages/impl/DefaultMessagesEntryPoint.kt | 2 -- .../messages/impl/draft/DefaultComposerDraftService.kt | 2 -- .../android/features/messages/impl/link/LinkChecker.kt | 2 -- .../impl/messagecomposer/DefaultMessageComposerContext.kt | 2 -- .../impl/messagecomposer/RichTextEditorStateFactory.kt | 2 -- .../suggestions/RoomAliasSuggestionsDataSource.kt | 2 -- .../messages/impl/timeline/DefaultHtmlConverterProvider.kt | 2 -- .../features/messages/impl/timeline/MarkAsFullyRead.kt | 2 -- .../features/messages/impl/timeline/TimelineController.kt | 2 -- .../features/messages/impl/utils/TextPillificationHelper.kt | 2 -- .../utils/messagesummary/DefaultMessageSummaryFormatter.kt | 2 -- .../voicemessages/timeline/RedactedVoiceMessageManager.kt | 2 -- .../features/migration/impl/DefaultMigrationEntryPoint.kt | 2 -- .../android/features/migration/impl/DefaultMigrationStore.kt | 2 -- .../features/networkmonitor/impl/DefaultNetworkMonitor.kt | 2 -- .../features/poll/impl/actions/DefaultEndPollAction.kt | 2 -- .../poll/impl/actions/DefaultSendPollResponseAction.kt | 2 -- .../features/poll/impl/create/DefaultCreatePollEntryPoint.kt | 2 -- .../poll/impl/history/DefaultPollHistoryEntryPoint.kt | 2 -- .../poll/impl/model/DefaultPollContentStateFactory.kt | 2 -- .../android/features/preferences/impl/DefaultCacheService.kt | 2 -- .../features/preferences/impl/DefaultPreferencesEntryPoint.kt | 2 -- .../preferences/impl/advanced/MediaPreviewConfigStateStore.kt | 2 -- .../impl/notifications/SystemNotificationsEnabledProvider.kt | 2 -- .../features/preferences/impl/root/VersionFormatter.kt | 2 -- .../features/preferences/impl/tasks/ClearCacheUseCase.kt | 2 -- .../preferences/impl/tasks/ComputeCacheSizeUseCase.kt | 2 -- .../rageshake/impl/DefaultRageshakeFeatureAvailability.kt | 2 -- .../rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt | 2 -- .../rageshake/impl/crash/DefaultCrashDetectionPresenter.kt | 2 -- .../rageshake/impl/crash/PreferencesCrashDataStore.kt | 2 -- .../impl/detection/DefaultRageshakeDetectionPresenter.kt | 2 -- .../features/rageshake/impl/logs/DefaultLogFilesRemover.kt | 2 -- .../impl/preferences/DefaultRageshakePreferencesPresenter.kt | 2 -- .../features/rageshake/impl/rageshake/DefaultRageShake.kt | 2 -- .../rageshake/impl/rageshake/PreferencesRageshakeDataStore.kt | 2 -- .../rageshake/impl/reporter/BugReportAppNameProvider.kt | 2 -- .../features/rageshake/impl/reporter/DefaultBugReporter.kt | 2 -- .../rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt | 2 -- .../rageshake/impl/screenshot/DefaultScreenshotHolder.kt | 2 -- .../features/reportroom/impl/DefaultReportRoomEntryPoint.kt | 2 -- .../io/element/android/features/reportroom/impl/ReportRoom.kt | 2 -- .../impl/DefaultRoomAliasResolverEntryPoint.kt | 2 -- .../features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt | 2 -- .../roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt | 2 -- .../impl/DefaultRoomMemberModerationRenderer.kt | 2 -- .../securebackup/impl/DefaultSecureBackupEntryPoint.kt | 2 -- .../android/features/share/impl/DefaultShareEntryPoint.kt | 2 -- .../element/android/features/share/impl/ShareIntentHandler.kt | 2 -- .../features/signedout/impl/DefaultSignedOutEntryPoint.kt | 2 -- .../android/features/space/impl/DefaultSpaceEntryPoint.kt | 2 -- .../features/startchat/impl/DefaultStartChatEntryPoint.kt | 2 -- .../android/features/startchat/impl/DefaultStartDMAction.kt | 2 -- .../features/userprofile/impl/DefaultUserProfileEntryPoint.kt | 2 -- .../userprofile/impl/DefaultUserProfilePresenterFactory.kt | 2 -- .../impl/incoming/DefaultIncomingVerificationEntryPoint.kt | 2 -- .../impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt | 2 -- .../android/features/viewfolder/impl/DefaultTextFileViewer.kt | 2 -- .../features/viewfolder/impl/DefaultViewFolderEntryPoint.kt | 2 -- .../features/viewfolder/impl/file/FileContentReader.kt | 2 -- .../element/android/features/viewfolder/impl/file/FileSave.kt | 2 -- .../android/features/viewfolder/impl/file/FileShare.kt | 2 -- .../android/features/viewfolder/impl/folder/FolderExplorer.kt | 2 -- .../accountselect/impl/DefaultAccountSelectEntryPoint.kt | 2 -- .../libraries/androidutils/browser/ConsoleMessageLogger.kt | 2 -- .../androidutils/clipboard/AndroidClipboardHelper.kt | 2 -- .../libraries/androidutils/file/TemporaryUriDeleter.kt | 2 -- .../androidutils/filesize/AndroidFileSizeFormatter.kt | 2 -- .../android/libraries/androidutils/json/JsonProvider.kt | 2 -- .../android/libraries/androidutils/system/DateTimeObserver.kt | 2 -- .../element/android/libraries/audio/impl/DefaultAudioFocus.kt | 2 -- .../cryptography/impl/AESEncryptionDecryptionService.kt | 2 -- .../cryptography/impl/KeyStoreSecretKeyRepository.kt | 2 -- .../android/libraries/dateformatter/impl/DateFormatterDay.kt | 2 -- .../libraries/dateformatter/impl/DefaultDateFormatter.kt | 2 -- .../libraries/dateformatter/impl/LocaleChangeObserver.kt | 2 -- .../android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt | 2 -- .../android/libraries/deeplink/impl/DefaultDeeplinkParser.kt | 2 -- .../deeplink/impl/usecase/DefaultInviteFriendsUseCase.kt | 2 -- .../impl/DefaultPinnedMessagesBannerFormatter.kt | 2 -- .../eventformatter/impl/DefaultRoomLastMessageFormatter.kt | 2 -- .../eventformatter/impl/DefaultTimelineEventFormatter.kt | 2 -- .../libraries/featureflag/impl/DefaultFeatureFlagService.kt | 2 -- .../android/libraries/featureflag/impl/FeaturesProvider.kt | 2 -- .../libraries/indicator/impl/DefaultIndicatorService.kt | 2 -- .../libraries/matrix/api/recentemojis/GetRecentEmojis.kt | 2 -- .../android/libraries/matrix/impl/ClientBuilderProvider.kt | 2 -- .../element/android/libraries/matrix/impl/RustSdkMetadata.kt | 2 -- .../matrix/impl/auth/RustMatrixAuthenticationService.kt | 2 -- .../matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt | 2 -- .../impl/certificates/DefaultUserCertificatesProvider.kt | 2 -- .../libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt | 2 -- .../matrix/impl/permalink/DefaultMatrixToConverter.kt | 2 -- .../matrix/impl/permalink/DefaultPermalinkBuilder.kt | 2 -- .../libraries/matrix/impl/permalink/DefaultPermalinkParser.kt | 2 -- .../libraries/matrix/impl/platform/RustInitPlatformService.kt | 2 -- .../libraries/matrix/impl/proxy/DefaultProxyProvider.kt | 2 -- .../matrix/impl/room/TimelineEventTypeFilterFactory.kt | 2 -- .../matrix/impl/room/alias/DefaultRoomAliasHelper.kt | 2 -- .../libraries/matrix/impl/room/join/DefaultJoinRoom.kt | 2 -- .../libraries/matrix/impl/server/DefaultUserServerResolver.kt | 2 -- .../libraries/matrix/impl/tracing/RustTracingService.kt | 2 -- .../matrix/impl/widget/DefaultCallWidgetSettingsProvider.kt | 2 -- .../android/libraries/matrix/ui/media/ImageLoaderFactories.kt | 1 - .../android/libraries/matrix/ui/media/ImageLoaderHolder.kt | 2 -- .../libraries/mediapickers/impl/DefaultPickerProvider.kt | 2 -- .../android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt | 2 -- .../libraries/mediaupload/impl/AndroidMediaPreProcessor.kt | 2 -- .../impl/DefaultMediaOptimizationConfigProvider.kt | 2 -- .../mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt | 2 -- .../mediaviewer/impl/DefaultMediaViewerEntryPoint.kt | 2 -- .../FocusedTimelineMediaGalleryDataSourceFactory.kt | 2 -- .../mediaviewer/impl/datasource/MediaGalleryDataSource.kt | 2 -- .../libraries/mediaviewer/impl/datasource/MediaTimeline.kt | 2 -- .../mediaviewer/impl/local/AndroidLocalMediaActions.kt | 2 -- .../mediaviewer/impl/local/AndroidLocalMediaFactory.kt | 2 -- .../mediaviewer/impl/local/DefaultLocalMediaRenderer.kt | 2 -- .../impl/util/FileExtensionExtractorWithValidation.kt | 2 -- .../libraries/network/useragent/DefaultUserAgentProvider.kt | 2 -- .../android/libraries/oidc/impl/DefaultOidcActionFlow.kt | 2 -- .../android/libraries/oidc/impl/DefaultOidcIntentResolver.kt | 2 -- .../io/element/android/libraries/oidc/impl/OidcUrlParser.kt | 2 -- .../permissions/impl/AccompanistPermissionStateProvider.kt | 2 -- .../permissions/impl/DefaultPermissionStateProvider.kt | 2 -- .../libraries/permissions/impl/DefaultPermissionsStore.kt | 2 -- .../permissions/impl/action/AndroidPermissionActions.kt | 2 -- .../preferences/impl/store/DefaultAppPreferencesStore.kt | 2 -- .../impl/store/DefaultPreferencesDataStoreFactory.kt | 2 -- .../impl/store/DefaultSessionPreferencesStoreFactory.kt | 2 -- .../libraries/push/impl/DefaultGetCurrentPushProvider.kt | 2 -- .../element/android/libraries/push/impl/DefaultPushService.kt | 2 -- .../android/libraries/push/impl/DefaultPusherSubscriber.kt | 2 -- .../libraries/push/impl/battery/BatteryOptimization.kt | 2 -- .../libraries/push/impl/history/DefaultPushHistoryService.kt | 2 -- .../push/impl/notifications/ActiveNotificationsProvider.kt | 2 -- .../push/impl/notifications/CallNotificationEventResolver.kt | 2 -- .../push/impl/notifications/DefaultNotifiableEventResolver.kt | 2 -- .../impl/notifications/DefaultNotificationBitmapLoader.kt | 2 -- .../impl/notifications/DefaultNotificationDrawerManager.kt | 2 -- .../notifications/DefaultOnMissedCallNotificationHandler.kt | 2 -- .../push/impl/notifications/NotificationDataFactory.kt | 2 -- .../push/impl/notifications/NotificationDisplayer.kt | 2 -- .../push/impl/notifications/NotificationResolverQueue.kt | 2 -- .../push/impl/notifications/ReplyMessageExtractor.kt | 2 -- .../push/impl/notifications/RoomGroupMessageCreator.kt | 2 -- .../push/impl/notifications/SummaryGroupMessageCreator.kt | 2 -- .../push/impl/notifications/channels/NotificationChannels.kt | 2 -- .../conversations/DefaultNotificationConversationService.kt | 2 -- .../push/impl/notifications/factories/NotificationCreator.kt | 2 -- .../android/libraries/push/impl/push/DefaultPushHandler.kt | 2 -- .../libraries/push/impl/push/DefaultSyncOnNotifiableEvent.kt | 2 -- .../libraries/push/impl/push/IncrementPushDataStore.kt | 2 -- .../push/impl/push/MutableBatteryOptimizationStore.kt | 2 -- .../libraries/push/impl/push/OnNotifiableEventReceived.kt | 2 -- .../libraries/push/impl/push/OnRedactedEventReceived.kt | 2 -- .../libraries/push/impl/pushgateway/PushGatewayApiFactory.kt | 2 -- .../push/impl/pushgateway/PushGatewayNotifyRequest.kt | 2 -- .../android/libraries/push/impl/store/DefaultPushDataStore.kt | 2 -- .../io/element/android/libraries/push/impl/test/TestPush.kt | 2 -- .../pushproviders/firebase/FirebaseGatewayProvider.kt | 2 -- .../pushproviders/firebase/FirebaseNewTokenHandler.kt | 2 -- .../android/libraries/pushproviders/firebase/FirebaseStore.kt | 2 -- .../libraries/pushproviders/firebase/FirebaseTokenDeleter.kt | 2 -- .../libraries/pushproviders/firebase/FirebaseTokenGetter.kt | 2 -- .../libraries/pushproviders/firebase/FirebaseTokenRotator.kt | 2 -- .../pushproviders/firebase/FirebaseTroubleshooter.kt | 2 -- .../pushproviders/firebase/IsPlayServiceAvailable.kt | 2 -- .../unifiedpush/DefaultPushGatewayHttpUrlProvider.kt | 2 -- .../pushproviders/unifiedpush/GuardServiceStarter.kt | 2 -- .../pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt | 2 -- .../pushproviders/unifiedpush/UnifiedPushApiFactory.kt | 2 -- .../unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt | 2 -- .../unifiedpush/UnifiedPushDistributorProvider.kt | 2 -- .../pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt | 2 -- .../unifiedpush/UnifiedPushGatewayUrlResolver.kt | 2 -- .../pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt | 2 -- .../libraries/pushproviders/unifiedpush/UnifiedPushStore.kt | 2 -- .../pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt | 2 -- .../unifiedpush/troubleshoot/OpenDistributorWebPageAction.kt | 2 -- .../libraries/pushstore/impl/DefaultUserPushStoreFactory.kt | 2 -- .../impl/clientsecret/DataStorePushClientSecretStore.kt | 2 -- .../pushstore/impl/clientsecret/DefaultPushClientSecret.kt | 2 -- .../impl/clientsecret/DefaultPushClientSecretFactory.kt | 2 -- .../libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt | 2 -- .../libraries/sessionstorage/impl/DatabaseSessionStore.kt | 2 -- .../sessionstorage/impl/observer/DefaultSessionObserver.kt | 2 -- .../libraries/textcomposer/mentions/MentionSpanFormatter.kt | 2 -- .../libraries/textcomposer/mentions/MentionSpanUpdater.kt | 2 -- .../impl/DefaultNotificationTroubleShootEntryPoint.kt | 2 -- .../troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt | 2 -- .../libraries/usersearch/impl/MatrixUserListDataSource.kt | 2 -- .../android/libraries/usersearch/impl/MatrixUserRepository.kt | 2 -- .../voiceplayer/impl/DefaultVoiceMessagePresenterFactory.kt | 2 -- .../android/libraries/voiceplayer/impl/VoiceMessagePlayer.kt | 4 +--- .../libraries/voicerecorder/impl/DefaultVoiceRecorder.kt | 2 -- .../voicerecorder/impl/audio/DBovAudioLevelCalculator.kt | 2 -- .../libraries/voicerecorder/impl/audio/DefaultEncoder.kt | 2 -- .../voicerecorder/impl/file/DefaultVoiceFileManager.kt | 2 -- .../wellknown/impl/DefaultSessionWellknownRetriever.kt | 2 -- .../libraries/wellknown/impl/DefaultWellknownRetriever.kt | 2 -- .../libraries/workmanager/api/di/MetroWorkerFactory.kt | 2 -- .../libraries/workmanager/impl/DefaultWorkManagerScheduler.kt | 2 -- .../services/analytics/impl/DefaultAnalyticsService.kt | 2 -- .../android/services/analytics/impl/DefaultScreenTracker.kt | 2 -- .../android/services/analytics/impl/store/AnalyticsStore.kt | 2 -- .../android/services/analytics/noop/NoopAnalyticsService.kt | 2 -- .../android/services/analytics/noop/NoopScreenTracker.kt | 2 -- .../services/apperror/impl/DefaultAppErrorStateService.kt | 2 -- .../appnavstate/impl/DefaultAppNavigationStateService.kt | 2 -- .../toolbox/impl/intent/DefaultExternalIntentLauncher.kt | 2 -- .../toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt | 2 -- .../services/toolbox/impl/strings/AndroidStringProvider.kt | 2 -- .../services/toolbox/impl/systemclock/DefaultSystemClock.kt | 2 -- .../Template Module Feature Entry Point Flow Impl.kt | 1 - 273 files changed, 1 insertion(+), 545 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/di/DefaultRoomGraphFactory.kt b/app/src/main/kotlin/io/element/android/x/di/DefaultRoomGraphFactory.kt index 9ae8c54eb7..ebe8d8ab3d 100644 --- a/app/src/main/kotlin/io/element/android/x/di/DefaultRoomGraphFactory.kt +++ b/app/src/main/kotlin/io/element/android/x/di/DefaultRoomGraphFactory.kt @@ -8,13 +8,11 @@ package io.element.android.x.di import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appnav.di.RoomGraphFactory import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) -@Inject class DefaultRoomGraphFactory( private val sessionGraph: SessionGraph, ) : RoomGraphFactory { diff --git a/app/src/main/kotlin/io/element/android/x/di/DefaultSessionGraphFactory.kt b/app/src/main/kotlin/io/element/android/x/di/DefaultSessionGraphFactory.kt index 632e4dd32d..d39a2d9d5b 100644 --- a/app/src/main/kotlin/io/element/android/x/di/DefaultSessionGraphFactory.kt +++ b/app/src/main/kotlin/io/element/android/x/di/DefaultSessionGraphFactory.kt @@ -9,12 +9,10 @@ package io.element.android.x.di import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appnav.di.SessionGraphFactory import io.element.android.libraries.matrix.api.MatrixClient @ContributesBinding(AppScope::class) -@Inject class DefaultSessionGraphFactory( private val appGraph: AppGraph ) : SessionGraphFactory { diff --git a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt index 746f570447..92290a7c55 100644 --- a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt +++ b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt @@ -12,7 +12,6 @@ import android.content.Intent import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.deeplink.api.DeepLinkCreator import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.RoomId @@ -22,7 +21,6 @@ import io.element.android.libraries.push.impl.intent.IntentProvider import io.element.android.x.MainActivity @ContributesBinding(AppScope::class) -@Inject class DefaultIntentProvider( @ApplicationContext private val context: Context, private val deepLinkCreator: DeepLinkCreator, diff --git a/app/src/main/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt b/app/src/main/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt index 20ac5c2476..1eaa4e2112 100644 --- a/app/src/main/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt +++ b/app/src/main/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt @@ -9,13 +9,11 @@ package io.element.android.x.oidc import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.auth.OidcRedirectUrlProvider import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.x.R @ContributesBinding(AppScope::class) -@Inject class DefaultOidcRedirectUrlProvider( private val stringProvider: StringProvider, ) : OidcRedirectUrlProvider { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt index ce80ac7207..45596be7d6 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/MatrixSessionCache.kt @@ -12,7 +12,6 @@ import com.bumble.appyx.core.state.MutableSavedStateMap import com.bumble.appyx.core.state.SavedStateMap import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClientProvider @@ -33,7 +32,6 @@ private const val SAVE_INSTANCE_KEY = "io.element.android.x.di.MatrixClientsHold */ @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class MatrixSessionCache( private val authenticationService: MatrixAuthenticationService, private val syncOrchestratorFactory: SyncOrchestrator.Factory, diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt index 134535e881..af59c94e0a 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.analytics.api.AnalyticsEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultAnalyticsEntryPoint : AnalyticsEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) diff --git a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/DefaultAnnouncementService.kt b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/DefaultAnnouncementService.kt index 6d616f14e9..b2ee52099f 100644 --- a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/DefaultAnnouncementService.kt +++ b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/DefaultAnnouncementService.kt @@ -16,7 +16,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.announcement.api.Announcement import io.element.android.features.announcement.api.AnnouncementService import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementState @@ -29,7 +28,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first @ContributesBinding(AppScope::class) -@Inject class DefaultAnnouncementService( private val announcementStore: AnnouncementStore, private val announcementPresenter: Presenter, diff --git a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/store/DefaultAnnouncementStore.kt b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/store/DefaultAnnouncementStore.kt index 37acf9f6b4..68ae0b33c5 100644 --- a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/store/DefaultAnnouncementStore.kt +++ b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/store/DefaultAnnouncementStore.kt @@ -11,7 +11,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.intPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.announcement.api.Announcement import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow @@ -21,7 +20,6 @@ private val spaceAnnouncementKey = intPreferencesKey("spaceAnnouncement") private val newNotificationSoundKey = intPreferencesKey("newNotificationSound") @ContributesBinding(AppScope::class) -@Inject class DefaultAnnouncementStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : AnnouncementStore { diff --git a/features/cachecleaner/impl/src/main/kotlin/io/element/android/features/cachecleaner/impl/DefaultCacheCleaner.kt b/features/cachecleaner/impl/src/main/kotlin/io/element/android/features/cachecleaner/impl/DefaultCacheCleaner.kt index fc06174806..25a89da686 100644 --- a/features/cachecleaner/impl/src/main/kotlin/io/element/android/features/cachecleaner/impl/DefaultCacheCleaner.kt +++ b/features/cachecleaner/impl/src/main/kotlin/io/element/android/features/cachecleaner/impl/DefaultCacheCleaner.kt @@ -9,7 +9,6 @@ package io.element.android.features.cachecleaner.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.cachecleaner.api.CacheCleaner import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -24,7 +23,6 @@ import java.io.File * Default implementation of [CacheCleaner]. */ @ContributesBinding(AppScope::class) -@Inject class DefaultCacheCleaner( @AppCoroutineScope private val coroutineScope: CoroutineScope, diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/DefaultElementCallEntryPoint.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/DefaultElementCallEntryPoint.kt index a1c07462f8..024ffdf0a7 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/DefaultElementCallEntryPoint.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/DefaultElementCallEntryPoint.kt @@ -10,7 +10,6 @@ package io.element.android.features.call.impl import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint import io.element.android.features.call.impl.notifications.CallNotificationData @@ -21,7 +20,6 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UserId @ContributesBinding(AppScope::class) -@Inject class DefaultElementCallEntryPoint( @ApplicationContext private val context: Context, private val activeCallManager: ActiveCallManager, diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt index 96e68fabf3..686cb55304 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt @@ -13,7 +13,6 @@ import android.os.Build import androidx.annotation.ChecksSdkIntAtLeast import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.di.annotations.ApplicationContext @@ -23,7 +22,6 @@ interface PipSupportProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultPipSupportProvider( @ApplicationContext private val context: Context, ) : PipSupportProvider { diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt index 74016fd210..dd74b41af0 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/LanguageTagProvider.kt @@ -11,7 +11,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalConfiguration import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject interface LanguageTagProvider { @Composable @@ -19,7 +18,6 @@ interface LanguageTagProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultLanguageTagProvider : LanguageTagProvider { @Composable override fun provideLanguageTag(): String? { diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt index 0f4a96250b..ff1dc20df4 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt @@ -17,7 +17,6 @@ import coil3.SingletonImageLoader import coil3.annotation.DelicateCoilApi import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.appconfig.ElementCallConfig import io.element.android.features.call.api.CallType @@ -90,7 +89,6 @@ interface ActiveCallManager { @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultActiveCallManager( @ApplicationContext context: Context, @AppCoroutineScope diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt index aafb7fdde0..eda4fb8af4 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallAnalyticCredentialsProvider.kt @@ -9,12 +9,10 @@ package io.element.android.features.call.impl.utils import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.call.impl.BuildConfig import io.element.android.libraries.matrix.api.widget.CallAnalyticCredentialsProvider @ContributesBinding(AppScope::class) -@Inject class DefaultCallAnalyticCredentialsProvider : CallAnalyticCredentialsProvider { override val posthogUserId: String? = BuildConfig.POSTHOG_USER_ID.takeIf { it.isNotBlank() } override val posthogApiHost: String? = BuildConfig.POSTHOG_API_HOST.takeIf { it.isNotBlank() } 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 dc217bc118..0860767eea 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 @@ -9,7 +9,6 @@ package io.element.android.features.call.impl.utils import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.RoomId @@ -23,7 +22,6 @@ import kotlinx.coroutines.flow.firstOrNull private const val EMBEDDED_CALL_WIDGET_BASE_URL = "https://appassets.androidplatform.net/element-call/index.html" @ContributesBinding(AppScope::class) -@Inject class DefaultCallWidgetProvider( private val matrixClientsProvider: MatrixClientProvider, private val appPreferencesStore: AppPreferencesStore, diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt index 3ae65e338b..d876c22328 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCurrentCallService.kt @@ -9,7 +9,6 @@ package io.element.android.features.call.impl.utils import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.call.api.CurrentCall import io.element.android.features.call.api.CurrentCallService @@ -17,7 +16,6 @@ import kotlinx.coroutines.flow.MutableStateFlow @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultCurrentCallService : CurrentCallService { override val currentCall = MutableStateFlow(CurrentCall.None) 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 index 8a9117776d..53fb89720b 100644 --- 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 @@ -10,7 +10,6 @@ package io.element.android.features.changeroommemberroles.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.createNode @@ -18,7 +17,6 @@ import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) -@Inject class DefaultChangeRoomMemberRolesEntyPoint : ChangeRoomMemberRolesEntryPoint { override fun builder(parentNode: Node, buildContext: BuildContext): ChangeRoomMemberRolesEntryPoint.Builder { return object : ChangeRoomMemberRolesEntryPoint.Builder { diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt index 0d62542504..3ee0a92338 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.createroom.api.CreateRoomEntryPoint import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultCreateRoomEntryPoint : CreateRoomEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreateRoomEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt index 0f34e18b9f..a7c0d50dbe 100644 --- a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt +++ b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.deactivation.api.AccountDeactivationEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index a619c9cf8f..7207654bd2 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -9,7 +9,6 @@ package io.element.android.features.enterprise.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService @@ -18,7 +17,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf @ContributesBinding(AppScope::class) -@Inject class DefaultEnterpriseService : EnterpriseService { override val isEnterpriseBuild = false diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt index f25c38531a..d86984d214 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultSessionEnterpriseService.kt @@ -8,12 +8,10 @@ package io.element.android.features.enterprise.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.enterprise.api.SessionEnterpriseService import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultSessionEnterpriseService : SessionEnterpriseService { override suspend fun init() = Unit override suspend fun isElementCallAvailable(): Boolean = true diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt index 4fa086f4cd..c480d329a8 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.ftue.api.FtueEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultFtueEntryPoint : FtueEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueService.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueService.kt index 40f19b1e7a..546a4066f7 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueService.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/state/DefaultFtueService.kt @@ -10,7 +10,6 @@ package io.element.android.features.ftue.impl.state import android.Manifest import android.os.Build import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.ftue.api.state.FtueService import io.element.android.features.ftue.api.state.FtueState @@ -35,7 +34,6 @@ import kotlinx.coroutines.launch @ContributesBinding(SessionScope::class) @SingleIn(SessionScope::class) -@Inject class DefaultFtueService( private val sdkVersionProvider: BuildVersionSdkIntProvider, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt index 272a9bc9b1..39c647f8f8 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.home.api.HomeEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultHomeEntryPoint : HomeEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): HomeEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt index c1da8b18b2..ff0ae218bf 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt @@ -8,13 +8,11 @@ package io.element.android.features.home.impl.filters.selection import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.home.impl.filters.RoomListFilter import io.element.android.libraries.di.SessionScope import kotlinx.coroutines.flow.MutableStateFlow @ContributesBinding(SessionScope::class) -@Inject class DefaultFilterSelectionStrategy : FilterSelectionStrategy { private val selectedFilters = LinkedHashSet() diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/AcceptInvite.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/AcceptInvite.kt index 0972701435..15cadfcfe6 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/AcceptInvite.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/AcceptInvite.kt @@ -8,7 +8,6 @@ package io.element.android.features.invite.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.JoinedRoom import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.libraries.core.extensions.mapFailure @@ -30,7 +29,6 @@ interface AcceptInvite { } @ContributesBinding(SessionScope::class) -@Inject class DefaultAcceptInvite( private val client: MatrixClient, private val joinRoom: JoinRoom, diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DeclineInvite.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DeclineInvite.kt index 6c2588de7e..653a93b635 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DeclineInvite.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DeclineInvite.kt @@ -8,7 +8,6 @@ package io.element.android.features.invite.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient @@ -32,7 +31,6 @@ interface DeclineInvite { } @ContributesBinding(SessionScope::class) -@Inject class DefaultDeclineInvite( private val client: MatrixClient, private val notificationCleaner: NotificationCleaner, diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStoreFactory.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStoreFactory.kt index 10812eeb80..b2d7d241e5 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStoreFactory.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStoreFactory.kt @@ -10,7 +10,6 @@ package io.element.android.features.invite.impl import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.libraries.di.annotations.ApplicationContext @@ -21,7 +20,6 @@ import java.util.concurrent.ConcurrentHashMap @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultSeenInvitesStoreFactory( @ApplicationContext private val context: Context, private val sessionObserver: SessionObserver, diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt index 487865065d..98084c054c 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/acceptdecline/DefaultAcceptDeclineInviteView.kt @@ -10,14 +10,12 @@ package io.element.android.features.invite.impl.acceptdecline import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteView import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(SessionScope::class) -@Inject class DefaultAcceptDeclineInviteView : AcceptDeclineInviteView { @Composable override fun Render( diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt index ea5456feb2..e76d173a90 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.invite.api.InviteData import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBlockEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultDeclineAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData): Node { val inputs = DeclineAndBlockNode.Inputs(inviteData) diff --git a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt index 3301b7ec2c..b2f9dade99 100644 --- a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt +++ b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeopleRenderer.kt @@ -10,13 +10,11 @@ package io.element.android.features.invitepeople.impl import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.invitepeople.api.InvitePeopleRenderer import io.element.android.features.invitepeople.api.InvitePeopleState import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultInvitePeopleRenderer : InvitePeopleRenderer { @Composable override fun Render(state: InvitePeopleState, modifier: Modifier) { diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt index 5f217b26c2..c7e5e1d11f 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.joinroom.api.JoinRoomEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultJoinRoomEntryPoint : JoinRoomEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: JoinRoomEntryPoint.Inputs): Node { return parentNode.createNode( diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/CancelKnockRoom.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/CancelKnockRoom.kt index 675fb98a0c..e813a957ea 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/CancelKnockRoom.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/CancelKnockRoom.kt @@ -8,7 +8,6 @@ package io.element.android.features.joinroom.impl.di import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -18,7 +17,6 @@ interface CancelKnockRoom { } @ContributesBinding(SessionScope::class) -@Inject class DefaultCancelKnockRoom(private val client: MatrixClient) : CancelKnockRoom { override suspend fun invoke(roomId: RoomId): Result { return client diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/ForgetRoom.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/ForgetRoom.kt index 711439a44c..bee64789b2 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/ForgetRoom.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/ForgetRoom.kt @@ -8,7 +8,6 @@ package io.element.android.features.joinroom.impl.di import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -18,7 +17,6 @@ interface ForgetRoom { } @ContributesBinding(SessionScope::class) -@Inject class DefaultForgetRoom(private val client: MatrixClient) : ForgetRoom { override suspend fun invoke(roomId: RoomId): Result { return client.getRoom(roomId)?.use { it.forget() } diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/KnockRoom.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/KnockRoom.kt index 4d32043b0f..2bb7bd682b 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/KnockRoom.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/di/KnockRoom.kt @@ -8,7 +8,6 @@ package io.element.android.features.joinroom.impl.di import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomIdOrAlias @@ -22,7 +21,6 @@ interface KnockRoom { } @ContributesBinding(SessionScope::class) -@Inject class DefaultKnockRoom(private val client: MatrixClient) : KnockRoom { override suspend fun invoke( roomIdOrAlias: RoomIdOrAlias, diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/DefaultKnockRequestsBannerRenderer.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/DefaultKnockRequestsBannerRenderer.kt index 612ddc5a6a..afe9905a42 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/DefaultKnockRequestsBannerRenderer.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/DefaultKnockRequestsBannerRenderer.kt @@ -10,12 +10,10 @@ package io.element.android.features.knockrequests.impl.banner import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.knockrequests.api.banner.KnockRequestsBannerRenderer import io.element.android.libraries.di.RoomScope @ContributesBinding(RoomScope::class) -@Inject class DefaultKnockRequestsBannerRenderer( private val presenter: KnockRequestsBannerPresenter, ) : KnockRequestsBannerRenderer { diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt index 675f3bee9e..c77065324d 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) 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 index be1aa3b55a..bff69b7805 100644 --- 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 @@ -10,14 +10,12 @@ package io.element.android.features.leaveroom.impl import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject 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 @ContributesBinding(SessionScope::class) -@Inject class InternalLeaveRoomRenderer : LeaveRoomRenderer { @Composable override fun Render(state: LeaveRoomState, onSelectNewOwners: (RoomId) -> Unit, modifier: Modifier) { diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt index 8ffbc05ed3..77c56b6d3a 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.licenses.api.OpenSourceLicensesEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultOpenSourcesLicensesEntryPoint : OpenSourceLicensesEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/LicensesProvider.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/LicensesProvider.kt index c5c0fa84f5..da62e3e418 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/LicensesProvider.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/LicensesProvider.kt @@ -10,7 +10,6 @@ package io.element.android.features.licenses.impl import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.licenses.impl.model.DependencyLicenseItem import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.annotations.ApplicationContext @@ -24,7 +23,6 @@ interface LicensesProvider { } @ContributesBinding(AppScope::class) -@Inject class AssetLicensesProvider( @ApplicationContext private val context: Context, private val dispatchers: CoroutineDispatchers, diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt index 5be8e7c093..772a4a4d26 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/DefaultLocationService.kt @@ -9,12 +9,10 @@ package io.element.android.features.location.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.location.api.BuildConfig import io.element.android.features.location.api.LocationService @ContributesBinding(AppScope::class) -@Inject class DefaultLocationService : LocationService { override fun isServiceAvailable(): Boolean { return BuildConfig.MAPTILER_API_KEY.isNotEmpty() diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActions.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActions.kt index c879635052..bf4eb261e8 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActions.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/actions/AndroidLocationActions.kt @@ -14,7 +14,6 @@ import androidx.annotation.VisibleForTesting import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.location.api.Location import io.element.android.libraries.androidutils.system.openAppSettingsPage import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -23,7 +22,6 @@ import timber.log.Timber import java.util.Locale @ContributesBinding(AppScope::class) -@Inject class AndroidLocationActions( @ApplicationContext private val context: Context ) : LocationActions { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index c42be68bf1..806fc5b741 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.location.api.SendLocationEntryPoint import io.element.android.libraries.architecture.createNode import io.element.android.libraries.matrix.api.timeline.Timeline @ContributesBinding(AppScope::class) -@Inject class DefaultSendLocationEntryPoint : SendLocationEntryPoint { override fun builder(timelineMode: Timeline.Mode): SendLocationEntryPoint.Builder { return Builder(timelineMode) diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt index d226a01ede..75a177d21a 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.location.api.ShowLocationEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultShowLocationEntryPoint : ShowLocationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { return parentNode.createNode(buildContext, listOf(inputs)) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt index 1155a6fdcd..0e22131e4c 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt @@ -13,13 +13,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.features.lockscreen.impl.unlock.activity.PinUnlockActivity import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultLockScreenEntryPoint : LockScreenEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target): LockScreenEntryPoint.NodeBuilder { val callbacks = mutableListOf() diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt index c1a97dadad..8995eee65a 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt @@ -9,7 +9,6 @@ package io.element.android.features.lockscreen.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.lockscreen.api.LockScreenLockState import io.element.android.features.lockscreen.api.LockScreenService @@ -35,7 +34,6 @@ import kotlin.time.Duration @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultLockScreenService( private val lockScreenConfig: LockScreenConfig, private val lockScreenStore: LockScreenStore, diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricAuthenticatorManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricAuthenticatorManager.kt index b6b3c4115f..a32d8fd256 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricAuthenticatorManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/biometric/DefaultBiometricAuthenticatorManager.kt @@ -24,7 +24,6 @@ import androidx.fragment.app.FragmentActivity import androidx.lifecycle.compose.LocalLifecycleOwner import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.lockscreen.impl.LockScreenConfig import io.element.android.features.lockscreen.impl.R @@ -42,7 +41,6 @@ private const val SECRET_KEY_ALIAS = "elementx.SECRET_KEY_ALIAS_BIOMETRIC" @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultBiometricAuthenticatorManager( @ApplicationContext private val context: Context, private val lockScreenStore: LockScreenStore, diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt index 824db5339e..83eaf86a5f 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManager.kt @@ -9,7 +9,6 @@ package io.element.android.features.lockscreen.impl.pin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.lockscreen.impl.storage.LockScreenStore import io.element.android.libraries.cryptography.api.EncryptionDecryptionService @@ -22,7 +21,6 @@ private const val SECRET_KEY_ALIAS = "elementx.SECRET_KEY_ALIAS_PIN_CODE" @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultPinCodeManager( private val secretKeyRepository: SecretKeyRepository, private val encryptionDecryptionService: EncryptionDecryptionService, diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt index dbe51d3222..968d5ee03a 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/storage/PreferencesLockScreenStore.kt @@ -14,7 +14,6 @@ import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.lockscreen.impl.LockScreenConfig import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow @@ -22,7 +21,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map @ContributesBinding(AppScope::class) -@Inject class PreferencesLockScreenStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, private val lockScreenConfig: LockScreenConfig, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt index 7da2bdf758..ed695f7b8e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.login.api.LoginEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultLoginEntryPoint : LoginEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LoginEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt index 4851a9ab7c..5d67745aff 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginIntentResolver.kt @@ -10,12 +10,10 @@ package io.element.android.features.login.impl import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.login.api.LoginIntentResolver import io.element.android.features.login.api.LoginParams @ContributesBinding(AppScope::class) -@Inject class DefaultLoginIntentResolver : LoginIntentResolver { override fun parse(uriString: String): LoginParams? { val uri = uriString.toUri() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt index fb739008a7..af0bf65591 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accesscontrol/DefaultAccountProviderAccessControl.kt @@ -9,7 +9,6 @@ package io.element.android.features.login.impl.accesscontrol import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.login.api.accesscontrol.AccountProviderAccessControl import io.element.android.features.login.impl.changeserver.AccountProviderAccessException @@ -17,7 +16,6 @@ import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.wellknown.api.WellknownRetriever @ContributesBinding(AppScope::class) -@Inject class DefaultAccountProviderAccessControl( private val enterpriseService: EnterpriseService, private val wellknownRetriever: WellknownRetriever, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/DefaultQrCodeLoginManager.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/DefaultQrCodeLoginManager.kt index 42bada93a0..13202c8358 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/DefaultQrCodeLoginManager.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/DefaultQrCodeLoginManager.kt @@ -8,7 +8,6 @@ package io.element.android.features.login.impl.qrcode import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.login.impl.di.QrCodeLoginScope import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService @@ -21,7 +20,6 @@ import kotlinx.coroutines.flow.StateFlow @SingleIn(QrCodeLoginScope::class) @ContributesBinding(QrCodeLoginScope::class) -@Inject class DefaultQrCodeLoginManager( private val authenticationService: MatrixAuthenticationService, ) : QrCodeLoginManager { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt index b28eef9fa4..1aea96ca2e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/MessageParser.kt @@ -9,7 +9,6 @@ package io.element.android.features.login.impl.screens.createaccount import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.matrix.api.auth.external.ExternalSession @@ -23,7 +22,6 @@ interface MessageParser { } @ContributesBinding(AppScope::class) -@Inject class DefaultMessageParser( private val accountProviderDataSource: AccountProviderDataSource, private val json: JsonProvider, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt index 73ac06bbe2..fb9b25afea 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingLogoResIdProvider.kt @@ -11,7 +11,6 @@ import android.annotation.SuppressLint import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext fun interface OnBoardingLogoResIdProvider { @@ -19,7 +18,6 @@ fun interface OnBoardingLogoResIdProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultOnBoardingLogoResIdProvider( @ApplicationContext private val context: Context, ) : OnBoardingLogoResIdProvider { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt index f72af823f2..554e20b90f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/web/WebClientUrlForAuthenticationRetriever.kt @@ -10,7 +10,6 @@ package io.element.android.features.login.impl.web import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.login.impl.screens.createaccount.AccountCreationNotSupported import io.element.android.libraries.wellknown.api.WellknownRetriever @@ -21,7 +20,6 @@ interface WebClientUrlForAuthenticationRetriever { } @ContributesBinding(AppScope::class) -@Inject class DefaultWebClientUrlForAuthenticationRetriever( private val wellknownRetriever: WellknownRetriever, ) : WebClientUrlForAuthenticationRetriever { diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index 47d4771ed9..adcc060b46 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.logout.api.LogoutEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultLogoutEntryPoint : LogoutEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LogoutEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt index 52e295ba3e..0dd39e114f 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutUseCase.kt @@ -9,7 +9,6 @@ package io.element.android.features.logout.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.logout.api.LogoutUseCase import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.SessionId @@ -17,7 +16,6 @@ import io.element.android.libraries.sessionstorage.api.SessionStore import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class DefaultLogoutUseCase( private val sessionStore: SessionStore, private val matrixClientProvider: MatrixClientProvider, diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt index 2cd7989cf1..49cf203fe0 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutView.kt @@ -10,7 +10,6 @@ package io.element.android.features.logout.impl.direct import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.PreviewParameter import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.logout.api.direct.DirectLogoutEvents import io.element.android.features.logout.api.direct.DirectLogoutState import io.element.android.features.logout.api.direct.DirectLogoutStateProvider @@ -21,7 +20,6 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultDirectLogoutView : DirectLogoutView { @Composable override fun Render(state: DirectLogoutState) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt index b27bcab3b8..9085bcb283 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt @@ -11,14 +11,12 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.libraries.architecture.NodeFactoriesBindings import io.element.android.libraries.architecture.bindings import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultMessagesEntryPoint : MessagesEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MessagesEntryPoint.NodeBuilder { val nodeFactories = parentNode.bindings().nodeFactories() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/DefaultComposerDraftService.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/DefaultComposerDraftService.kt index a0cb3877cb..ed499a99a7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/DefaultComposerDraftService.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/draft/DefaultComposerDraftService.kt @@ -8,14 +8,12 @@ package io.element.android.features.messages.impl.draft import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.room.draft.ComposerDraft @ContributesBinding(RoomScope::class) -@Inject class DefaultComposerDraftService( private val volatileComposerDraftStore: VolatileComposerDraftStore, private val matrixComposerDraftStore: MatrixComposerDraftStore, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt index eec953f4cd..68ed8b7696 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkChecker.kt @@ -9,7 +9,6 @@ package io.element.android.features.messages.impl.link import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.extensions.containsRtLOverride import io.element.android.wysiwyg.link.Link @@ -20,7 +19,6 @@ interface LinkChecker { } @ContributesBinding(AppScope::class) -@Inject class DefaultLinkChecker : LinkChecker { override fun isSafe(link: Link): Boolean { return if (link.url.containsRtLOverride()) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt index b895572c43..39e8d33320 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/DefaultMessageComposerContext.kt @@ -11,7 +11,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.messages.api.MessageComposerContext import io.element.android.libraries.di.RoomScope @@ -19,7 +18,6 @@ import io.element.android.libraries.textcomposer.model.MessageComposerMode @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -@Inject class DefaultMessageComposerContext : MessageComposerContext { override var composerMode: MessageComposerMode by mutableStateOf(MessageComposerMode.Normal) internal set diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt index c22325a9a5..ccbf535db9 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/RichTextEditorStateFactory.kt @@ -10,7 +10,6 @@ package io.element.android.features.messages.impl.messagecomposer import androidx.compose.runtime.Composable import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.wysiwyg.compose.RichTextEditorState import io.element.android.wysiwyg.compose.rememberRichTextEditorState @@ -20,7 +19,6 @@ interface RichTextEditorStateFactory { } @ContributesBinding(AppScope::class) -@Inject class DefaultRichTextEditorStateFactory : RichTextEditorStateFactory { @Composable override fun remember(): RichTextEditorState { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/RoomAliasSuggestionsDataSource.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/RoomAliasSuggestionsDataSource.kt index 5b3a1edf1e..7da9f6a1f4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/RoomAliasSuggestionsDataSource.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/suggestions/RoomAliasSuggestionsDataSource.kt @@ -8,7 +8,6 @@ package io.element.android.features.messages.impl.messagecomposer.suggestions import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId @@ -28,7 +27,6 @@ interface RoomAliasSuggestionsDataSource { } @ContributesBinding(SessionScope::class) -@Inject class DefaultRoomAliasSuggestionsDataSource( private val roomListService: RoomListService, ) : RoomAliasSuggestionsDataSource { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt index 54c4e55deb..c4c7c547be 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/DefaultHtmlConverterProvider.kt @@ -14,7 +14,6 @@ import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalInspectionMode import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.messages.api.timeline.HtmlConverterProvider import io.element.android.libraries.core.bool.orFalse @@ -29,7 +28,6 @@ import uniffi.wysiwyg_composer.newMentionDetector @ContributesBinding(RoomScope::class) @SingleIn(RoomScope::class) -@Inject class DefaultHtmlConverterProvider( private val mentionSpanProvider: MentionSpanProvider, ) : HtmlConverterProvider { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt index 6fe1cd687c..4bb6aecd34 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt @@ -8,7 +8,6 @@ package io.element.android.features.messages.impl.timeline import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -21,7 +20,6 @@ interface MarkAsFullyRead { } @ContributesBinding(SessionScope::class) -@Inject class DefaultMarkAsFullyRead( private val matrixClient: MatrixClient, ) : MarkAsFullyRead { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineController.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineController.kt index 779ebe984a..d28dfff5bc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineController.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineController.kt @@ -8,7 +8,6 @@ package io.element.android.features.messages.impl.timeline import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import dev.zacsweers.metro.binding import io.element.android.features.messages.impl.timeline.di.LiveTimeline @@ -44,7 +43,6 @@ import java.util.Optional */ @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class, binding = binding()) -@Inject class TimelineController( private val room: JoinedRoom, @LiveTimeline private val liveTimeline: Timeline, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/TextPillificationHelper.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/TextPillificationHelper.kt index bb95e1a26c..f4360991ef 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/TextPillificationHelper.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/TextPillificationHelper.kt @@ -14,7 +14,6 @@ import android.text.style.URLSpan import android.util.Patterns import androidx.core.text.getSpans import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.MatrixPatternType import io.element.android.libraries.matrix.api.core.MatrixPatterns @@ -33,7 +32,6 @@ interface TextPillificationHelper { } @ContributesBinding(RoomScope::class) -@Inject class DefaultTextPillificationHelper( private val mentionSpanProvider: MentionSpanProvider, private val permalinkParser: PermalinkParser, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt index 1f1619e3f6..cea115ab24 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/messagesummary/DefaultMessageSummaryFormatter.kt @@ -9,7 +9,6 @@ package io.element.android.features.messages.impl.utils.messagesummary import android.content.Context import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEncryptedContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEventContent @@ -33,7 +32,6 @@ import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.ui.strings.CommonStrings @ContributesBinding(RoomScope::class) -@Inject class DefaultMessageSummaryFormatter( @ApplicationContext private val context: Context, ) : MessageSummaryFormatter { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManager.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManager.kt index be1db85d6b..9521335f9f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManager.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/timeline/RedactedVoiceMessageManager.kt @@ -8,7 +8,6 @@ package io.element.android.features.messages.impl.voicemessages.timeline import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem @@ -21,7 +20,6 @@ interface RedactedVoiceMessageManager { } @ContributesBinding(RoomScope::class) -@Inject class DefaultRedactedVoiceMessageManager( private val dispatchers: CoroutineDispatchers, private val mediaPlayer: MediaPlayer, diff --git a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationEntryPoint.kt b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationEntryPoint.kt index 68c4c7ce3a..da0b6bccb1 100644 --- a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationEntryPoint.kt +++ b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationEntryPoint.kt @@ -11,12 +11,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.api.MigrationEntryPoint import io.element.android.features.api.MigrationState @ContributesBinding(AppScope::class) -@Inject class DefaultMigrationEntryPoint( private val migrationPresenter: MigrationPresenter, ) : MigrationEntryPoint { diff --git a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationStore.kt b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationStore.kt index 78883a4e03..f19958a804 100644 --- a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationStore.kt +++ b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/DefaultMigrationStore.kt @@ -11,7 +11,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.intPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @@ -19,7 +18,6 @@ import kotlinx.coroutines.flow.map private val applicationMigrationVersion = intPreferencesKey("applicationMigrationVersion") @ContributesBinding(AppScope::class) -@Inject class DefaultMigrationStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : MigrationStore { diff --git a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt index 76525ff657..cd8353004c 100644 --- a/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt +++ b/features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt @@ -15,7 +15,6 @@ import android.net.Network import android.net.NetworkRequest import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.networkmonitor.api.NetworkMonitor import io.element.android.features.networkmonitor.api.NetworkStatus @@ -37,7 +36,6 @@ import java.util.concurrent.atomic.AtomicInteger @ContributesBinding(scope = AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultNetworkMonitor( @ApplicationContext context: Context, @AppCoroutineScope diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt index e028209ae8..4d6f0e67a6 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultEndPollAction.kt @@ -8,7 +8,6 @@ package io.element.android.features.poll.impl.actions import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.PollEnd import io.element.android.features.poll.api.actions.EndPollAction import io.element.android.libraries.di.RoomScope @@ -17,7 +16,6 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.services.analytics.api.AnalyticsService @ContributesBinding(RoomScope::class) -@Inject class DefaultEndPollAction( private val analyticsService: AnalyticsService, ) : EndPollAction { diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt index a067757357..752e343411 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/actions/DefaultSendPollResponseAction.kt @@ -8,7 +8,6 @@ package io.element.android.features.poll.impl.actions import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.PollVote import io.element.android.features.poll.api.actions.SendPollResponseAction import io.element.android.libraries.di.RoomScope @@ -17,7 +16,6 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.services.analytics.api.AnalyticsService @ContributesBinding(RoomScope::class) -@Inject class DefaultSendPollResponseAction( private val analyticsService: AnalyticsService, ) : SendPollResponseAction { diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt index 3c76aad7c8..d8df6c2d01 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.poll.api.create.CreatePollEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultCreatePollEntryPoint : CreatePollEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreatePollEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt index 8c89a47c65..7f867def0a 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt @@ -11,12 +11,10 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.poll.api.history.PollHistoryEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultPollHistoryEntryPoint : PollHistoryEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt index 8647d80f23..57af641108 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/model/DefaultPollContentStateFactory.kt @@ -8,7 +8,6 @@ package io.element.android.features.poll.impl.model import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.poll.api.pollcontent.PollAnswerItem import io.element.android.features.poll.api.pollcontent.PollContentState import io.element.android.features.poll.api.pollcontent.PollContentStateFactory @@ -20,7 +19,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.PollContent import kotlinx.collections.immutable.toImmutableList @ContributesBinding(RoomScope::class) -@Inject class DefaultPollContentStateFactory( private val matrixClient: MatrixClient, ) : PollContentStateFactory { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt index da42cf87dd..5f05517f17 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultCacheService.kt @@ -9,7 +9,6 @@ package io.element.android.features.preferences.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.preferences.api.CacheService import io.element.android.libraries.matrix.api.core.SessionId @@ -18,7 +17,6 @@ import kotlinx.coroutines.flow.MutableSharedFlow @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultCacheService : CacheService { private val _clearedCacheEventFlow = MutableSharedFlow(0) override val clearedCacheEventFlow: Flow = _clearedCacheEventFlow diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt index d0efc2107e..7d32b3d8d9 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.preferences.api.PreferencesEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultPreferencesEntryPoint : PreferencesEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PreferencesEntryPoint.NodeBuilder { return object : PreferencesEntryPoint.NodeBuilder { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/MediaPreviewConfigStateStore.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/MediaPreviewConfigStateStore.kt index b2d7243ccc..ff9a6a6256 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/MediaPreviewConfigStateStore.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/MediaPreviewConfigStateStore.kt @@ -10,7 +10,6 @@ package io.element.android.features.preferences.impl.advanced import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.runUpdatingState @@ -45,7 +44,6 @@ interface MediaPreviewConfigStateStore { @ContributesBinding(SessionScope::class) @SingleIn(SessionScope::class) -@Inject class DefaultMediaPreviewConfigStateStore( @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt index 8dc8b3d2bd..f353e3cf3f 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/SystemNotificationsEnabledProvider.kt @@ -10,7 +10,6 @@ package io.element.android.features.preferences.impl.notifications import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn interface SystemNotificationsEnabledProvider { @@ -19,7 +18,6 @@ interface SystemNotificationsEnabledProvider { @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultSystemNotificationsEnabledProvider( private val notificationManager: NotificationManagerCompat, ) : SystemNotificationsEnabledProvider { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/VersionFormatter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/VersionFormatter.kt index ce65f62f37..39483f664b 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/VersionFormatter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/VersionFormatter.kt @@ -9,7 +9,6 @@ package io.element.android.features.preferences.impl.root import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider @@ -19,7 +18,6 @@ interface VersionFormatter { } @ContributesBinding(AppScope::class) -@Inject class DefaultVersionFormatter( private val stringProvider: StringProvider, private val buildMeta: BuildMeta, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt index 50d9cf8798..716aba531f 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ClearCacheUseCase.kt @@ -10,7 +10,6 @@ package io.element.android.features.preferences.impl.tasks import android.content.Context import coil3.SingletonImageLoader import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Provider import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.features.preferences.impl.DefaultCacheService @@ -28,7 +27,6 @@ interface ClearCacheUseCase { } @ContributesBinding(SessionScope::class) -@Inject class DefaultClearCacheUseCase( @ApplicationContext private val context: Context, private val matrixClient: MatrixClient, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ComputeCacheSizeUseCase.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ComputeCacheSizeUseCase.kt index 10b1748590..d21393cfc1 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ComputeCacheSizeUseCase.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/tasks/ComputeCacheSizeUseCase.kt @@ -9,7 +9,6 @@ package io.element.android.features.preferences.impl.tasks import android.content.Context import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.file.getSizeOfFiles import io.element.android.libraries.androidutils.filesize.FileSizeFormatter import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -23,7 +22,6 @@ interface ComputeCacheSizeUseCase { } @ContributesBinding(SessionScope::class) -@Inject class DefaultComputeCacheSizeUseCase( @ApplicationContext private val context: Context, private val matrixClient: MatrixClient, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/DefaultRageshakeFeatureAvailability.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/DefaultRageshakeFeatureAvailability.kt index 8cb210159b..123870470b 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/DefaultRageshakeFeatureAvailability.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/DefaultRageshakeFeatureAvailability.kt @@ -9,14 +9,12 @@ package io.element.android.features.rageshake.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.impl.reporter.BugReporterUrlProvider import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @ContributesBinding(AppScope::class) -@Inject class DefaultRageshakeFeatureAvailability( private val bugReporterUrlProvider: BugReporterUrlProvider, ) : RageshakeFeatureAvailability { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt index 6fa5772c17..b4cfe28bc8 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.bugreport.BugReportEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultBugReportEntryPoint : BugReportEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): BugReportEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt index 4d9f596d1d..09080e5029 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt @@ -16,7 +16,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.api.crash.CrashDetectionEvents import io.element.android.features.rageshake.api.crash.CrashDetectionPresenter @@ -29,7 +28,6 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.launch @ContributesBinding(AppScope::class) -@Inject class DefaultCrashDetectionPresenter( private val buildMeta: BuildMeta, private val crashDataStore: CrashDataStore, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/PreferencesCrashDataStore.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/PreferencesCrashDataStore.kt index a2be13b4cd..ad21bd4002 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/PreferencesCrashDataStore.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/PreferencesCrashDataStore.kt @@ -12,7 +12,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow @@ -23,7 +22,6 @@ private val appHasCrashedKey = booleanPreferencesKey("appHasCrashed") private val crashDataKey = stringPreferencesKey("crashData") @ContributesBinding(AppScope::class) -@Inject class PreferencesCrashDataStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : CrashDataStore { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt index c0120bfc3a..c6b02d2514 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt @@ -16,7 +16,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.detection.RageshakeDetectionEvents import io.element.android.features.rageshake.api.detection.RageshakeDetectionPresenter import io.element.android.features.rageshake.api.detection.RageshakeDetectionState @@ -30,7 +29,6 @@ import kotlinx.coroutines.launch import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class DefaultRageshakeDetectionPresenter( private val screenshotHolder: ScreenshotHolder, private val rageShake: RageShake, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/DefaultLogFilesRemover.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/DefaultLogFilesRemover.kt index 1122042d7f..b859874add 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/DefaultLogFilesRemover.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/DefaultLogFilesRemover.kt @@ -9,13 +9,11 @@ package io.element.android.features.rageshake.impl.logs import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.logs.LogFilesRemover import io.element.android.features.rageshake.impl.reporter.DefaultBugReporter import java.io.File @ContributesBinding(AppScope::class) -@Inject class DefaultLogFilesRemover( private val bugReporter: DefaultBugReporter, ) : LogFilesRemover { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt index d1072f360c..00ca57ea0d 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt @@ -17,7 +17,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.api.preferences.RageshakePreferencesEvents import io.element.android.features.rageshake.api.preferences.RageshakePreferencesPresenter @@ -28,7 +27,6 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @ContributesBinding(AppScope::class) -@Inject class DefaultRageshakePreferencesPresenter( private val rageshake: RageShake, private val rageshakeDataStore: RageshakeDataStore, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt index 634e3ed65a..b664caa6ca 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/DefaultRageShake.kt @@ -14,14 +14,12 @@ import androidx.core.content.getSystemService import com.squareup.seismic.ShakeDetector import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import dev.zacsweers.metro.binding import io.element.android.libraries.di.annotations.ApplicationContext @SingleIn(AppScope::class) @ContributesBinding(scope = AppScope::class, binding = binding()) -@Inject class DefaultRageShake( @ApplicationContext context: Context, ) : ShakeDetector.Listener, RageShake { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/PreferencesRageshakeDataStore.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/PreferencesRageshakeDataStore.kt index 32be2f7e95..bc9ebc8e98 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/PreferencesRageshakeDataStore.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/rageshake/PreferencesRageshakeDataStore.kt @@ -12,7 +12,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.floatPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow @@ -22,7 +21,6 @@ private val enabledKey = booleanPreferencesKey("enabled") private val sensitivityKey = floatPreferencesKey("sensitivity") @ContributesBinding(AppScope::class) -@Inject class PreferencesRageshakeDataStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : RageshakeDataStore { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt index 9e450d5edb..c4472f7d64 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/BugReportAppNameProvider.kt @@ -9,7 +9,6 @@ package io.element.android.features.rageshake.impl.reporter import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.RageshakeConfig fun interface BugReportAppNameProvider { @@ -17,7 +16,6 @@ fun interface BugReportAppNameProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultBugReportAppNameProvider : BugReportAppNameProvider { override fun provide(): String = RageshakeConfig.BUG_REPORT_APP_NAME } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index c84388b099..89bec00ac5 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -13,7 +13,6 @@ import androidx.core.net.toFile import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Provider import dev.zacsweers.metro.SingleIn import io.element.android.appconfig.RageshakeConfig @@ -70,7 +69,6 @@ import java.util.Locale */ @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultBugReporter( @ApplicationContext private val context: Context, @AppCoroutineScope diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt index 7148d9e95e..cb0f8993f1 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporterUrlProvider.kt @@ -9,7 +9,6 @@ package io.element.android.features.rageshake.impl.reporter import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.RageshakeConfig import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService @@ -25,7 +24,6 @@ import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl @ContributesBinding(AppScope::class) -@Inject class DefaultBugReporterUrlProvider( private val bugReportAppNameProvider: BugReportAppNameProvider, private val enterpriseService: EnterpriseService, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/screenshot/DefaultScreenshotHolder.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/screenshot/DefaultScreenshotHolder.kt index 5166f3d672..139473f2ee 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/screenshot/DefaultScreenshotHolder.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/screenshot/DefaultScreenshotHolder.kt @@ -12,7 +12,6 @@ import android.graphics.Bitmap import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.androidutils.bitmap.writeBitmap import io.element.android.libraries.androidutils.file.safeDelete @@ -21,7 +20,6 @@ import java.io.File @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultScreenshotHolder( @ApplicationContext private val context: Context, ) : ScreenshotHolder { diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt index e433c70bf6..d2f9eb8d7e 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.reportroom.api.ReportRoomEntryPoint import io.element.android.libraries.architecture.createNode import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(AppScope::class) -@Inject class DefaultReportRoomEntryPoint : ReportRoomEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId): Node { return parentNode.createNode(buildContext, plugins = listOf(ReportRoomNode.Inputs(roomId))) diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoom.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoom.kt index dae5c4e272..126450f508 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoom.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoom.kt @@ -8,7 +8,6 @@ package io.element.android.features.reportroom.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -29,7 +28,6 @@ interface ReportRoom { } @ContributesBinding(SessionScope::class) -@Inject class DefaultReportRoom( private val client: MatrixClient, ) : ReportRoom { diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt index 9c2d3d2cdf..df653437f1 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.roomaliasesolver.api.RoomAliasResolverEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultRoomAliasResolverEntryPoint : RoomAliasResolverEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomAliasResolverEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 6d26ef32a1..0ae2dc09ea 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -12,14 +12,12 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint.InitialTarget import io.element.android.features.roomdetails.impl.RoomDetailsFlowNode.NavTarget import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultRoomDetailsEntryPoint : RoomDetailsEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { return object : RoomDetailsEntryPoint.NodeBuilder { diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt index 135b2d5aea..6716bbbf97 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt @@ -12,13 +12,11 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint import io.element.android.features.roomdirectory.impl.root.RoomDirectoryNode import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultRoomDirectoryEntryPoint : RoomDirectoryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDirectoryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt index 830e3ef984..5e5f433635 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/DefaultRoomMemberModerationRenderer.kt @@ -11,7 +11,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.ui.Modifier import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.roommembermoderation.api.ModerationAction import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer import io.element.android.features.roommembermoderation.api.RoomMemberModerationState @@ -20,7 +19,6 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import timber.log.Timber @ContributesBinding(RoomScope::class) -@Inject class DefaultRoomMemberModerationRenderer : RoomMemberModerationRenderer { @Composable override fun Render( diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt index 6d5358299b..9e8138ca8c 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.securebackup.api.SecureBackupEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultSecureBackupEntryPoint : SecureBackupEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SecureBackupEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt index fe65c60b73..5008c5dbfb 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.share.api.ShareEntryPoint import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultShareEntryPoint : ShareEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ShareEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareIntentHandler.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareIntentHandler.kt index b3db111820..8cccfdbba6 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareIntentHandler.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareIntentHandler.kt @@ -17,7 +17,6 @@ import android.os.Build import androidx.core.content.IntentCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.compat.queryIntentActivitiesCompat import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAny @@ -49,7 +48,6 @@ interface ShareIntentHandler { } @ContributesBinding(AppScope::class) -@Inject class DefaultShareIntentHandler( @ApplicationContext private val context: Context, ) : ShareIntentHandler { diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt index 91def6db8d..3bbaebb9b1 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.signedout.api.SignedOutEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultSignedOutEntryPoint : SignedOutEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SignedOutEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt index 8591978417..5bcf2cf801 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) -@Inject class DefaultSpaceEntryPoint : SpaceEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SpaceEntryPoint.NodeBuilder { val plugins = mutableSetOf() diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt index c33ac4356f..801d5e0466 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.startchat.api.StartChatEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultStartChatEntryPoint : StartChatEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): StartChatEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartDMAction.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartDMAction.kt index 6847b1859d..24e9e5d418 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartDMAction.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartDMAction.kt @@ -9,7 +9,6 @@ package io.element.android.features.startchat.impl import androidx.compose.runtime.MutableState import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.CreatedRoom import io.element.android.features.startchat.api.ConfirmingStartDmWithMatrixUser import io.element.android.features.startchat.api.StartDMAction @@ -23,7 +22,6 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.services.analytics.api.AnalyticsService @ContributesBinding(SessionScope::class) -@Inject class DefaultStartDMAction( private val matrixClient: MatrixClient, private val analyticsService: AnalyticsService, diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt index bfc8a30df6..84f1b728e6 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.userprofile.api.UserProfileEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultUserProfileEntryPoint : UserProfileEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): UserProfileEntryPoint.NodeBuilder { return object : UserProfileEntryPoint.NodeBuilder { diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfilePresenterFactory.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfilePresenterFactory.kt index 775cdf5ff9..c39bcbcb94 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfilePresenterFactory.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfilePresenterFactory.kt @@ -8,7 +8,6 @@ package io.element.android.features.userprofile.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.userprofile.api.UserProfilePresenterFactory import io.element.android.features.userprofile.api.UserProfileState import io.element.android.features.userprofile.impl.root.UserProfilePresenter @@ -17,7 +16,6 @@ import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.UserId @ContributesBinding(SessionScope::class) -@Inject class DefaultUserProfilePresenterFactory( private val factory: UserProfilePresenter.Factory, ) : UserProfilePresenterFactory { diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt index c1a6418153..b1d890b9ef 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): IncomingVerificationEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt index 8355e71f75..a6b587308a 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): OutgoingVerificationEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt index 0e1f1e11b9..43e7d2d37a 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultTextFileViewer.kt @@ -11,14 +11,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.viewfolder.api.TextFileViewer import io.element.android.features.viewfolder.impl.file.ColorationMode import io.element.android.features.viewfolder.impl.file.FileContent import kotlinx.collections.immutable.ImmutableList @ContributesBinding(AppScope::class) -@Inject class DefaultTextFileViewer : TextFileViewer { @Composable override fun Render( diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt index 330ca68a8c..2aa341d5b4 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt @@ -12,13 +12,11 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.viewfolder.api.ViewFolderEntryPoint import io.element.android.features.viewfolder.impl.root.ViewFolderFlowNode import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultViewFolderEntryPoint : ViewFolderEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ViewFolderEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileContentReader.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileContentReader.kt index e3635e40f4..a2bc518b81 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileContentReader.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileContentReader.kt @@ -9,7 +9,6 @@ package io.element.android.features.viewfolder.impl.file import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions import kotlinx.coroutines.withContext @@ -20,7 +19,6 @@ interface FileContentReader { } @ContributesBinding(AppScope::class) -@Inject class DefaultFileContentReader( private val dispatchers: CoroutineDispatchers, ) : FileContentReader { diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileSave.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileSave.kt index 9323281471..f4b6870d82 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileSave.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileSave.kt @@ -15,7 +15,6 @@ import android.provider.MediaStore import androidx.annotation.RequiresApi import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.toast import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -33,7 +32,6 @@ interface FileSave { } @ContributesBinding(AppScope::class) -@Inject class DefaultFileSave( @ApplicationContext private val context: Context, private val dispatchers: CoroutineDispatchers, diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileShare.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileShare.kt index 3c8aae4f39..b848b114d2 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileShare.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/FileShare.kt @@ -13,7 +13,6 @@ import android.net.Uri import androidx.core.content.FileProvider import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.meta.BuildMeta @@ -30,7 +29,6 @@ interface FileShare { } @ContributesBinding(AppScope::class) -@Inject class DefaultFileShare( @ApplicationContext private val context: Context, private val dispatchers: CoroutineDispatchers, diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/FolderExplorer.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/FolderExplorer.kt index dec0541622..51111f93f8 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/FolderExplorer.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/FolderExplorer.kt @@ -9,7 +9,6 @@ package io.element.android.features.viewfolder.impl.folder import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.viewfolder.impl.model.Item import io.element.android.libraries.androidutils.filesize.FileSizeFormatter import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -21,7 +20,6 @@ interface FolderExplorer { } @ContributesBinding(AppScope::class) -@Inject class DefaultFolderExplorer( private val fileSizeFormatter: FileSizeFormatter, private val dispatchers: CoroutineDispatchers, diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt index baf5ecd5b3..bd35d3e6f0 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.accountselect.api.AccountSelectEntryPoint import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) -@Inject class DefaultAccountSelectEntryPoint : AccountSelectEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): AccountSelectEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt index 3c3cf24ebc..2ad5d4d33e 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/browser/ConsoleMessageLogger.kt @@ -11,7 +11,6 @@ import android.util.Log import android.webkit.ConsoleMessage import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import timber.log.Timber interface ConsoleMessageLogger { @@ -22,7 +21,6 @@ interface ConsoleMessageLogger { } @ContributesBinding(AppScope::class) -@Inject class DefaultConsoleMessageLogger : ConsoleMessageLogger { override fun log( tag: String, diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt index 98fa682060..2b750aeb82 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/clipboard/AndroidClipboardHelper.kt @@ -13,13 +13,11 @@ import android.content.Context import androidx.core.content.getSystemService import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.annotations.ApplicationContext @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class AndroidClipboardHelper( @ApplicationContext private val context: Context, ) : ClipboardHelper { diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/TemporaryUriDeleter.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/TemporaryUriDeleter.kt index e8f7ef7f1d..e501942f1f 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/TemporaryUriDeleter.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/file/TemporaryUriDeleter.kt @@ -11,7 +11,6 @@ import android.content.Context import android.net.Uri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import timber.log.Timber @@ -23,7 +22,6 @@ interface TemporaryUriDeleter { } @ContributesBinding(AppScope::class) -@Inject class DefaultTemporaryUriDeleter( @ApplicationContext private val context: Context, ) : TemporaryUriDeleter { diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatter.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatter.kt index 9578c96b2c..abf43ac1f3 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatter.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/filesize/AndroidFileSizeFormatter.kt @@ -12,12 +12,10 @@ import android.os.Build import android.text.format.Formatter import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider @ContributesBinding(AppScope::class) -@Inject class AndroidFileSizeFormatter( @ApplicationContext private val context: Context, private val sdkIntProvider: BuildVersionSdkIntProvider, diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt index 08226060db..0c834eedca 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.androidutils.json import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Provider import dev.zacsweers.metro.SingleIn import kotlinx.serialization.json.Json @@ -21,7 +20,6 @@ interface JsonProvider : Provider @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultJsonProvider : JsonProvider { private val json: Json by lazy { Json { ignoreUnknownKeys = true } } override fun invoke() = json diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/DateTimeObserver.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/DateTimeObserver.kt index e3c7973341..d211305260 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/DateTimeObserver.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/system/DateTimeObserver.kt @@ -13,7 +13,6 @@ import android.content.Intent import android.content.IntentFilter import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.androidutils.system.DateTimeObserver.Event import io.element.android.libraries.di.annotations.ApplicationContext @@ -32,7 +31,6 @@ interface DateTimeObserver { @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultDateTimeObserver( @ApplicationContext context: Context ) : DateTimeObserver { diff --git a/libraries/audio/impl/src/main/kotlin/io/element/android/libraries/audio/impl/DefaultAudioFocus.kt b/libraries/audio/impl/src/main/kotlin/io/element/android/libraries/audio/impl/DefaultAudioFocus.kt index f5edc2aabb..b0736c9328 100644 --- a/libraries/audio/impl/src/main/kotlin/io/element/android/libraries/audio/impl/DefaultAudioFocus.kt +++ b/libraries/audio/impl/src/main/kotlin/io/element/android/libraries/audio/impl/DefaultAudioFocus.kt @@ -15,13 +15,11 @@ import android.os.Build import androidx.core.content.getSystemService import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.audio.api.AudioFocus import io.element.android.libraries.audio.api.AudioFocusRequester import io.element.android.libraries.di.annotations.ApplicationContext @ContributesBinding(AppScope::class) -@Inject class DefaultAudioFocus( @ApplicationContext private val context: Context, ) : AudioFocus { diff --git a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt index 7b3d57259d..734d1750a5 100644 --- a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt +++ b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/AESEncryptionDecryptionService.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.cryptography.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.cryptography.api.AESEncryptionSpecs import io.element.android.libraries.cryptography.api.EncryptionDecryptionService import io.element.android.libraries.cryptography.api.EncryptionResult @@ -21,7 +20,6 @@ import javax.crypto.spec.GCMParameterSpec * Default implementation of [EncryptionDecryptionService] using AES encryption. */ @ContributesBinding(AppScope::class) -@Inject class AESEncryptionDecryptionService : EncryptionDecryptionService { override fun createEncryptionCipher(key: SecretKey): Cipher { return Cipher.getInstance(AESEncryptionSpecs.CIPHER_TRANSFORMATION).apply { diff --git a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt index 9e394f9db2..177cc60fad 100644 --- a/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt +++ b/libraries/cryptography/impl/src/main/kotlin/io/element/android/libraries/cryptography/impl/KeyStoreSecretKeyRepository.kt @@ -12,7 +12,6 @@ import android.security.keystore.KeyGenParameterSpec import android.security.keystore.KeyProperties import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.cryptography.api.AESEncryptionSpecs import io.element.android.libraries.cryptography.api.SecretKeyRepository import timber.log.Timber @@ -26,7 +25,6 @@ import javax.crypto.SecretKey * The generated key uses AES algorithm, with a key size of 128 bits, and the GCM block mode. */ @ContributesBinding(AppScope::class) -@Inject class KeyStoreSecretKeyRepository( private val keyStore: KeyStore, ) : SecretKeyRepository { diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatterDay.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatterDay.kt index 8a9ce96463..875684e9f7 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatterDay.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatterDay.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.dateformatter.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.safeCapitalize interface DateFormatterDay { @@ -20,7 +19,6 @@ interface DateFormatterDay { } @ContributesBinding(AppScope::class) -@Inject class DefaultDateFormatterDay( private val localDateTimeProvider: LocalDateTimeProvider, private val dateFormatters: DateFormatters, diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatter.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatter.kt index cd1180caa1..482de69133 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatter.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatter.kt @@ -9,12 +9,10 @@ package io.element.android.libraries.dateformatter.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.dateformatter.api.DateFormatter import io.element.android.libraries.dateformatter.api.DateFormatterMode @ContributesBinding(AppScope::class) -@Inject class DefaultDateFormatter( private val dateFormatterFull: DateFormatterFull, private val dateFormatterMonth: DateFormatterMonth, diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocaleChangeObserver.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocaleChangeObserver.kt index 773871d153..18443a4a20 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocaleChangeObserver.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocaleChangeObserver.kt @@ -14,7 +14,6 @@ import android.content.IntentFilter import android.os.Build import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.annotations.ApplicationContext @@ -28,7 +27,6 @@ interface LocaleChangeListener { @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultLocaleChangeObserver( @ApplicationContext private val context: Context, ) : LocaleChangeObserver { diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt index 7c36ecd0b1..fb13fc18b5 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt @@ -9,14 +9,12 @@ package io.element.android.libraries.deeplink.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.deeplink.api.DeepLinkCreator import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @ContributesBinding(AppScope::class) -@Inject class DefaultDeepLinkCreator : DeepLinkCreator { override fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?): String { return buildString { diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt index e6ab87b2b3..ed96fa3174 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt @@ -11,7 +11,6 @@ import android.content.Intent import android.net.Uri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.deeplink.api.DeeplinkData import io.element.android.libraries.deeplink.api.DeeplinkParser import io.element.android.libraries.matrix.api.core.RoomId @@ -19,7 +18,6 @@ import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @ContributesBinding(AppScope::class) -@Inject class DefaultDeeplinkParser : DeeplinkParser { override fun getFromIntent(intent: Intent): DeeplinkData? { return intent diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/usecase/DefaultInviteFriendsUseCase.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/usecase/DefaultInviteFriendsUseCase.kt index 045b199237..2249f7861e 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/usecase/DefaultInviteFriendsUseCase.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/usecase/DefaultInviteFriendsUseCase.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.deeplink.impl.usecase import android.app.Activity import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.startSharePlainTextIntent import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.deeplink.api.usecase.InviteFriendsUseCase @@ -22,7 +21,6 @@ import timber.log.Timber import io.element.android.libraries.androidutils.R as AndroidUtilsR @ContributesBinding(SessionScope::class) -@Inject class DefaultInviteFriendsUseCase( private val stringProvider: StringProvider, private val matrixClient: MatrixClient, diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultPinnedMessagesBannerFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultPinnedMessagesBannerFormatter.kt index c172377ff5..0a10e9a772 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultPinnedMessagesBannerFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultPinnedMessagesBannerFormatter.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.eventformatter.impl import androidx.annotation.StringRes import androidx.compose.ui.text.AnnotatedString import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.eventformatter.api.PinnedMessagesBannerFormatter import io.element.android.libraries.matrix.api.permalink.PermalinkParser @@ -38,7 +37,6 @@ import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider @ContributesBinding(SessionScope::class) -@Inject class DefaultPinnedMessagesBannerFormatter( private val sp: StringProvider, private val permalinkParser: PermalinkParser, diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt index 8354052a24..7e91c4c772 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.eventformatter.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.eventformatter.api.RoomLastMessageFormatter import io.element.android.libraries.eventformatter.impl.mode.RenderingMode @@ -45,7 +44,6 @@ import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider @ContributesBinding(SessionScope::class) -@Inject class DefaultRoomLastMessageFormatter( private val sp: StringProvider, private val roomMembershipContentFormatter: RoomMembershipContentFormatter, diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt index 6cbe734733..b782e2ea89 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.eventformatter.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.SessionScope import io.element.android.libraries.eventformatter.api.TimelineEventFormatter @@ -34,7 +33,6 @@ import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider @ContributesBinding(SessionScope::class) -@Inject class DefaultTimelineEventFormatter( private val sp: StringProvider, private val buildMeta: BuildMeta, diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt index cecd0ca0a8..8da93ffc87 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/DefaultFeatureFlagService.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.featureflag.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.featureflag.api.Feature @@ -19,7 +18,6 @@ import kotlinx.coroutines.flow.flowOf @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultFeatureFlagService( private val providers: Set<@JvmSuppressWildcards FeatureFlagProvider>, private val buildMeta: BuildMeta, diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeaturesProvider.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeaturesProvider.kt index 8d580006e7..59243e4121 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeaturesProvider.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/FeaturesProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.featureflag.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.featureflag.api.Feature import io.element.android.libraries.featureflag.api.FeatureFlags @@ -18,7 +17,6 @@ fun interface FeaturesProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultFeaturesProvider : FeaturesProvider { override fun provide(): List = FeatureFlags.entries } diff --git a/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt b/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt index 5cd17418b3..338b957b09 100644 --- a/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt +++ b/libraries/indicator/impl/src/main/kotlin/io/element/android/libraries/indicator/impl/DefaultIndicatorService.kt @@ -14,7 +14,6 @@ import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.indicator.api.IndicatorService import io.element.android.libraries.matrix.api.encryption.BackupState @@ -23,7 +22,6 @@ import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.verification.SessionVerificationService @ContributesBinding(SessionScope::class) -@Inject class DefaultIndicatorService( private val sessionVerificationService: SessionVerificationService, private val encryptionService: EncryptionService, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt index 53adf88c37..2a887ae297 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.api.recentemojis import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient @@ -19,7 +18,6 @@ fun interface GetRecentEmojis { } @ContributesBinding(SessionScope::class) -@Inject class DefaultGetRecentEmojis( private val client: MatrixClient, private val dispatchers: CoroutineDispatchers, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt index 57486da3e8..b0448e0bd6 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/ClientBuilderProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import org.matrix.rustcomponents.sdk.ClientBuilder interface ClientBuilderProvider { @@ -17,7 +16,6 @@ interface ClientBuilderProvider { } @ContributesBinding(AppScope::class) -@Inject class RustClientBuilderProvider : ClientBuilderProvider { override fun provide(): ClientBuilder { return ClientBuilder() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt index 88ff69459f..d98e6e188f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustSdkMetadata.kt @@ -9,12 +9,10 @@ package io.element.android.libraries.matrix.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.SdkMetadata import org.matrix.rustcomponents.sdk.sdkGitSha @ContributesBinding(AppScope::class) -@Inject class RustSdkMetadata : SdkMetadata { override val sdkGitSha: String get() = sdkGitSha() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 88c86a43d6..6342721593 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.auth import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.mapFailure @@ -52,7 +51,6 @@ import uniffi.matrix_sdk.OAuthAuthorizationData @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class RustMatrixAuthenticationService( private val sessionPathsFactory: SessionPathsFactory, private val coroutineDispatchers: CoroutineDispatchers, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt index 17cff41bc1..a0427c2410 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/RustQrCodeLoginDataFactory.kt @@ -9,14 +9,12 @@ package io.element.android.libraries.matrix.impl.auth.qrlogin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginData import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginDataFactory import org.matrix.rustcomponents.sdk.QrCodeData @ContributesBinding(AppScope::class) -@Inject class RustQrCodeLoginDataFactory : MatrixQrCodeLoginDataFactory { override fun parseQrCodeData(data: ByteArray): Result { return runCatchingExceptions { SdkQrCodeLoginData(QrCodeData.fromBytes(data)) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt index d5d637f54b..32992b15c3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/certificates/DefaultUserCertificatesProvider.kt @@ -9,13 +9,11 @@ package io.element.android.libraries.matrix.impl.certificates import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import timber.log.Timber import java.security.KeyStore import java.security.KeyStoreException @ContributesBinding(AppScope::class) -@Inject class DefaultUserCertificatesProvider : UserCertificatesProvider { /** * Get additional user-installed certificates from the `AndroidCAStore` `Keystore`. diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt index b6d9aa2b89..6157b6ce1a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/keys/DefaultPassphraseGenerator.kt @@ -10,13 +10,11 @@ package io.element.android.libraries.matrix.impl.keys import android.util.Base64 import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import java.security.SecureRandom private const val SECRET_SIZE = 256 @ContributesBinding(AppScope::class) -@Inject class DefaultPassphraseGenerator : PassphraseGenerator { override fun generatePassphrase(): String? { val key = ByteArray(size = SECRET_SIZE) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt index c03be3bbe9..a82f840dd7 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultMatrixToConverter.kt @@ -11,7 +11,6 @@ import android.net.Uri import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.MatrixConfiguration import io.element.android.libraries.core.extensions.replacePrefix import io.element.android.libraries.matrix.api.permalink.MatrixToConverter @@ -20,7 +19,6 @@ import io.element.android.libraries.matrix.api.permalink.MatrixToConverter * Mapping of an input URI to a matrix.to compliant URI. */ @ContributesBinding(AppScope::class) -@Inject class DefaultMatrixToConverter : MatrixToConverter { /** * Try to convert a URL from an element web instance or from a client permalink to a matrix.to url. diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt index 2ed7990ee4..bc7df270b8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkBuilder.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.permalink import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.MatrixPatterns import io.element.android.libraries.matrix.api.core.RoomAlias @@ -20,7 +19,6 @@ import org.matrix.rustcomponents.sdk.matrixToRoomAliasPermalink import org.matrix.rustcomponents.sdk.matrixToUserPermalink @ContributesBinding(AppScope::class) -@Inject class DefaultPermalinkBuilder : PermalinkBuilder { override fun permalinkForUser(userId: UserId): Result { if (!MatrixPatterns.isUserId(userId.value)) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkParser.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkParser.kt index 0454b719e3..a8920c1b0c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkParser.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/permalink/DefaultPermalinkParser.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.matrix.impl.permalink import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias @@ -32,7 +31,6 @@ import org.matrix.rustcomponents.sdk.parseMatrixEntityFrom * or matrix: permalinks (e.g. matrix:u/chagai95:matrix.org) */ @ContributesBinding(AppScope::class) -@Inject class DefaultPermalinkParser( private val matrixToConverter: MatrixToConverter ) : PermalinkParser { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt index 492d5e5792..2f989a098d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/platform/RustInitPlatformService.kt @@ -9,14 +9,12 @@ package io.element.android.libraries.matrix.impl.platform import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.platform.InitPlatformService import io.element.android.libraries.matrix.api.tracing.TracingConfiguration import io.element.android.libraries.matrix.impl.tracing.map import org.matrix.rustcomponents.sdk.initPlatform @ContributesBinding(AppScope::class) -@Inject class RustInitPlatformService : InitPlatformService { override fun init(tracingConfiguration: TracingConfiguration) { initPlatform( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt index e5318671f5..2954333a38 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/proxy/DefaultProxyProvider.kt @@ -13,7 +13,6 @@ import android.provider.Settings import androidx.core.content.getSystemService import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import timber.log.Timber @@ -29,7 +28,6 @@ import timber.log.Timber * ``` */ @ContributesBinding(AppScope::class) -@Inject class DefaultProxyProvider( @ApplicationContext private val context: Context diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt index 29f72848b8..6e9890aca8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/TimelineEventTypeFilterFactory.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.room import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.room.StateEventType import org.matrix.rustcomponents.sdk.FilterTimelineEventType import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter @@ -19,7 +18,6 @@ interface TimelineEventTypeFilterFactory { } @ContributesBinding(AppScope::class) -@Inject class RustTimelineEventTypeFilterFactory : TimelineEventTypeFilterFactory { override fun create(listStateEventType: List): TimelineEventTypeFilter { return TimelineEventTypeFilter.exclude( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt index 039144bf55..aacf9512ca 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/alias/DefaultRoomAliasHelper.kt @@ -9,12 +9,10 @@ package io.element.android.libraries.matrix.impl.room.alias import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.alias.RoomAliasHelper @ContributesBinding(AppScope::class) -@Inject class DefaultRoomAliasHelper : RoomAliasHelper { override fun roomAliasNameFromRoomDisplayName(name: String): String { return org.matrix.rustcomponents.sdk.roomAliasNameFromRoomDisplayName(name) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoom.kt index 5a790acd7a..bac6d9da74 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoom.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.impl.room.join import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.JoinedRoom import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.di.SessionScope @@ -21,7 +20,6 @@ import io.element.android.libraries.matrix.impl.analytics.toAnalyticsJoinedRoom import io.element.android.services.analytics.api.AnalyticsService @ContributesBinding(SessionScope::class) -@Inject class DefaultJoinRoom( private val client: MatrixClient, private val analyticsService: AnalyticsService, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/server/DefaultUserServerResolver.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/server/DefaultUserServerResolver.kt index ff62708f65..13b7873a51 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/server/DefaultUserServerResolver.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/server/DefaultUserServerResolver.kt @@ -8,13 +8,11 @@ package io.element.android.libraries.matrix.impl.server import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.server.UserServerResolver @ContributesBinding(SessionScope::class) -@Inject class DefaultUserServerResolver( private val matrixClient: MatrixClient, ) : UserServerResolver { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt index 9df7f459ac..e1a4ec0fd0 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/tracing/RustTracingService.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.tracing import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.tracing.LogLevel import io.element.android.libraries.matrix.api.tracing.TracingConfiguration @@ -20,7 +19,6 @@ import org.matrix.rustcomponents.sdk.reloadTracingFileWriter import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class RustTracingService(private val buildMeta: BuildMeta) : TracingService { override fun createTimberTree(target: String): Timber.Tree { return RustTracingTree(target = target, retrieveFromStackTrace = buildMeta.isDebuggable) 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 00947f99a2..ded468ab14 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 @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.widget import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.matrix.api.widget.CallAnalyticCredentialsProvider @@ -25,7 +24,6 @@ import uniffi.matrix_sdk.VirtualElementCallWidgetProperties import uniffi.matrix_sdk.Intent as CallIntent @ContributesBinding(AppScope::class) -@Inject class DefaultCallWidgetSettingsProvider( private val buildMeta: BuildMeta, private val callAnalyticsCredentialsProvider: CallAnalyticCredentialsProvider, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt index 54a1a21e22..413743e0c8 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt @@ -26,7 +26,6 @@ interface LoggedInImageLoaderFactory { } @ContributesBinding(AppScope::class) -@Inject class DefaultLoggedInImageLoaderFactory( @ApplicationContext private val context: Context, private val okHttpClient: Provider, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt index 6720eaae0f..16cb3cca18 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.matrix.ui.media import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId @@ -24,7 +23,6 @@ interface ImageLoaderHolder { @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultImageLoaderHolder( private val loggedInImageLoaderFactory: LoggedInImageLoaderFactory, private val sessionObserver: SessionObserver, diff --git a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt index 878c9ea865..232b97c739 100644 --- a/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt +++ b/libraries/mediapickers/impl/src/main/kotlin/io/element/android/libraries/mediapickers/impl/DefaultPickerProvider.kt @@ -17,7 +17,6 @@ import androidx.compose.ui.platform.LocalInspectionMode import androidx.core.content.FileProvider import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.mediapickers.api.ComposePickerLauncher import io.element.android.libraries.mediapickers.api.NoOpPickerLauncher @@ -27,7 +26,6 @@ import io.element.android.libraries.mediapickers.api.PickerType import java.io.File @ContributesBinding(AppScope::class) -@Inject class DefaultPickerProvider( @ApplicationContext private val context: Context, ) : PickerProvider { diff --git a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt index 5aad37779c..817e42fa04 100644 --- a/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt +++ b/libraries/mediaplayer/impl/src/main/kotlin/io/element/android/libraries/mediaplayer/impl/DefaultMediaPlayer.kt @@ -11,7 +11,6 @@ import androidx.media3.common.C import androidx.media3.common.MediaItem import androidx.media3.common.Player import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.audio.api.AudioFocus import io.element.android.libraries.audio.api.AudioFocusRequester @@ -36,7 +35,6 @@ import kotlin.time.Duration.Companion.seconds */ @ContributesBinding(RoomScope::class) @SingleIn(RoomScope::class) -@Inject class DefaultMediaPlayer( private val player: SimplePlayer, @SessionCoroutineScope diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt index 73c6e9c64a..c003a76dda 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/AndroidMediaPreProcessor.kt @@ -14,7 +14,6 @@ import android.net.Uri import androidx.exifinterface.media.ExifInterface import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.file.TemporaryUriDeleter import io.element.android.libraries.androidutils.file.createTmpFile import io.element.android.libraries.androidutils.file.getFileName @@ -50,7 +49,6 @@ import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds @ContributesBinding(AppScope::class) -@Inject class AndroidMediaPreProcessor( @ApplicationContext private val context: Context, private val thumbnailFactory: ThumbnailFactory, diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/DefaultMediaOptimizationConfigProvider.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/DefaultMediaOptimizationConfigProvider.kt index f3e89730bd..f187496dc3 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/DefaultMediaOptimizationConfigProvider.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/DefaultMediaOptimizationConfigProvider.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.mediaupload.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.mediaupload.api.MediaOptimizationConfig import io.element.android.libraries.mediaupload.api.MediaOptimizationConfigProvider @@ -16,7 +15,6 @@ import io.element.android.libraries.preferences.api.store.SessionPreferencesStor import kotlinx.coroutines.flow.first @ContributesBinding(SessionScope::class) -@Inject class DefaultMediaOptimizationConfigProvider( private val sessionPreferencesStore: SessionPreferencesStore, ) : MediaOptimizationConfigProvider { diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt index 0b6c2cc6cb..75686b637a 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt @@ -12,13 +12,11 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.createNode import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryFlowNode @ContributesBinding(AppScope::class) -@Inject class DefaultMediaGalleryEntryPoint : MediaGalleryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaGalleryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt index d2800ef9b8..da7c797bfb 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt @@ -12,7 +12,6 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.createNode import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.matrix.api.core.UserId @@ -22,7 +21,6 @@ import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint import io.element.android.libraries.mediaviewer.impl.viewer.MediaViewerNode @ContributesBinding(AppScope::class) -@Inject class DefaultMediaViewerEntryPoint : MediaViewerEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaViewerEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedTimelineMediaGalleryDataSourceFactory.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedTimelineMediaGalleryDataSourceFactory.kt index 5d998d25fd..15999f183f 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedTimelineMediaGalleryDataSourceFactory.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FocusedTimelineMediaGalleryDataSourceFactory.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.mediaviewer.impl.datasource import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -23,7 +22,6 @@ fun interface FocusedTimelineMediaGalleryDataSourceFactory { } @ContributesBinding(RoomScope::class) -@Inject class DefaultFocusedTimelineMediaGalleryDataSourceFactory( private val room: JoinedRoom, private val timelineMediaItemsFactory: TimelineMediaItemsFactory, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt index f40bb08a86..eb822b4969 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.mediaviewer.impl.datasource import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.di.RoomScope @@ -39,7 +38,6 @@ interface MediaGalleryDataSource { @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -@Inject class TimelineMediaGalleryDataSource( private val room: BaseRoom, private val mediaTimeline: MediaTimeline, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaTimeline.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaTimeline.kt index c3543ba129..52ca79ca91 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaTimeline.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaTimeline.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.mediaviewer.impl.datasource import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId @@ -36,7 +35,6 @@ interface MediaTimeline { */ @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -@Inject class LiveMediaTimeline( private val room: JoinedRoom, ) : MediaTimeline { diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt index 6e7508a947..3a9d05b873 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaActions.kt @@ -31,7 +31,6 @@ import androidx.core.content.PermissionChecker import androidx.core.net.toFile import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.startInstallFromSourceIntent import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -47,7 +46,6 @@ import java.io.FileOutputStream import java.io.InputStream @ContributesBinding(AppScope::class) -@Inject class AndroidLocalMediaActions( @ApplicationContext private val context: Context, private val coroutineDispatchers: CoroutineDispatchers, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt index 4854c1e2f9..361ffb8a1b 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/AndroidLocalMediaFactory.kt @@ -12,7 +12,6 @@ import android.net.Uri import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.file.getFileName import io.element.android.libraries.androidutils.file.getFileSize import io.element.android.libraries.androidutils.file.getMimeType @@ -28,7 +27,6 @@ import io.element.android.libraries.mediaviewer.api.local.LocalMediaFactory import io.element.android.libraries.mediaviewer.api.util.FileExtensionExtractor @ContributesBinding(AppScope::class) -@Inject class AndroidLocalMediaFactory( @ApplicationContext private val context: Context, private val fileSizeFormatter: FileSizeFormatter, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/DefaultLocalMediaRenderer.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/DefaultLocalMediaRenderer.kt index 1e69abecc1..2c5397777b 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/DefaultLocalMediaRenderer.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/local/DefaultLocalMediaRenderer.kt @@ -12,7 +12,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.viewfolder.api.TextFileViewer import io.element.android.libraries.audio.api.AudioFocus import io.element.android.libraries.mediaviewer.api.local.LocalMedia @@ -22,7 +21,6 @@ import me.saket.telephoto.zoomable.ZoomSpec import me.saket.telephoto.zoomable.rememberZoomableState @ContributesBinding(AppScope::class) -@Inject class DefaultLocalMediaRenderer( private val textFileViewer: TextFileViewer, private val audioFocus: AudioFocus, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt index 009218d755..b979db9ae6 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/util/FileExtensionExtractorWithValidation.kt @@ -10,11 +10,9 @@ package io.element.android.libraries.mediaviewer.impl.util import android.webkit.MimeTypeMap import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.mediaviewer.api.util.FileExtensionExtractor @ContributesBinding(AppScope::class) -@Inject class FileExtensionExtractorWithValidation : FileExtensionExtractor { override fun extractFromName(name: String): String { val fileExtension = name.substringAfterLast('.', "") diff --git a/libraries/network/src/main/kotlin/io/element/android/libraries/network/useragent/DefaultUserAgentProvider.kt b/libraries/network/src/main/kotlin/io/element/android/libraries/network/useragent/DefaultUserAgentProvider.kt index bf1d2a93c9..7c7cae0c66 100644 --- a/libraries/network/src/main/kotlin/io/element/android/libraries/network/useragent/DefaultUserAgentProvider.kt +++ b/libraries/network/src/main/kotlin/io/element/android/libraries/network/useragent/DefaultUserAgentProvider.kt @@ -10,14 +10,12 @@ package io.element.android.libraries.network.useragent import android.os.Build import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.SdkMetadata @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultUserAgentProvider( private val buildMeta: BuildMeta, private val sdkMeta: SdkMetadata, diff --git a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt index c49128543a..9a2f5117ad 100644 --- a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt +++ b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcActionFlow.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.oidc.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow @@ -18,7 +17,6 @@ import kotlinx.coroutines.flow.MutableStateFlow @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultOidcActionFlow : OidcActionFlow { private val mutableStateFlow = MutableStateFlow(null) diff --git a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolver.kt b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolver.kt index 42cdb14851..7f526a0e67 100644 --- a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolver.kt +++ b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/DefaultOidcIntentResolver.kt @@ -10,12 +10,10 @@ package io.element.android.libraries.oidc.impl import android.content.Intent import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcIntentResolver @ContributesBinding(AppScope::class) -@Inject class DefaultOidcIntentResolver( private val oidcUrlParser: OidcUrlParser, ) : OidcIntentResolver { diff --git a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/OidcUrlParser.kt b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/OidcUrlParser.kt index 1e9b6953a8..84a8ac9fd9 100644 --- a/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/OidcUrlParser.kt +++ b/libraries/oidc/impl/src/main/kotlin/io/element/android/libraries/oidc/impl/OidcUrlParser.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.oidc.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.auth.OidcRedirectUrlProvider import io.element.android.libraries.oidc.api.OidcAction @@ -22,7 +21,6 @@ fun interface OidcUrlParser { * TODO Find documentation about the format. */ @ContributesBinding(AppScope::class) -@Inject class DefaultOidcUrlParser( private val oidcRedirectUrlProvider: OidcRedirectUrlProvider, ) : OidcUrlParser { diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt index f2f83e86e5..a47a25cc61 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/AccompanistPermissionStateProvider.kt @@ -15,7 +15,6 @@ import com.google.accompanist.permissions.PermissionState import com.google.accompanist.permissions.rememberPermissionState import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject interface ComposablePermissionStateProvider { @Composable @@ -23,7 +22,6 @@ interface ComposablePermissionStateProvider { } @ContributesBinding(AppScope::class) -@Inject class AccompanistPermissionStateProvider : ComposablePermissionStateProvider { @Composable override fun provide(permission: String, onPermissionResult: (Boolean) -> Unit): PermissionState { diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt index 6902247970..765bd86afa 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionStateProvider.kt @@ -12,7 +12,6 @@ import android.content.pm.PackageManager import androidx.core.content.ContextCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.permissions.api.PermissionStateProvider @@ -21,7 +20,6 @@ import kotlinx.coroutines.flow.Flow @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultPermissionStateProvider( @ApplicationContext private val context: Context, private val permissionsStore: PermissionsStore, diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsStore.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsStore.kt index bd495b1d4b..9df5a54c8e 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsStore.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsStore.kt @@ -11,7 +11,6 @@ import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.edit import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.permissions.api.PermissionsStore import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory @@ -19,7 +18,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @ContributesBinding(AppScope::class) -@Inject class DefaultPermissionsStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : PermissionsStore { diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt index e2a3701774..0719d5a75c 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/action/AndroidPermissionActions.kt @@ -10,12 +10,10 @@ package io.element.android.libraries.permissions.impl.action import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.startNotificationSettingsIntent import io.element.android.libraries.di.annotations.ApplicationContext @ContributesBinding(AppScope::class) -@Inject class AndroidPermissionActions( @ApplicationContext private val context: Context ) : PermissionActions { diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt index b3890a8a7d..05e1aaa728 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt @@ -12,7 +12,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.matrix.api.media.MediaPreviewValue @@ -32,7 +31,6 @@ private val logLevelKey = stringPreferencesKey("logLevel") private val traceLogPacksKey = stringPreferencesKey("traceLogPacks") @ContributesBinding(AppScope::class) -@Inject class DefaultAppPreferencesStore( private val buildMeta: BuildMeta, preferenceDataStoreFactory: PreferenceDataStoreFactory, diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt index 78fccf0e84..56cc4a759f 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt @@ -13,7 +13,6 @@ import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.preferencesDataStore import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.androidutils.preferences.DefaultPreferencesCorruptionHandlerFactory import io.element.android.libraries.di.annotations.ApplicationContext @@ -22,7 +21,6 @@ import java.util.concurrent.ConcurrentHashMap @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultPreferencesDataStoreFactory( @ApplicationContext private val context: Context, ) : PreferenceDataStoreFactory { diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt index 4f24bec89e..fefbd84104 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.preferences.impl.store import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.SessionId @@ -23,7 +22,6 @@ import java.util.concurrent.ConcurrentHashMap @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultSessionPreferencesStoreFactory( @ApplicationContext private val context: Context, sessionObserver: SessionObserver, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt index 9e7ec0d651..531a717ae4 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt @@ -9,14 +9,12 @@ package io.element.android.libraries.push.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.push.api.GetCurrentPushProvider import io.element.android.libraries.pushstore.api.UserPushStoreFactory import io.element.android.services.appnavstate.api.AppNavigationStateService import io.element.android.services.appnavstate.api.currentSessionId @ContributesBinding(AppScope::class) -@Inject class DefaultGetCurrentPushProvider( private val pushStoreFactory: UserPushStoreFactory, private val appNavigationStateService: AppNavigationStateService, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index 45a0e5b4cd..c92e512a71 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import dev.zacsweers.metro.binding import io.element.android.libraries.matrix.api.MatrixClient @@ -31,7 +30,6 @@ import timber.log.Timber @ContributesBinding(AppScope::class, binding = binding()) @SingleIn(AppScope::class) -@Inject class DefaultPushService( private val testPush: TestPush, private val userPushStoreFactory: UserPushStoreFactory, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt index 7dbe4e795e..44d3b94651 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPusherSubscriber.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.PushConfig import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.core.log.logger.LoggerTag @@ -30,7 +29,6 @@ internal const val DEFAULT_PUSHER_FILE_TAG = "mobile" private val loggerTag = LoggerTag("DefaultPusherSubscriber", LoggerTag.PushLoggerTag) @ContributesBinding(AppScope::class) -@Inject class DefaultPusherSubscriber( private val buildMeta: BuildMeta, private val pushClientSecret: PushClientSecret, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimization.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimization.kt index 8379289f88..f2500094a2 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimization.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimization.kt @@ -17,7 +17,6 @@ import androidx.core.content.getSystemService import androidx.core.net.toUri import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher import timber.log.Timber @@ -45,7 +44,6 @@ interface BatteryOptimization { } @ContributesBinding(AppScope::class) -@Inject class AndroidBatteryOptimization( @ApplicationContext private val context: Context, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/history/DefaultPushHistoryService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/history/DefaultPushHistoryService.kt index c69a09b31f..49cc79e7ea 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/history/DefaultPushHistoryService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/history/DefaultPushHistoryService.kt @@ -13,7 +13,6 @@ import android.os.PowerManager import androidx.core.content.getSystemService import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -23,7 +22,6 @@ import io.element.android.libraries.push.impl.db.PushHistory import io.element.android.services.toolbox.api.systemclock.SystemClock @ContributesBinding(AppScope::class) -@Inject class DefaultPushHistoryService( private val pushDatabase: PushDatabase, private val systemClock: SystemClock, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt index 11717c081a..15c7662367 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt @@ -11,7 +11,6 @@ import android.service.notification.StatusBarNotification import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId @@ -28,7 +27,6 @@ interface ActiveNotificationsProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultActiveNotificationsProvider( private val notificationManager: NotificationManagerCompat, ) : ActiveNotificationsProvider { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/CallNotificationEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/CallNotificationEventResolver.kt index 689cc8a2ea..06bf437402 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/CallNotificationEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/CallNotificationEventResolver.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.notifications import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.SessionId @@ -47,7 +46,6 @@ interface CallNotificationEventResolver { } @ContributesBinding(AppScope::class) -@Inject class DefaultCallNotificationEventResolver( private val stringProvider: StringProvider, private val appForegroundStateService: AppForegroundStateService, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt index 8f364d75e8..687d8b8e18 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt @@ -12,7 +12,6 @@ import android.net.Uri import androidx.core.content.FileProvider import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -78,7 +77,6 @@ interface NotifiableEventResolver { @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultNotifiableEventResolver( private val stringProvider: StringProvider, private val matrixClientProvider: MatrixClientProvider, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationBitmapLoader.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationBitmapLoader.kt index 545ef59c6d..51491bc271 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationBitmapLoader.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationBitmapLoader.kt @@ -18,7 +18,6 @@ import coil3.toBitmap import coil3.transform.CircleCropTransformation import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.ui.media.AVATAR_THUMBNAIL_SIZE_IN_PIXEL @@ -28,7 +27,6 @@ import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationBitmapLoader( @ApplicationContext private val context: Context, private val sdkIntProvider: BuildVersionSdkIntProvider, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 41b9f66f38..00106be45a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -11,7 +11,6 @@ import androidx.annotation.VisibleForTesting import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.log.logger.LoggerTag @@ -45,7 +44,6 @@ private val loggerTag = LoggerTag("DefaultNotificationDrawerManager", LoggerTag. */ @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationDrawerManager( private val notificationManager: NotificationManagerCompat, private val notificationRenderer: NotificationRenderer, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt index 084ad8d832..40754630b5 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandler.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.notifications import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -17,7 +16,6 @@ import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.notifications.OnMissedCallNotificationHandler @ContributesBinding(AppScope::class) -@Inject class DefaultOnMissedCallNotificationHandler( private val matrixClientProvider: MatrixClientProvider, private val defaultNotificationDrawerManager: DefaultNotificationDrawerManager, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index d5a35b046f..09fc7058dc 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -15,7 +15,6 @@ import androidx.core.text.inSpans import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject 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.user.MatrixUser @@ -54,7 +53,6 @@ interface NotificationDataFactory { } @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationDataFactory( private val notificationCreator: NotificationCreator, private val roomGroupMessageCreator: RoomGroupMessageCreator, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt index 34f141c09f..4348c9bfb5 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt @@ -15,7 +15,6 @@ import androidx.core.app.ActivityCompat import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import timber.log.Timber @@ -27,7 +26,6 @@ interface NotificationDisplayer { } @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationDisplayer( @ApplicationContext private val context: Context, private val notificationManager: NotificationManagerCompat diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt index 928f7bfee1..7c206f2ee3 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.notifications import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.di.annotations.AppCoroutineScope @@ -43,7 +42,6 @@ interface NotificationResolverQueue { @OptIn(ExperimentalCoroutinesApi::class) @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationResolverQueue( private val notifiableEventResolver: NotifiableEventResolver, @AppCoroutineScope diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt index 323c32f64a..f30a7da417 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ReplyMessageExtractor.kt @@ -11,14 +11,12 @@ import android.content.Intent import androidx.core.app.RemoteInput import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject interface ReplyMessageExtractor { fun getReplyMessage(intent: Intent): String? } @ContributesBinding(AppScope::class) -@Inject class AndroidReplyMessageExtractor : ReplyMessageExtractor { override fun getReplyMessage(intent: Intent): String? { return RemoteInput.getResultsFromIntent(intent) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt index 0ab6ff27b2..cd75424225 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt @@ -12,7 +12,6 @@ import android.graphics.Bitmap import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationBitmapLoader @@ -33,7 +32,6 @@ interface RoomGroupMessageCreator { } @ContributesBinding(AppScope::class) -@Inject class DefaultRoomGroupMessageCreator( private val bitmapLoader: NotificationBitmapLoader, private val stringProvider: StringProvider, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt index 5c31f03d5d..f217b303aa 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator @@ -36,7 +35,6 @@ interface SummaryGroupMessageCreator { * https://developer.android.com/training/notify-user/group */ @ContributesBinding(AppScope::class) -@Inject class DefaultSummaryGroupMessageCreator( private val stringProvider: StringProvider, private val notificationCreator: NotificationCreator, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt index f5f0ce5cca..17f9a9e089 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/channels/NotificationChannels.kt @@ -20,7 +20,6 @@ import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.di.annotations.ApplicationContext @@ -62,7 +61,6 @@ private fun supportNotificationChannels() = Build.VERSION.SDK_INT >= Build.VERSI @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationChannels( private val notificationManager: NotificationManagerCompat, private val stringProvider: StringProvider, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt index bda5a593d5..f61487c571 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt @@ -16,7 +16,6 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.lockscreen.api.LockScreenService import io.element.android.libraries.core.coroutine.withPreviousValue @@ -46,7 +45,6 @@ import timber.log.Timber @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationConversationService( @ApplicationContext private val context: Context, private val intentProvider: IntentProvider, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 3f07e12691..ab2dae4fb3 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -19,7 +19,6 @@ import androidx.core.content.res.ResourcesCompat import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.utils.CommonDrawables @@ -86,7 +85,6 @@ interface NotificationCreator { } @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationCreator( @ApplicationContext private val context: Context, private val notificationChannels: NotificationChannels, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt index 0858658b62..df8234de4f 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.push import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint @@ -51,7 +50,6 @@ private val loggerTag = LoggerTag("PushHandler", LoggerTag.PushLoggerTag) @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultPushHandler( private val onNotifiableEventReceived: OnNotifiableEventReceived, private val onRedactedEventReceived: OnRedactedEventReceived, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultSyncOnNotifiableEvent.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultSyncOnNotifiableEvent.kt index a4b55f66e0..4b302882ca 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultSyncOnNotifiableEvent.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultSyncOnNotifiableEvent.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.push import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags @@ -23,7 +22,6 @@ import timber.log.Timber import kotlin.time.Duration.Companion.seconds @ContributesBinding(AppScope::class) -@Inject class DefaultSyncOnNotifiableEvent( private val matrixClientProvider: MatrixClientProvider, private val featureFlagService: FeatureFlagService, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/IncrementPushDataStore.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/IncrementPushDataStore.kt index cf7145e3ef..c8b226c6bc 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/IncrementPushDataStore.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/IncrementPushDataStore.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.push import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.push.impl.store.DefaultPushDataStore interface IncrementPushDataStore { @@ -17,7 +16,6 @@ interface IncrementPushDataStore { } @ContributesBinding(AppScope::class) -@Inject class DefaultIncrementPushDataStore( private val defaultPushDataStore: DefaultPushDataStore ) : IncrementPushDataStore { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/MutableBatteryOptimizationStore.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/MutableBatteryOptimizationStore.kt index 3c5efe70ba..d23cbf1867 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/MutableBatteryOptimizationStore.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/MutableBatteryOptimizationStore.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.push import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.push.impl.store.DefaultPushDataStore interface MutableBatteryOptimizationStore { @@ -19,7 +18,6 @@ interface MutableBatteryOptimizationStore { } @ContributesBinding(AppScope::class) -@Inject class DefaultMutableBatteryOptimizationStore( private val defaultPushDataStore: DefaultPushDataStore, ) : MutableBatteryOptimizationStore { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt index 41e44eada1..45d237a458 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnNotifiableEventReceived.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.push import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.push.impl.notifications.DefaultNotificationDrawerManager import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent @@ -22,7 +21,6 @@ interface OnNotifiableEventReceived { } @ContributesBinding(AppScope::class) -@Inject class DefaultOnNotifiableEventReceived( private val defaultNotificationDrawerManager: DefaultNotificationDrawerManager, @AppCoroutineScope diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt index dda61f1eb0..50c01f56fb 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt @@ -16,7 +16,6 @@ import androidx.core.text.buildSpannedString import androidx.core.text.inSpans import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.push.impl.notifications.ActiveNotificationsProvider @@ -34,7 +33,6 @@ interface OnRedactedEventReceived { } @ContributesBinding(AppScope::class) -@Inject class DefaultOnRedactedEventReceived( private val activeNotificationsProvider: ActiveNotificationsProvider, private val notificationDisplayer: NotificationDisplayer, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayApiFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayApiFactory.kt index e57d98d796..b6b9e5942a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayApiFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayApiFactory.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.pushgateway import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.network.RetrofitFactory interface PushGatewayApiFactory { @@ -17,7 +16,6 @@ interface PushGatewayApiFactory { } @ContributesBinding(AppScope::class) -@Inject class DefaultPushGatewayApiFactory( private val retrofitFactory: RetrofitFactory, ) : PushGatewayApiFactory { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt index 907e307184..e739df954e 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/pushgateway/PushGatewayNotifyRequest.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.push.impl.pushgateway import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.push.api.gateway.PushGatewayFailure @@ -26,7 +25,6 @@ interface PushGatewayNotifyRequest { } @ContributesBinding(AppScope::class) -@Inject class DefaultPushGatewayNotifyRequest( private val pushGatewayApiFactory: PushGatewayApiFactory, ) : PushGatewayNotifyRequest { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/store/DefaultPushDataStore.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/store/DefaultPushDataStore.kt index e84ffaf7f0..d7c3f9ee5d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/store/DefaultPushDataStore.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/store/DefaultPushDataStore.kt @@ -13,7 +13,6 @@ import app.cash.sqldelight.coroutines.asFlow import app.cash.sqldelight.coroutines.mapToList import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.dateformatter.api.DateFormatter import io.element.android.libraries.dateformatter.api.DateFormatterMode @@ -30,7 +29,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @ContributesBinding(AppScope::class) -@Inject class DefaultPushDataStore( private val pushDatabase: PushDatabase, private val dateFormatter: DateFormatter, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt index c49bc48b6f..72b76ee33d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.test import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.appconfig.PushConfig import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -21,7 +20,6 @@ interface TestPush { } @ContributesBinding(AppScope::class) -@Inject class DefaultTestPush( private val pushGatewayNotifyRequest: PushGatewayNotifyRequest, ) : TestPush { diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseGatewayProvider.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseGatewayProvider.kt index a872808e16..0cb6803366 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseGatewayProvider.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseGatewayProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.firebase import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.enterprise.api.EnterpriseService interface FirebaseGatewayProvider { @@ -17,7 +16,6 @@ interface FirebaseGatewayProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseGatewayProvider( private val enterpriseService: EnterpriseService, ) : FirebaseGatewayProvider { diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt index 2853d52685..6f3edc7efc 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseNewTokenHandler.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.firebase import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.MatrixClientProvider @@ -30,7 +29,6 @@ interface FirebaseNewTokenHandler { } @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseNewTokenHandler( private val pusherSubscriber: PusherSubscriber, private val sessionStore: SessionStore, diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt index 91fec3bb57..8fff6e8a3b 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseStore.kt @@ -11,7 +11,6 @@ import android.content.SharedPreferences import androidx.core.content.edit import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.onCompletion @@ -27,7 +26,6 @@ interface FirebaseStore { } @ContributesBinding(AppScope::class) -@Inject class SharedPreferencesFirebaseStore( private val sharedPreferences: SharedPreferences, ) : FirebaseStore { diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenDeleter.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenDeleter.kt index 4a8be152ad..975b8f0b3b 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenDeleter.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenDeleter.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.firebase import com.google.firebase.messaging.FirebaseMessaging import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import timber.log.Timber import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException @@ -24,7 +23,6 @@ interface FirebaseTokenDeleter { } @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseTokenDeleter( private val isPlayServiceAvailable: IsPlayServiceAvailable, ) : FirebaseTokenDeleter { diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenGetter.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenGetter.kt index 4add5e4f8b..825130e629 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenGetter.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenGetter.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.firebase import com.google.firebase.messaging.FirebaseMessaging import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import timber.log.Timber import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException @@ -25,7 +24,6 @@ interface FirebaseTokenGetter { } @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseTokenGetter( private val isPlayServiceAvailable: IsPlayServiceAvailable, ) : FirebaseTokenGetter { diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenRotator.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenRotator.kt index c54221aa38..01085b323f 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenRotator.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTokenRotator.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.firebase import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions interface FirebaseTokenRotator { @@ -20,7 +19,6 @@ interface FirebaseTokenRotator { * This class delete the Firebase token and generate a new one. */ @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseTokenRotator( private val firebaseTokenDeleter: FirebaseTokenDeleter, private val firebaseTokenGetter: FirebaseTokenGetter, diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTroubleshooter.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTroubleshooter.kt index 132996ee34..f23f765270 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTroubleshooter.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebaseTroubleshooter.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.firebase import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions interface FirebaseTroubleshooter { @@ -20,7 +19,6 @@ interface FirebaseTroubleshooter { * This class force retrieving and storage of the Firebase token. */ @ContributesBinding(AppScope::class) -@Inject class DefaultFirebaseTroubleshooter( private val newTokenHandler: FirebaseNewTokenHandler, private val firebaseTokenGetter: FirebaseTokenGetter, diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/IsPlayServiceAvailable.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/IsPlayServiceAvailable.kt index 8e25407a91..cc63923ed9 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/IsPlayServiceAvailable.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/IsPlayServiceAvailable.kt @@ -12,7 +12,6 @@ import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.GoogleApiAvailabilityLight import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import timber.log.Timber @@ -27,7 +26,6 @@ fun IsPlayServiceAvailable.checkAvailableOrThrow() { } @ContributesBinding(AppScope::class) -@Inject class DefaultIsPlayServiceAvailable( @ApplicationContext private val context: Context, ) : IsPlayServiceAvailable { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultPushGatewayHttpUrlProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultPushGatewayHttpUrlProvider.kt index d330b2b7fe..be97bab5f6 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultPushGatewayHttpUrlProvider.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultPushGatewayHttpUrlProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.features.enterprise.api.EnterpriseService interface DefaultPushGatewayHttpUrlProvider { @@ -17,7 +16,6 @@ interface DefaultPushGatewayHttpUrlProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultDefaultPushGatewayHttpUrlProvider( private val enterpriseService: EnterpriseService, ) : DefaultPushGatewayHttpUrlProvider { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt index 57813f8fde..e3edd6182a 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/GuardServiceStarter.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject interface GuardServiceStarter { fun start() {} @@ -17,5 +16,4 @@ interface GuardServiceStarter { } @ContributesBinding(AppScope::class) -@Inject class NoopGuardServiceStarter : GuardServiceStarter diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt index 2f300f891d..4260554655 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/RegisterUnifiedPushUseCase.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.unifiedpush.registration.EndpointRegistrationHandler @@ -25,7 +24,6 @@ interface RegisterUnifiedPushUseCase { } @ContributesBinding(AppScope::class) -@Inject class DefaultRegisterUnifiedPushUseCase( @ApplicationContext private val context: Context, private val endpointRegistrationHandler: EndpointRegistrationHandler, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushApiFactory.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushApiFactory.kt index 6427b6bd00..8d18972e86 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushApiFactory.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushApiFactory.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.network.RetrofitFactory import io.element.android.libraries.pushproviders.unifiedpush.network.UnifiedPushApi @@ -18,7 +17,6 @@ interface UnifiedPushApiFactory { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushApiFactory( private val retrofitFactory: RetrofitFactory, ) : UnifiedPushApiFactory { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt index ba7301e010..e66975b40c 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret import io.element.android.services.appnavstate.api.AppNavigationStateService @@ -20,7 +19,6 @@ interface UnifiedPushCurrentUserPushConfigProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushCurrentUserPushConfigProvider( private val pushClientSecret: PushClientSecret, private val unifiedPushStore: UnifiedPushStore, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushDistributorProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushDistributorProvider.kt index aad8d9cd0b..e821575cf2 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushDistributorProvider.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushDistributorProvider.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.getApplicationLabel import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.pushproviders.api.Distributor @@ -21,7 +20,6 @@ interface UnifiedPushDistributorProvider { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushDistributorProvider( @ApplicationContext private val context: Context, ) : UnifiedPushDistributorProvider { diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt index 1aa6b5d436..4c970907a7 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.log.logger.LoggerTag @@ -33,7 +32,6 @@ interface UnifiedPushGatewayResolver { private val loggerTag = LoggerTag("DefaultUnifiedPushGatewayResolver") @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushGatewayResolver( private val unifiedPushApiFactory: UnifiedPushApiFactory, private val coroutineDispatchers: CoroutineDispatchers, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayUrlResolver.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayUrlResolver.kt index 48f8153787..9faeefe49c 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayUrlResolver.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayUrlResolver.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject interface UnifiedPushGatewayUrlResolver { fun resolve( @@ -19,7 +18,6 @@ interface UnifiedPushGatewayUrlResolver { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushGatewayUrlResolver( private val unifiedPushStore: UnifiedPushStore, private val defaultPushGatewayHttpUrlProvider: DefaultPushGatewayHttpUrlProvider, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt index a899c0787f..953bb30bae 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushNewGatewayHandler.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.MatrixClientProvider @@ -28,7 +27,6 @@ interface UnifiedPushNewGatewayHandler { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnifiedPushNewGatewayHandler( private val pusherSubscriber: PusherSubscriber, private val userPushStoreFactory: UserPushStoreFactory, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt index 96c92b09d8..eac9204c7e 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushStore.kt @@ -12,7 +12,6 @@ import android.content.SharedPreferences import androidx.core.content.edit import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.UserId @@ -26,7 +25,6 @@ interface UnifiedPushStore { } @ContributesBinding(AppScope::class) -@Inject class SharedPreferencesUnifiedPushStore( @ApplicationContext val context: Context, private val sharedPreferences: SharedPreferences, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt index 429c23d747..5098f5defa 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnregisterUnifiedPushUseCase.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.pushproviders.api.PusherSubscriber @@ -30,7 +29,6 @@ interface UnregisterUnifiedPushUseCase { } @ContributesBinding(AppScope::class) -@Inject class DefaultUnregisterUnifiedPushUseCase( @ApplicationContext private val context: Context, private val unifiedPushStore: UnifiedPushStore, diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/OpenDistributorWebPageAction.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/OpenDistributorWebPageAction.kt index 5f4eb4538c..40b72660ad 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/OpenDistributorWebPageAction.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/OpenDistributorWebPageAction.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.system.openUrlInExternalApp import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushConfig @@ -20,7 +19,6 @@ interface OpenDistributorWebPageAction { } @ContributesBinding(AppScope::class) -@Inject class DefaultOpenDistributorWebPageAction( @ApplicationContext private val context: Context, ) : OpenDistributorWebPageAction { diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt index 41dbe5c212..2bc6eedd56 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/DefaultUserPushStoreFactory.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.pushstore.impl import android.content.Context import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.SessionId @@ -21,7 +20,6 @@ import java.util.concurrent.ConcurrentHashMap @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultUserPushStoreFactory( @ApplicationContext private val context: Context, private val preferenceDataStoreFactory: PreferenceDataStoreFactory, diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt index 98ab23c9ea..b31741f05e 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DataStorePushClientSecretStore.kt @@ -11,14 +11,12 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecretStore import kotlinx.coroutines.flow.first @ContributesBinding(AppScope::class) -@Inject class DataStorePushClientSecretStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : PushClientSecretStore { diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt index 7125a7c122..4103e16345 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecret.kt @@ -9,14 +9,12 @@ package io.element.android.libraries.pushstore.impl.clientsecret import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecretFactory import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecretStore @ContributesBinding(AppScope::class) -@Inject class DefaultPushClientSecret( private val pushClientSecretFactory: PushClientSecretFactory, private val pushClientSecretStore: PushClientSecretStore, diff --git a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt index be991ca0c5..2e50721b97 100644 --- a/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt +++ b/libraries/pushstore/impl/src/main/kotlin/io/element/android/libraries/pushstore/impl/clientsecret/DefaultPushClientSecretFactory.kt @@ -9,12 +9,10 @@ package io.element.android.libraries.pushstore.impl.clientsecret import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecretFactory import java.util.UUID @ContributesBinding(AppScope::class) -@Inject class DefaultPushClientSecretFactory : PushClientSecretFactory { override fun create(): String { return UUID.randomUUID().toString() diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt index 0c6ba57b9f..db17e3bd31 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt @@ -11,13 +11,11 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint @ContributesBinding(SessionScope::class) -@Inject class DefaultRoomSelectEntryPoint : RoomSelectEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt index 80995e27c6..0560d3076a 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt @@ -12,7 +12,6 @@ import app.cash.sqldelight.coroutines.mapToList import app.cash.sqldelight.coroutines.mapToOneOrNull import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.sessionstorage.api.LoggedInState @@ -27,7 +26,6 @@ import timber.log.Timber @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DatabaseSessionStore( private val database: SessionDatabase, private val dispatchers: CoroutineDispatchers, diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt index 78d596e5a6..71a63db82d 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.sessionstorage.impl.observer import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.annotations.AppCoroutineScope @@ -27,7 +26,6 @@ import java.util.concurrent.CopyOnWriteArraySet @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class DefaultSessionObserver( private val sessionStore: SessionStore, @AppCoroutineScope diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanFormatter.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanFormatter.kt index 4c74a6edd5..840518b696 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanFormatter.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanFormatter.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.textcomposer.mentions import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.libraries.matrix.api.core.UserId @@ -28,7 +27,6 @@ interface MentionSpanFormatter { * based on its MentionType and context. */ @ContributesBinding(RoomScope::class) -@Inject class DefaultMentionSpanFormatter( private val roomMemberProfilesCache: RoomMemberProfilesCache, private val roomNamesCache: RoomNamesCache, diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanUpdater.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanUpdater.kt index 9a9714b351..ae8d049338 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanUpdater.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/mentions/MentionSpanUpdater.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.ui.messages.RoomMemberProfilesCache @@ -27,7 +26,6 @@ interface MentionSpanUpdater { } @ContributesBinding(RoomScope::class) -@Inject class DefaultMentionSpanUpdater( private val formatter: MentionSpanFormatter, private val theme: MentionSpanTheme, diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt index b9d9c91814..e6af517069 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.createNode import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEntryPoint @ContributesBinding(AppScope::class) -@Inject class DefaultNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NotificationTroubleShootEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt index 9a33848cae..0347d911e1 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt @@ -12,12 +12,10 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.createNode import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint @ContributesBinding(AppScope::class) -@Inject class DefaultPushHistoryEntryPoint : PushHistoryEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PushHistoryEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSource.kt b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSource.kt index 2d968cfb20..7a88cc2611 100644 --- a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSource.kt +++ b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserListDataSource.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.usersearch.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.UserId @@ -16,7 +15,6 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.usersearch.api.UserListDataSource @ContributesBinding(SessionScope::class) -@Inject class MatrixUserListDataSource( private val client: MatrixClient ) : UserListDataSource { diff --git a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt index c486c898e1..6a935835c8 100644 --- a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt +++ b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.usersearch.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.MatrixPatterns @@ -23,7 +22,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow @ContributesBinding(SessionScope::class) -@Inject class MatrixUserRepository( private val client: MatrixClient, private val dataSource: UserListDataSource diff --git a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePresenterFactory.kt b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePresenterFactory.kt index f109f3d49a..61e08f994c 100644 --- a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePresenterFactory.kt +++ b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePresenterFactory.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.voiceplayer.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.annotations.SessionCoroutineScope @@ -21,7 +20,6 @@ import kotlinx.coroutines.CoroutineScope import kotlin.time.Duration @ContributesBinding(RoomScope::class) -@Inject class DefaultVoiceMessagePresenterFactory( private val analyticsService: AnalyticsService, @SessionCoroutineScope diff --git a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePlayer.kt b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePlayer.kt index 64a479105d..5fabc301a2 100644 --- a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePlayer.kt +++ b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePlayer.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.voiceplayer.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.mapCatchingExceptions import io.element.android.libraries.core.mimetype.MimeTypes import io.element.android.libraries.di.RoomScope @@ -117,8 +116,7 @@ class DefaultVoiceMessagePlayer( filename: String?, ) : VoiceMessagePlayer { @ContributesBinding(RoomScope::class) // Scoped types can't use @Inject. - @Inject -class Factory( + class Factory( private val mediaPlayer: MediaPlayer, private val voiceMessageMediaRepoFactory: VoiceMessageMediaRepo.Factory, ) : VoiceMessagePlayer.Factory { diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt index b4d48e1d14..a1f761d975 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/DefaultVoiceRecorder.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.voicerecorder.impl import android.Manifest import androidx.annotation.RequiresPermission import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.appconfig.VoiceMessageConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -43,7 +42,6 @@ import kotlin.time.TimeSource @SingleIn(RoomScope::class) @ContributesBinding(RoomScope::class) -@Inject class DefaultVoiceRecorder( private val dispatchers: CoroutineDispatchers, private val timeSource: TimeSource, diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt index 6001e74615..82ee128cbb 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DBovAudioLevelCalculator.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.voicerecorder.impl.audio import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.RoomScope import kotlin.math.log10 import kotlin.math.sqrt @@ -20,7 +19,6 @@ import kotlin.math.sqrt * See: https://en.wikipedia.org/wiki/DBFS */ @ContributesBinding(RoomScope::class) -@Inject class DBovAudioLevelCalculator : AudioLevelCalculator { override fun calculateAudioLevel(buffer: ShortArray): Float { return buffer.rms().dBov().normalize().coerceIn(0f, 1f) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt index ef02a45160..ccacf04140 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/audio/DefaultEncoder.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.voicerecorder.impl.audio import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Provider import io.element.android.libraries.di.RoomScope import io.element.android.opusencoder.OggOpusEncoder @@ -19,7 +18,6 @@ import java.io.File * Safe wrapper for OggOpusEncoder. */ @ContributesBinding(RoomScope::class) -@Inject class DefaultEncoder( private val encoderProvider: Provider, config: AudioConfig, diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt index 768233cfe8..8204501bcd 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/file/DefaultVoiceFileManager.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.voicerecorder.impl.file import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.hash.md5 import io.element.android.libraries.di.CacheDirectory import io.element.android.libraries.di.RoomScope @@ -18,7 +17,6 @@ import java.io.File import java.util.UUID @ContributesBinding(RoomScope::class) -@Inject class DefaultVoiceFileManager( @CacheDirectory private val cacheDir: File, private val config: VoiceFileConfig, diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt index 6116435970..570b95679f 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.wellknown.impl import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.core.extensions.mapCatchingExceptions import io.element.android.libraries.di.SessionScope @@ -19,7 +18,6 @@ import io.element.android.libraries.wellknown.api.WellKnown import timber.log.Timber @ContributesBinding(SessionScope::class) -@Inject class DefaultSessionWellknownRetriever( private val matrixClient: MatrixClient, private val json: JsonProvider, diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt index aa0e28e85a..65daf21f18 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.wellknown.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.network.RetrofitFactory import io.element.android.libraries.wellknown.api.ElementWellKnown @@ -18,7 +17,6 @@ import io.element.android.libraries.wellknown.api.WellknownRetriever import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class DefaultWellknownRetriever( private val retrofitFactory: RetrofitFactory, ) : WellknownRetriever { diff --git a/libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/MetroWorkerFactory.kt b/libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/MetroWorkerFactory.kt index 267b39891b..87d0e3720c 100644 --- a/libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/MetroWorkerFactory.kt +++ b/libraries/workmanager/api/src/main/kotlin/io/element/android/libraries/workmanager/api/di/MetroWorkerFactory.kt @@ -13,11 +13,9 @@ import androidx.work.WorkerFactory import androidx.work.WorkerParameters import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import kotlin.reflect.KClass @ContributesBinding(AppScope::class) -@Inject class MetroWorkerFactory( val workerProviders: Map, WorkerInstanceFactory<*>> ) : WorkerFactory() { diff --git a/libraries/workmanager/impl/src/main/kotlin/io/element/android/libraries/workmanager/impl/DefaultWorkManagerScheduler.kt b/libraries/workmanager/impl/src/main/kotlin/io/element/android/libraries/workmanager/impl/DefaultWorkManagerScheduler.kt index 8d3fc318bc..61c3cfa919 100644 --- a/libraries/workmanager/impl/src/main/kotlin/io/element/android/libraries/workmanager/impl/DefaultWorkManagerScheduler.kt +++ b/libraries/workmanager/impl/src/main/kotlin/io/element/android/libraries/workmanager/impl/DefaultWorkManagerScheduler.kt @@ -11,7 +11,6 @@ import android.content.Context import androidx.work.WorkManager import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.workmanager.api.WorkManagerRequest @@ -21,7 +20,6 @@ import io.element.android.libraries.workmanager.api.workManagerTag import timber.log.Timber @ContributesBinding(AppScope::class) -@Inject class DefaultWorkManagerScheduler( @ApplicationContext private val context: Context, ) : WorkManagerScheduler { diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt index 04f0f6867a..7d06f762e5 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt @@ -9,7 +9,6 @@ package io.element.android.services.analytics.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import dev.zacsweers.metro.binding import im.vector.app.features.analytics.itf.VectorAnalyticsEvent @@ -33,7 +32,6 @@ import java.util.concurrent.atomic.AtomicBoolean @SingleIn(AppScope::class) @ContributesBinding(AppScope::class, binding = binding()) -@Inject class DefaultAnalyticsService( private val analyticsProviders: Set<@JvmSuppressWildcards AnalyticsProvider>, private val analyticsStore: AnalyticsStore, diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt index 78ff13e554..46870ccf74 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.Lifecycle import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.services.analytics.api.AnalyticsService @@ -23,7 +22,6 @@ import io.element.android.services.analytics.api.ScreenTracker import io.element.android.services.toolbox.api.systemclock.SystemClock @ContributesBinding(AppScope::class) -@Inject class DefaultScreenTracker( private val analyticsService: AnalyticsService, private val systemClock: SystemClock diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/store/AnalyticsStore.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/store/AnalyticsStore.kt index b6e1773be6..41fac16174 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/store/AnalyticsStore.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/store/AnalyticsStore.kt @@ -12,7 +12,6 @@ import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory import kotlinx.coroutines.flow.Flow @@ -36,7 +35,6 @@ interface AnalyticsStore { } @ContributesBinding(AppScope::class) -@Inject class DefaultAnalyticsStore( preferenceDataStoreFactory: PreferenceDataStoreFactory, ) : AnalyticsStore { diff --git a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt index db03ca5553..86d90ea0bd 100644 --- a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt +++ b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsService.kt @@ -9,7 +9,6 @@ package io.element.android.services.analytics.noop import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import im.vector.app.features.analytics.itf.VectorAnalyticsEvent import im.vector.app.features.analytics.itf.VectorAnalyticsScreen @@ -22,7 +21,6 @@ import kotlinx.coroutines.flow.flowOf @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) -@Inject class NoopAnalyticsService : AnalyticsService { override fun getAvailableAnalyticsProviders(): Set = emptySet() override val userConsentFlow: Flow = flowOf(false) diff --git a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt index fb193e115d..3ead2bcd1b 100644 --- a/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt +++ b/services/analytics/noop/src/main/kotlin/io/element/android/services/analytics/noop/NoopScreenTracker.kt @@ -10,12 +10,10 @@ package io.element.android.services.analytics.noop import androidx.compose.runtime.Composable import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.services.analytics.api.ScreenTracker @ContributesBinding(AppScope::class) -@Inject class NoopScreenTracker : ScreenTracker { @Composable override fun TrackScreen(screen: MobileScreen.ScreenName) = Unit diff --git a/services/apperror/impl/src/main/kotlin/io/element/android/services/apperror/impl/DefaultAppErrorStateService.kt b/services/apperror/impl/src/main/kotlin/io/element/android/services/apperror/impl/DefaultAppErrorStateService.kt index 7d4dc8d64e..e2f874ea84 100644 --- a/services/apperror/impl/src/main/kotlin/io/element/android/services/apperror/impl/DefaultAppErrorStateService.kt +++ b/services/apperror/impl/src/main/kotlin/io/element/android/services/apperror/impl/DefaultAppErrorStateService.kt @@ -9,7 +9,6 @@ package io.element.android.services.apperror.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.services.apperror.api.AppErrorState import io.element.android.services.apperror.api.AppErrorStateService @@ -19,7 +18,6 @@ import kotlinx.coroutines.flow.StateFlow @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultAppErrorStateService( private val stringProvider: StringProvider, ) : AppErrorStateService { diff --git a/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppNavigationStateService.kt b/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppNavigationStateService.kt index 013ce5459f..93c34cdb42 100644 --- a/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppNavigationStateService.kt +++ b/services/appnavstate/impl/src/main/kotlin/io/element/android/services/appnavstate/impl/DefaultAppNavigationStateService.kt @@ -9,7 +9,6 @@ package io.element.android.services.appnavstate.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.di.annotations.AppCoroutineScope @@ -35,7 +34,6 @@ private val loggerTag = LoggerTag("Navigation") */ @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) -@Inject class DefaultAppNavigationStateService( private val appForegroundStateService: AppForegroundStateService, @AppCoroutineScope diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/intent/DefaultExternalIntentLauncher.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/intent/DefaultExternalIntentLauncher.kt index 431bb49e57..c43c5cf172 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/intent/DefaultExternalIntentLauncher.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/intent/DefaultExternalIntentLauncher.kt @@ -11,12 +11,10 @@ import android.content.Context import android.content.Intent import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher @ContributesBinding(AppScope::class) -@Inject class DefaultExternalIntentLauncher( @ApplicationContext private val context: Context, ) : ExternalIntentLauncher { diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt index 75904f4dea..4b11a971e4 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/sdk/DefaultBuildVersionSdkIntProvider.kt @@ -10,11 +10,9 @@ package io.element.android.services.toolbox.impl.sdk import android.os.Build import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider @ContributesBinding(AppScope::class) -@Inject class DefaultBuildVersionSdkIntProvider : BuildVersionSdkIntProvider { override fun get() = Build.VERSION.SDK_INT diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/strings/AndroidStringProvider.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/strings/AndroidStringProvider.kt index 1e07f77f20..9b84ff6c24 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/strings/AndroidStringProvider.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/strings/AndroidStringProvider.kt @@ -12,11 +12,9 @@ import androidx.annotation.PluralsRes import androidx.annotation.StringRes import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.services.toolbox.api.strings.StringProvider @ContributesBinding(AppScope::class) -@Inject class AndroidStringProvider(private val resources: Resources) : StringProvider { override fun getString(@StringRes resId: Int): String { return resources.getString(resId) diff --git a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt index 74c5094868..c7d316e133 100644 --- a/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt +++ b/services/toolbox/impl/src/main/kotlin/io/element/android/services/toolbox/impl/systemclock/DefaultSystemClock.kt @@ -9,11 +9,9 @@ package io.element.android.services.toolbox.impl.systemclock import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import io.element.android.services.toolbox.api.systemclock.SystemClock @ContributesBinding(AppScope::class) -@Inject class DefaultSystemClock : SystemClock { /** * Provides a UTC epoch in milliseconds diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt index e3089e8d5e..858b2edf1d 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt @@ -10,7 +10,6 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Inject @ContributesBinding(AppScope::class) -@Inject class Default${FEATURE_NAME}EntryPoint() : ${FEATURE_NAME}EntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ${FEATURE_NAME}EntryPoint.NodeBuilder { From d99423f5b19a51f973b36d0c82ba6a5b1d29a0ce Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 Oct 2025 19:12:48 +0200 Subject: [PATCH 172/898] Cleanup template. --- .../Template Module Feature Entry Point Flow Impl.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt index 858b2edf1d..6eba997336 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt @@ -7,7 +7,6 @@ import dev.zacsweers.metro.ContributesBinding import io.element.android.features.${MODULE_NAME}.api.${FEATURE_NAME}EntryPoint import io.element.android.libraries.architecture.createNode import dev.zacsweers.metro.AppScope -import dev.zacsweers.metro.Inject @ContributesBinding(AppScope::class) class Default${FEATURE_NAME}EntryPoint() : ${FEATURE_NAME}EntryPoint { From 375c5c7c7d1e76bf814e5d41a2d25632f4f7153c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 08:56:32 +0200 Subject: [PATCH 173/898] Ignore the new test for now. --- .../kotlin/io/element/android/tests/konsist/KonsistDiTest.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt index 1f3bfce178..5f46722a81 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistDiTest.kt @@ -15,6 +15,7 @@ import com.lemonappdev.konsist.api.verify.assertTrue import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject +import org.junit.Ignore import org.junit.Test class KonsistDiTest { @@ -35,6 +36,7 @@ class KonsistDiTest { } } + @Ignore("Disabled to give time to branch and private module to remove the annotation") @Test fun `class annotated with @ContributesBinding does not need to be annotated with @Inject anymore`() { Konsist From 9983871db7cea4035aa18e9113e57426aa756c34 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 09:32:52 +0200 Subject: [PATCH 174/898] Introduce WorkerDataConverter to avoid hard coded Json key and ensure serializing/deserializing is performed at the same place. --- .../NotificationResolverQueue.kt | 6 +- .../workmanager/FetchNotificationsWorker.kt | 16 +---- .../SyncNotificationWorkManagerRequest.kt | 38 ++-------- .../impl/workmanager/WorkerDataConverter.kt | 72 +++++++++++++++++++ .../push/impl/push/DefaultPushHandlerTest.kt | 3 +- .../FetchNotificationWorkerTest.kt | 2 +- .../SyncNotificationWorkManagerRequestTest.kt | 2 +- .../workmanager/WorkerDataConverterTest.kt | 53 ++++++++++++++ 8 files changed, 140 insertions(+), 52 deletions(-) create mode 100644 libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverter.kt create mode 100644 libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverterTest.kt diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt index 928f7bfee1..58ff8a5064 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt @@ -11,13 +11,13 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn -import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.push.api.push.NotificationEventRequest import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.libraries.push.impl.workmanager.SyncNotificationWorkManagerRequest +import io.element.android.libraries.push.impl.workmanager.WorkerDataConverter import io.element.android.libraries.workmanager.api.WorkManagerScheduler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -50,7 +50,7 @@ class DefaultNotificationResolverQueue( private val appCoroutineScope: CoroutineScope, private val workManagerScheduler: WorkManagerScheduler, private val featureFlagService: FeatureFlagService, - private val json: JsonProvider, + private val workerDataConverter: WorkerDataConverter, ) : NotificationResolverQueue { companion object { private const val BATCH_WINDOW_MS = 250L @@ -101,7 +101,7 @@ class DefaultNotificationResolverQueue( SyncNotificationWorkManagerRequest( sessionId = sessionId, notificationEventRequests = requests, - json = json, + workerDataConverter = workerDataConverter, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt index 4839bc193f..fadd1a377c 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt @@ -18,7 +18,6 @@ import dev.zacsweers.metro.ContributesIntoMap import dev.zacsweers.metro.binding import io.element.android.features.networkmonitor.api.NetworkMonitor import io.element.android.features.networkmonitor.api.NetworkStatus -import io.element.android.libraries.androidutils.json.JsonProvider import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.di.annotations.ApplicationContext @@ -47,20 +46,11 @@ class FetchNotificationsWorker( private val workManagerScheduler: WorkManagerScheduler, private val syncOnNotifiableEvent: SyncOnNotifiableEvent, private val coroutineDispatchers: CoroutineDispatchers, - private val json: JsonProvider, + private val workerDataConverter: WorkerDataConverter, ) : CoroutineWorker(context, workerParams) { override suspend fun doWork(): Result = withContext(coroutineDispatchers.io) { Timber.d("FetchNotificationsWorker started") - val rawRequestsJson = inputData.getString("requests") ?: return@withContext Result.failure() - val requests = runCatchingExceptions { - json().decodeFromString>(rawRequestsJson).map { it.toRequest() } - }.getOrElse { - Timber.e(it, "Failed to deserialize notification requests") - return@withContext Result.failure() - } - - Timber.d("Deserialized ${requests.size} requests") - + val requests = workerDataConverter.deserialize(inputData) ?: return@withContext Result.failure() // Wait for network to be available, but not more than 10 seconds val hasNetwork = withTimeoutOrNull(10.seconds) { networkMonitor.connectivity.first { it == NetworkStatus.Connected } @@ -97,7 +87,7 @@ class FetchNotificationsWorker( SyncNotificationWorkManagerRequest( sessionId = failedSessionId, notificationEventRequests = requestsToRetry, - json = json, + workerDataConverter = workerDataConverter, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt index db08b0041d..b0aabe1cc7 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt @@ -10,11 +10,6 @@ package io.element.android.libraries.push.impl.workmanager import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy import androidx.work.WorkRequest -import androidx.work.workDataOf -import io.element.android.libraries.androidutils.json.JsonProvider -import io.element.android.libraries.core.extensions.runCatchingExceptions -import io.element.android.libraries.matrix.api.core.EventId -import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.push.NotificationEventRequest import io.element.android.libraries.workmanager.api.WorkManagerRequest @@ -28,24 +23,19 @@ import java.security.InvalidParameterException class SyncNotificationWorkManagerRequest( private val sessionId: SessionId, private val notificationEventRequests: List, - private val json: JsonProvider, + private val workerDataConverter: WorkerDataConverter, ) : WorkManagerRequest { override fun build(): Result { if (notificationEventRequests.isEmpty()) { return Result.failure(InvalidParameterException("notificationEventRequests cannot be empty")) } - - val json = runCatchingExceptions { json().encodeToString(notificationEventRequests.map { it.toData() }) } - .getOrElse { - Timber.e(it, "Failed to serialize notification requests") - return Result.failure(it) - } - + val data = workerDataConverter.serialize(notificationEventRequests).getOrElse { + return Result.failure(it) + } Timber.d("Scheduling ${notificationEventRequests.size} notification requests with WorkManager for $sessionId") - return Result.success( OneTimeWorkRequestBuilder() - .setInputData(workDataOf("requests" to json)) + .setInputData(data) .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) .setTraceTag(workManagerTag(sessionId, WorkManagerRequestType.NOTIFICATION_SYNC)) // TODO investigate using this instead of the resolver queue @@ -64,23 +54,5 @@ class SyncNotificationWorkManagerRequest( val eventId: String, @SerialName("provider_info") val providerInfo: String, - ) { - fun toRequest(): NotificationEventRequest { - return NotificationEventRequest( - sessionId = SessionId(sessionId), - roomId = RoomId(roomId), - eventId = EventId(eventId), - providerInfo = providerInfo, - ) - } - } -} - -private fun NotificationEventRequest.toData(): SyncNotificationWorkManagerRequest.Data { - return SyncNotificationWorkManagerRequest.Data( - sessionId = sessionId.value, - roomId = roomId.value, - eventId = eventId.value, - providerInfo = providerInfo, ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverter.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverter.kt new file mode 100644 index 0000000000..ce961e1dc2 --- /dev/null +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverter.kt @@ -0,0 +1,72 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.push.impl.workmanager + +import androidx.work.Data +import androidx.work.workDataOf +import dev.zacsweers.metro.Inject +import io.element.android.libraries.androidutils.json.JsonProvider +import io.element.android.libraries.core.extensions.runCatchingExceptions +import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.push.api.push.NotificationEventRequest +import timber.log.Timber + +@Inject +class WorkerDataConverter( + private val json: JsonProvider, +) { + fun serialize(notificationEventRequests: List): Result { + return runCatchingExceptions { json().encodeToString(notificationEventRequests.map { it.toData() }) } + .onFailure { + Timber.e(it, "Failed to serialize notification requests") + } + .map { str -> + workDataOf(REQUESTS_KEY to str) + } + } + + fun deserialize(data: Data): List? { + val rawRequestsJson = data.getString(REQUESTS_KEY) ?: return null + return runCatchingExceptions { + json().decodeFromString>(rawRequestsJson).map { it.toRequest() } + }.fold( + onSuccess = { + Timber.d("Deserialized ${it.size} requests") + it + }, + onFailure = { + Timber.e(it, "Failed to deserialize notification requests") + null + } + ) + } + + companion object { + private const val REQUESTS_KEY = "requests" + } +} + +private fun NotificationEventRequest.toData(): SyncNotificationWorkManagerRequest.Data { + return SyncNotificationWorkManagerRequest.Data( + sessionId = sessionId.value, + roomId = roomId.value, + eventId = eventId.value, + providerInfo = providerInfo, + ) +} + +private fun SyncNotificationWorkManagerRequest.Data.toRequest(): NotificationEventRequest { + return NotificationEventRequest( + sessionId = SessionId(sessionId), + roomId = RoomId(roomId), + eventId = EventId(eventId), + providerInfo = providerInfo, + ) +} diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt index 4bfb944202..870b9e1e1a 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt @@ -46,6 +46,7 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.libraries.push.impl.test.DefaultTestPush import io.element.android.libraries.push.impl.troubleshoot.DiagnosticPushHandler +import io.element.android.libraries.push.impl.workmanager.WorkerDataConverter import io.element.android.libraries.pushproviders.api.PushData import io.element.android.libraries.pushstore.api.UserPushStore import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret @@ -715,7 +716,7 @@ class DefaultPushHandlerTest { appCoroutineScope = backgroundScope, workManagerScheduler = workManagerScheduler, featureFlagService = featureFlagService, - json = DefaultJsonProvider(), + workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), ), appCoroutineScope = backgroundScope, fallbackNotificationFactory = FallbackNotificationFactory( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt index 4a98ed970a..74241fecd8 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt @@ -175,7 +175,7 @@ class FetchNotificationWorkerTest { workManagerScheduler = workManagerScheduler, syncOnNotifiableEvent = syncOnNotifiableEvent, coroutineDispatchers = testCoroutineDispatchers(), - json = DefaultJsonProvider(), + workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), ) private fun TestScope.createWorkerParams( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt index 91937a2a67..fcefd8ab8b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt @@ -58,5 +58,5 @@ private fun createSyncNotificationWorkManagerRequest( ) = SyncNotificationWorkManagerRequest( sessionId = sessionId, notificationEventRequests = notificationEventRequests, - json = DefaultJsonProvider(), + workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), ) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverterTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverterTest.kt new file mode 100644 index 0000000000..a4a53208b3 --- /dev/null +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/WorkerDataConverterTest.kt @@ -0,0 +1,53 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.push.impl.workmanager + +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.androidutils.json.DefaultJsonProvider +import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.AN_EVENT_ID_2 +import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.A_ROOM_ID_2 +import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.matrix.test.A_SESSION_ID_2 +import io.element.android.libraries.push.api.push.NotificationEventRequest +import org.junit.Test + +class WorkerDataConverterTest { + @Test + fun `ensure identity when serializing - deserializing an empty list`() { + testIdentity(emptyList()) + } + + @Test + fun `ensure identity when serializing - deserializing a list`() { + testIdentity( + listOf( + NotificationEventRequest( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + eventId = AN_EVENT_ID, + providerInfo = "info1", + ), + NotificationEventRequest( + sessionId = A_SESSION_ID_2, + roomId = A_ROOM_ID_2, + eventId = AN_EVENT_ID_2, + providerInfo = "info2", + ), + ) + ) + } + + private fun testIdentity(data: List) { + val sut = WorkerDataConverter(DefaultJsonProvider()) + val serialized = sut.serialize(data).getOrThrow() + val result = sut.deserialize(serialized) + assertThat(result).isEqualTo(data) + } +} From 937519639df02b903a6d23d66a54ebd235ff6ba0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 09:59:24 +0200 Subject: [PATCH 175/898] Add missing test. --- .../libraries/androidutils/json/JsonProvider.kt | 2 +- .../SyncNotificationWorkManagerRequestTest.kt | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt index 08226060db..2e91cd6784 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/json/JsonProvider.kt @@ -17,7 +17,7 @@ import kotlinx.serialization.json.Json /** * Provides a Json instance configured to ignore unknown keys. */ -interface JsonProvider : Provider +fun interface JsonProvider : Provider @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt index fcefd8ab8b..ebbe4eb865 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt @@ -49,14 +49,24 @@ class SyncNotificationWorkManagerRequestTest { assertThat(result.isFailure).isTrue() } - // TODO add test for invalid serialization (how?) + @Test + fun `build - invalid serialization`() = runTest { + val request = createSyncNotificationWorkManagerRequest( + sessionId = A_SESSION_ID, + notificationEventRequests = listOf(aNotificationEventRequest()), + workerDataConverter = WorkerDataConverter({ error("error during serialization") }) + ) + val result = request.build() + assertThat(result.isFailure).isTrue() + } } private fun createSyncNotificationWorkManagerRequest( sessionId: SessionId, notificationEventRequests: List, + workerDataConverter: WorkerDataConverter = WorkerDataConverter(DefaultJsonProvider()) ) = SyncNotificationWorkManagerRequest( sessionId = sessionId, notificationEventRequests = notificationEventRequests, - workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), + workerDataConverter = workerDataConverter, ) From d8af1eea8949dc8b095020498ec32c3a35474305 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 10:40:17 +0200 Subject: [PATCH 176/898] fix(deps): update dependency androidx.work:work-runtime-ktx to v2.11.0 (#5590) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ff4309c833..f191156732 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ lifecycle = "2.9.2" activity = "1.11.0" media3 = "1.8.0" camera = "1.5.1" -work = "2.10.5" +work = "2.11.0" # Compose compose_bom = "2025.07.00" From 6a8393393e782e88f50fb8753ef68f465eb1f6de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 08:56:19 +0000 Subject: [PATCH 177/898] fix(deps): update dependency com.posthog:posthog-android to v3.25.0 (#5594) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f191156732..e61114bc65 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -210,7 +210,7 @@ haze_materials = { module = "dev.chrisbanes.haze:haze-materials", version.ref = color_picker = "io.mhssn:colorpicker:1.0.0" # Analytics -posthog = "com.posthog:posthog-android:3.24.0" +posthog = "com.posthog:posthog-android:3.25.0" sentry = "io.sentry:sentry-android:8.24.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.28.0" From b8e956c5d68873d52140b770e83671cba56f6857 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 11:33:20 +0200 Subject: [PATCH 178/898] fix(deps): update dependency com.google.crypto.tink:tink-android to v1.19.0 (#5572) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e61114bc65..c048aa6fb0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -80,7 +80,7 @@ google_firebase_bom = "com.google.firebase:firebase-bom:34.4.0" firebase_appdistribution_gradle = { module = "com.google.firebase:firebase-appdistribution-gradle", version.ref = "firebaseAppDistribution" } autonomousapps_dependencyanalysis_plugin = { module = "com.autonomousapps:dependency-analysis-gradle-plugin", version.ref = "dependencyAnalysis" } ksp_plugin = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" } -google_tink = "com.google.crypto.tink:tink-android:1.18.0" +google_tink = "com.google.crypto.tink:tink-android:1.19.0" # AndroidX androidx_core = { module = "androidx.core:core", version.ref = "core" } From c53dabce163aeea012cbe5e35505ae1e906bc1ad Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 15:03:04 +0200 Subject: [PATCH 179/898] Remove dependency on `AppNavigationStateService` from `DefaultGetCurrentPushProvider` --- .../appnav/loggedin/LoggedInPresenter.kt | 2 +- .../appnav/loggedin/LoggedInPresenterTest.kt | 2 +- .../NotificationSettingsPresenter.kt | 2 +- .../push/api/GetCurrentPushProvider.kt | 4 +- .../android/libraries/push/api/PushService.kt | 4 +- .../impl/DefaultGetCurrentPushProvider.kt | 14 +---- .../libraries/push/impl/DefaultPushService.kt | 8 +-- .../troubleshoot/CurrentPushProviderTest.kt | 2 +- .../impl/troubleshoot/PushLoopbackTest.kt | 12 ++-- .../push/impl/DefaultPushServiceTest.kt | 10 ++-- .../impl/troubleshoot/PushLoopbackTestTest.kt | 55 +++++++++---------- .../push/test/FakeGetCurrentPushProvider.kt | 3 +- .../libraries/push/test/FakePushService.kt | 12 ++-- .../impl/TroubleshootTestSuite.kt | 4 +- .../TroubleshootNotificationsPresenterTest.kt | 2 + 15 files changed, 66 insertions(+), 70 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index 1f8be2f673..934803fe26 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -134,7 +134,7 @@ class LoggedInPresenter( private suspend fun ensurePusherIsRegistered(pusherRegistrationState: MutableState>) { Timber.tag(pusherTag.value).d("Ensure pusher is registered") - val currentPushProvider = pushService.getCurrentPushProvider() + val currentPushProvider = pushService.getCurrentPushProvider(matrixClient.sessionId) val result = if (currentPushProvider == null) { Timber.tag(pusherTag.value).d("Register with the first available push provider with at least one distributor") val pushProvider = pushService.getAvailablePushProviders() diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 47cbda4b91..6bca3a2e72 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -487,7 +487,7 @@ class LoggedInPresenterTest { Result.success(Unit) }, selectPushProviderLambda: (SessionId, PushProvider) -> Unit = { _, _ -> lambdaError() }, - currentPushProvider: () -> PushProvider? = { null }, + currentPushProvider: (SessionId) -> PushProvider? = { null }, setIgnoreRegistrationErrorLambda: (SessionId, Boolean) -> Unit = { _, _ -> lambdaError() }, ): PushService { return FakePushService( diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt index 1fcb984924..00006d1086 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt @@ -94,7 +94,7 @@ class NotificationSettingsPresenter( var refreshPushProvider by remember { mutableIntStateOf(0) } LaunchedEffect(refreshPushProvider) { - val p = pushService.getCurrentPushProvider() + val p = pushService.getCurrentPushProvider(matrixClient.sessionId) val distributor = p?.getCurrentDistributor(matrixClient.sessionId) currentDistributor = if (distributor != null) { AsyncData.Success(distributor) diff --git a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/GetCurrentPushProvider.kt b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/GetCurrentPushProvider.kt index f7a3dc1638..2d946e9af7 100644 --- a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/GetCurrentPushProvider.kt +++ b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/GetCurrentPushProvider.kt @@ -7,6 +7,8 @@ package io.element.android.libraries.push.api +import io.element.android.libraries.matrix.api.core.SessionId + interface GetCurrentPushProvider { - suspend fun getCurrentPushProvider(): String? + suspend fun getCurrentPushProvider(sessionId: SessionId): String? } diff --git a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt index fb1bd14404..d1914b1c52 100644 --- a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt +++ b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/PushService.kt @@ -18,7 +18,7 @@ interface PushService { /** * Return the current push provider, or null if none. */ - suspend fun getCurrentPushProvider(): PushProvider? + suspend fun getCurrentPushProvider(sessionId: SessionId): PushProvider? /** * Return the list of push providers, available at compile time, sorted by index. @@ -51,7 +51,7 @@ interface PushService { /** * Return false in case of early error. */ - suspend fun testPush(): Boolean + suspend fun testPush(sessionId: SessionId): Boolean /** * Get a flow of total number of received Push. diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt index 531a717ae4..1f175b6631 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultGetCurrentPushProvider.kt @@ -9,23 +9,15 @@ package io.element.android.libraries.push.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.GetCurrentPushProvider import io.element.android.libraries.pushstore.api.UserPushStoreFactory -import io.element.android.services.appnavstate.api.AppNavigationStateService -import io.element.android.services.appnavstate.api.currentSessionId @ContributesBinding(AppScope::class) class DefaultGetCurrentPushProvider( private val pushStoreFactory: UserPushStoreFactory, - private val appNavigationStateService: AppNavigationStateService, ) : GetCurrentPushProvider { - override suspend fun getCurrentPushProvider(): String? { - return appNavigationStateService - .appNavigationState - .value - .navigationState - .currentSessionId() - ?.let { pushStoreFactory.getOrCreate(it) } - ?.getPushProviderName() + override suspend fun getCurrentPushProvider(sessionId: SessionId): String? { + return pushStoreFactory.getOrCreate(sessionId).getPushProviderName() } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index c92e512a71..9cae53a848 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -44,8 +44,8 @@ class DefaultPushService( observeSessions() } - override suspend fun getCurrentPushProvider(): PushProvider? { - val currentPushProvider = getCurrentPushProvider.getCurrentPushProvider() + override suspend fun getCurrentPushProvider(sessionId: SessionId): PushProvider? { + val currentPushProvider = getCurrentPushProvider.getCurrentPushProvider(sessionId) return pushProviders.find { it.name == currentPushProvider } } @@ -97,8 +97,8 @@ class DefaultPushService( userPushStoreFactory.getOrCreate(sessionId).setIgnoreRegistrationError(ignore) } - override suspend fun testPush(): Boolean { - val pushProvider = getCurrentPushProvider() ?: return false + override suspend fun testPush(sessionId: SessionId): Boolean { + val pushProvider = getCurrentPushProvider(sessionId) ?: return false val config = pushProvider.getCurrentUserPushConfig() ?: return false testPush.execute(config) return true diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/CurrentPushProviderTest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/CurrentPushProviderTest.kt index 3eeaae1b2d..687f6f562a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/CurrentPushProviderTest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/CurrentPushProviderTest.kt @@ -37,7 +37,7 @@ class CurrentPushProviderTest( override suspend fun run(coroutineScope: CoroutineScope) { delegate.start() - val pushProvider = pushService.getCurrentPushProvider() + val pushProvider = pushService.getCurrentPushProvider(sessionId) if (pushProvider == null) { delegate.updateState( description = stringProvider.getString(R.string.troubleshoot_notifications_test_current_push_provider_failure), diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt index 5b9a9e2fd1..8b50d70ff7 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTest.kt @@ -7,9 +7,10 @@ package io.element.android.libraries.push.impl.troubleshoot -import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.Inject +import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.api.gateway.PushGatewayFailure import io.element.android.libraries.push.impl.R @@ -28,9 +29,10 @@ import kotlinx.coroutines.withTimeout import timber.log.Timber import kotlin.time.Duration.Companion.seconds -@ContributesIntoSet(AppScope::class) +@ContributesIntoSet(SessionScope::class) @Inject class PushLoopbackTest( + private val sessionId: SessionId, private val pushService: PushService, private val diagnosticPushHandler: DiagnosticPushHandler, private val clock: SystemClock, @@ -52,9 +54,9 @@ class PushLoopbackTest( completable.complete(clock.epochMillis() - startTime) } val testPushResult = try { - pushService.testPush() + pushService.testPush(sessionId) } catch (pusherRejected: PushGatewayFailure.PusherRejected) { - val hasQuickFix = pushService.getCurrentPushProvider()?.canRotateToken() == true + val hasQuickFix = pushService.getCurrentPushProvider(sessionId)?.canRotateToken() == true delegate.updateState( description = stringProvider.getString(R.string.troubleshoot_notifications_test_push_loop_back_failure_1), status = NotificationTroubleshootTestState.Status.Failure(hasQuickFix = hasQuickFix) @@ -105,7 +107,7 @@ class PushLoopbackTest( navigator: NotificationTroubleshootNavigator, ) { delegate.start() - pushService.getCurrentPushProvider()?.rotateToken() + pushService.getCurrentPushProvider(sessionId)?.rotateToken() run(coroutineScope) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt index 5ae8ab261e..03a039ab71 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt @@ -47,7 +47,7 @@ class DefaultPushServiceTest { @Test fun `test push no push provider`() = runTest { val defaultPushService = createDefaultPushService() - assertThat(defaultPushService.testPush()).isFalse() + assertThat(defaultPushService.testPush(A_SESSION_ID)).isFalse() } @Test @@ -57,7 +57,7 @@ class DefaultPushServiceTest { pushProviders = setOf(aPushProvider), getCurrentPushProvider = FakeGetCurrentPushProvider(currentPushProvider = aPushProvider.name), ) - assertThat(defaultPushService.testPush()).isFalse() + assertThat(defaultPushService.testPush(A_SESSION_ID)).isFalse() } @Test @@ -72,7 +72,7 @@ class DefaultPushServiceTest { getCurrentPushProvider = FakeGetCurrentPushProvider(currentPushProvider = aPushProvider.name), testPush = FakeTestPush(executeResult = testPushResult), ) - assertThat(defaultPushService.testPush()).isTrue() + assertThat(defaultPushService.testPush(A_SESSION_ID)).isTrue() testPushResult.assertions() .isCalledOnce() .with(value(aConfig)) @@ -81,7 +81,7 @@ class DefaultPushServiceTest { @Test fun `getCurrentPushProvider null`() = runTest { val defaultPushService = createDefaultPushService() - val result = defaultPushService.getCurrentPushProvider() + val result = defaultPushService.getCurrentPushProvider(A_SESSION_ID) assertThat(result).isNull() } @@ -92,7 +92,7 @@ class DefaultPushServiceTest { pushProviders = setOf(aPushProvider), getCurrentPushProvider = FakeGetCurrentPushProvider(currentPushProvider = aPushProvider.name), ) - val result = defaultPushService.getCurrentPushProvider() + val result = defaultPushService.getCurrentPushProvider(A_SESSION_ID) assertThat(result).isEqualTo(aPushProvider) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTestTest.kt index f06b6a9e1b..7158a6c6b6 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/PushLoopbackTestTest.kt @@ -8,14 +8,19 @@ package io.element.android.libraries.push.impl.troubleshoot import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_FAILURE_REASON +import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.api.gateway.PushGatewayFailure import io.element.android.libraries.push.test.FakePushService import io.element.android.libraries.pushproviders.test.FakePushProvider import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState import io.element.android.libraries.troubleshoot.test.FakeNotificationTroubleshootNavigator import io.element.android.libraries.troubleshoot.test.runAndTestState +import io.element.android.services.toolbox.api.strings.StringProvider +import io.element.android.services.toolbox.api.systemclock.SystemClock import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.services.toolbox.test.systemclock.FakeSystemClock import io.element.android.tests.testutils.lambda.lambdaRecorder @@ -25,13 +30,7 @@ import org.junit.Test class PushLoopbackTestTest { @Test fun `test PushLoopbackTest timeout - push is not received`() = runTest { - val diagnosticPushHandler = DiagnosticPushHandler() - val sut = PushLoopbackTest( - pushService = FakePushService(), - diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), - ) + val sut = createPushLoopbackTest() sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.InProgress) @@ -42,16 +41,12 @@ class PushLoopbackTestTest { @Test fun `test PushLoopbackTest PusherRejected error`() = runTest { - val diagnosticPushHandler = DiagnosticPushHandler() - val sut = PushLoopbackTest( + val sut = createPushLoopbackTest( pushService = FakePushService( testPushBlock = { throw PushGatewayFailure.PusherRejected() } ), - diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), ) sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) @@ -65,9 +60,8 @@ class PushLoopbackTestTest { @Test fun `test PushLoopbackTest PusherRejected error with quick fix`() = runTest { - val diagnosticPushHandler = DiagnosticPushHandler() val rotateTokenLambda = lambdaRecorder> { Result.success(Unit) } - val sut = PushLoopbackTest( + val sut = createPushLoopbackTest( pushService = FakePushService( testPushBlock = { throw PushGatewayFailure.PusherRejected() @@ -79,9 +73,6 @@ class PushLoopbackTestTest { ) } ), - diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), ) sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) @@ -97,14 +88,10 @@ class PushLoopbackTestTest { @Test fun `test PushLoopbackTest setup error`() = runTest { - val diagnosticPushHandler = DiagnosticPushHandler() - val sut = PushLoopbackTest( + val sut = createPushLoopbackTest( pushService = FakePushService( testPushBlock = { false } ), - diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), ) sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) @@ -116,16 +103,12 @@ class PushLoopbackTestTest { @Test fun `test PushLoopbackTest other error`() = runTest { - val diagnosticPushHandler = DiagnosticPushHandler() - val sut = PushLoopbackTest( + val sut = createPushLoopbackTest( pushService = FakePushService( testPushBlock = { throw AN_EXCEPTION } ), - diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), ) sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) @@ -139,14 +122,12 @@ class PushLoopbackTestTest { @Test fun `test PushLoopbackTest push is received`() = runTest { val diagnosticPushHandler = DiagnosticPushHandler() - val sut = PushLoopbackTest( + val sut = createPushLoopbackTest( pushService = FakePushService(testPushBlock = { diagnosticPushHandler.handlePush() true }), diagnosticPushHandler = diagnosticPushHandler, - clock = FakeSystemClock(), - stringProvider = FakeStringProvider(), ) sut.runAndTestState { assertThat(awaitItem().status).isEqualTo(NotificationTroubleshootTestState.Status.Idle(true)) @@ -156,3 +137,17 @@ class PushLoopbackTestTest { } } } + +private fun createPushLoopbackTest( + sessionId: SessionId = A_SESSION_ID, + pushService: PushService = FakePushService(), + diagnosticPushHandler: DiagnosticPushHandler = DiagnosticPushHandler(), + clock: SystemClock = FakeSystemClock(), + stringProvider: StringProvider = FakeStringProvider(), +) = PushLoopbackTest( + sessionId = sessionId, + pushService = pushService, + diagnosticPushHandler = diagnosticPushHandler, + clock = clock, + stringProvider = stringProvider +) diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakeGetCurrentPushProvider.kt b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakeGetCurrentPushProvider.kt index e2fc48aada..205e85c685 100644 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakeGetCurrentPushProvider.kt +++ b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakeGetCurrentPushProvider.kt @@ -7,10 +7,11 @@ package io.element.android.libraries.push.test +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.GetCurrentPushProvider class FakeGetCurrentPushProvider( private val currentPushProvider: String? ) : GetCurrentPushProvider { - override suspend fun getCurrentPushProvider(): String? = currentPushProvider + override suspend fun getCurrentPushProvider(sessionId: SessionId): String? = currentPushProvider } diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt index 553ac09465..d39d89c7d3 100644 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt +++ b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/FakePushService.kt @@ -19,19 +19,19 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow class FakePushService( - private val testPushBlock: suspend () -> Boolean = { true }, + private val testPushBlock: suspend (SessionId) -> Boolean = { true }, private val availablePushProviders: List = emptyList(), private val registerWithLambda: suspend (MatrixClient, PushProvider, Distributor) -> Result = { _, _, _ -> Result.success(Unit) }, - private val currentPushProvider: () -> PushProvider? = { availablePushProviders.firstOrNull() }, + private val currentPushProvider: (SessionId) -> PushProvider? = { availablePushProviders.firstOrNull() }, private val selectPushProviderLambda: suspend (SessionId, PushProvider) -> Unit = { _, _ -> lambdaError() }, private val setIgnoreRegistrationErrorLambda: (SessionId, Boolean) -> Unit = { _, _ -> lambdaError() }, private val resetPushHistoryResult: () -> Unit = { lambdaError() }, private val resetBatteryOptimizationStateResult: () -> Unit = { lambdaError() }, ) : PushService { - override suspend fun getCurrentPushProvider(): PushProvider? { - return registeredPushProvider ?: currentPushProvider() + override suspend fun getCurrentPushProvider(sessionId: SessionId): PushProvider? { + return registeredPushProvider ?: currentPushProvider(sessionId) } override fun getAvailablePushProviders(): List { @@ -68,8 +68,8 @@ class FakePushService( setIgnoreRegistrationErrorLambda(sessionId, ignore) } - override suspend fun testPush(): Boolean = simulateLongTask { - testPushBlock() + override suspend fun testPush(sessionId: SessionId): Boolean = simulateLongTask { + testPushBlock(sessionId) } private val pushHistoryItemsFlow = MutableStateFlow>(emptyList()) diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootTestSuite.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootTestSuite.kt index c26510fc92..02f8b0cbd9 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootTestSuite.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootTestSuite.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.troubleshoot.impl import dev.zacsweers.metro.Inject import im.vector.app.features.analytics.plan.NotificationTroubleshoot import io.element.android.libraries.architecture.AsyncAction +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.api.GetCurrentPushProvider import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootNavigator import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTest @@ -25,6 +26,7 @@ import kotlinx.coroutines.flow.onEach @Inject class TroubleshootTestSuite( + private val sessionId: SessionId, private val notificationTroubleshootTests: Set<@JvmSuppressWildcards NotificationTroubleshootTest>, private val getCurrentPushProvider: GetCurrentPushProvider, private val analyticsService: AnalyticsService, @@ -41,7 +43,7 @@ class TroubleshootTestSuite( suspend fun start(coroutineScope: CoroutineScope) { val testFilterData = TestFilterData( - currentPushProviderName = getCurrentPushProvider.getCurrentPushProvider() + currentPushProviderName = getCurrentPushProvider.getCurrentPushProvider(sessionId) ) tests = notificationTroubleshootTests .filter { it.isRelevant(testFilterData) } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt index 4d6b338db7..f8be5a5696 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.troubleshoot.impl import com.google.common.truth.Truth.assertThat import io.element.android.libraries.architecture.AsyncAction +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.push.test.FakeGetCurrentPushProvider import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootNavigator import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTest @@ -170,6 +171,7 @@ private fun createTroubleshootTestSuite( currentPushProvider: String? = null, ): TroubleshootTestSuite { return TroubleshootTestSuite( + sessionId = A_SESSION_ID, notificationTroubleshootTests = tests, getCurrentPushProvider = FakeGetCurrentPushProvider(currentPushProvider), analyticsService = FakeAnalyticsService(), From 44b5ad48f1295ad8f44298fc2c6f34a719e85699 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 15:23:11 +0200 Subject: [PATCH 180/898] Remove dependency on `AppNavigationStateService` from `DefaultUnifiedPushCurrentUserPushConfigProvider` --- .../libraries/push/impl/DefaultPushService.kt | 2 +- .../libraries/push/impl/test/TestPush.kt | 6 +-- .../push/impl/DefaultPushServiceTest.kt | 10 ++-- .../push/impl/test/DefaultTestPushTest.kt | 4 +- .../libraries/push/impl/test/FakeTestPush.kt | 6 +-- .../{CurrentUserPushConfig.kt => Config.kt} | 2 +- .../pushproviders/api/PushProvider.kt | 2 +- .../firebase/FirebasePushProvider.kt | 6 +-- .../firebase/FirebasePushProviderTest.kt | 8 +-- .../pushproviders/test/FakePushProvider.kt | 8 +-- .../libraries/pushproviders/test/Fixtures.kt | 6 +-- .../unifiedpush/build.gradle.kts | 2 - ...nifiedPushCurrentUserPushConfigProvider.kt | 37 ------------- .../unifiedpush/UnifiedPushProvider.kt | 8 +-- .../UnifiedPushSessionPushConfigProvider.kt | 34 ++++++++++++ .../UnifiedPushMatrixGatewayTest.kt | 12 +++-- ...edPushCurrentUserPushConfigProviderTest.kt | 52 +++---------------- .../unifiedpush/UnifiedPushProviderTest.kt | 16 +++--- ...nifiedPushCurrentUserPushConfigProvider.kt | 20 ------- ...akeUnifiedPushSessionPushConfigProvider.kt | 21 ++++++++ .../UnifiedPushMatrixGatewayTestTest.kt | 22 ++++---- 21 files changed, 124 insertions(+), 160 deletions(-) rename libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/{CurrentUserPushConfig.kt => Config.kt} (89%) delete mode 100644 libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt create mode 100644 libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushSessionPushConfigProvider.kt delete mode 100644 libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushCurrentUserPushConfigProvider.kt create mode 100644 libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushSessionPushConfigProvider.kt diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index 9cae53a848..d0a5e6b60f 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -99,7 +99,7 @@ class DefaultPushService( override suspend fun testPush(sessionId: SessionId): Boolean { val pushProvider = getCurrentPushProvider(sessionId) ?: return false - val config = pushProvider.getCurrentUserPushConfig() ?: return false + val config = pushProvider.getPushConfig(sessionId) ?: return false testPush.execute(config) return true } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt index 72b76ee33d..98997c8b79 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/test/TestPush.kt @@ -13,17 +13,17 @@ import io.element.android.appconfig.PushConfig import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.push.impl.pushgateway.PushGatewayNotifyRequest -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config interface TestPush { - suspend fun execute(config: CurrentUserPushConfig) + suspend fun execute(config: Config) } @ContributesBinding(AppScope::class) class DefaultTestPush( private val pushGatewayNotifyRequest: PushGatewayNotifyRequest, ) : TestPush { - override suspend fun execute(config: CurrentUserPushConfig) { + override suspend fun execute(config: Config) { pushGatewayNotifyRequest.execute( PushGatewayNotifyRequest.Params( url = config.url, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt index 03a039ab71..62567d3977 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt @@ -25,11 +25,11 @@ import io.element.android.libraries.push.impl.store.PushDataStore import io.element.android.libraries.push.impl.test.FakeTestPush import io.element.android.libraries.push.impl.test.TestPush import io.element.android.libraries.push.test.FakeGetCurrentPushProvider -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.api.PushProvider import io.element.android.libraries.pushproviders.test.FakePushProvider -import io.element.android.libraries.pushproviders.test.aCurrentUserPushConfig +import io.element.android.libraries.pushproviders.test.aSessionPushConfig import io.element.android.libraries.pushstore.api.UserPushStoreFactory import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecretStore import io.element.android.libraries.pushstore.test.userpushstore.FakeUserPushStore @@ -62,10 +62,10 @@ class DefaultPushServiceTest { @Test fun `test push ok`() = runTest { - val aConfig = aCurrentUserPushConfig() - val testPushResult = lambdaRecorder { } + val aConfig = aSessionPushConfig() + val testPushResult = lambdaRecorder { } val aPushProvider = FakePushProvider( - currentUserPushConfig = aConfig + config = aConfig ) val defaultPushService = createDefaultPushService( pushProviders = setOf(aPushProvider), diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/DefaultTestPushTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/DefaultTestPushTest.kt index c3231097a0..3d8bc7e403 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/DefaultTestPushTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/DefaultTestPushTest.kt @@ -9,7 +9,7 @@ package io.element.android.libraries.push.impl.test import io.element.android.appconfig.PushConfig import io.element.android.libraries.push.impl.pushgateway.PushGatewayNotifyRequest -import io.element.android.libraries.pushproviders.test.aCurrentUserPushConfig +import io.element.android.libraries.pushproviders.test.aSessionPushConfig import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.test.runTest @@ -24,7 +24,7 @@ class DefaultTestPushTest { executeResult = executeResult, ) ) - val aConfig = aCurrentUserPushConfig() + val aConfig = aSessionPushConfig() defaultTestPush.execute(aConfig) executeResult.assertions() .isCalledOnce() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/FakeTestPush.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/FakeTestPush.kt index f09832cc3b..d1867d3ff6 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/FakeTestPush.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/test/FakeTestPush.kt @@ -7,13 +7,13 @@ package io.element.android.libraries.push.impl.test -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.tests.testutils.lambda.lambdaError class FakeTestPush( - private val executeResult: (CurrentUserPushConfig) -> Unit = { lambdaError() } + private val executeResult: (Config) -> Unit = { lambdaError() } ) : TestPush { - override suspend fun execute(config: CurrentUserPushConfig) { + override suspend fun execute(config: Config) { executeResult(config) } } diff --git a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/CurrentUserPushConfig.kt b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Config.kt similarity index 89% rename from libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/CurrentUserPushConfig.kt rename to libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Config.kt index 0d3bf0241f..a208b33d9c 100644 --- a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/CurrentUserPushConfig.kt +++ b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/Config.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.pushproviders.api -data class CurrentUserPushConfig( +data class Config( val url: String, val pushKey: String, ) diff --git a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/PushProvider.kt b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/PushProvider.kt index 38a7135b75..e1142846ae 100644 --- a/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/PushProvider.kt +++ b/libraries/pushproviders/api/src/main/kotlin/io/element/android/libraries/pushproviders/api/PushProvider.kt @@ -59,7 +59,7 @@ interface PushProvider { */ suspend fun onSessionDeleted(sessionId: SessionId) - suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? + suspend fun getPushConfig(sessionId: SessionId): Config? fun canRotateToken(): Boolean diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt index 4f8c99cd3e..6df0bda642 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt @@ -13,7 +13,7 @@ import dev.zacsweers.metro.Inject import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.api.PushProvider import io.element.android.libraries.pushproviders.api.PusherSubscriber @@ -74,9 +74,9 @@ class FirebasePushProvider( */ override suspend fun onSessionDeleted(sessionId: SessionId) = Unit - override suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? { + override suspend fun getPushConfig(sessionId: SessionId): Config? { return firebaseStore.getFcmToken()?.let { fcmToken -> - CurrentUserPushConfig( + Config( url = firebaseGatewayProvider.getFirebaseGateway(), pushKey = fcmToken ) diff --git a/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt b/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt index 53ed52be07..642addf9c8 100644 --- a/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt +++ b/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt @@ -13,7 +13,7 @@ import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.push.test.FakePusherSubscriber -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.api.PusherSubscriber import io.element.android.tests.testutils.lambda.lambdaRecorder @@ -152,7 +152,7 @@ class FirebasePushProviderTest { token = null ) ) - val result = firebasePushProvider.getCurrentUserPushConfig() + val result = firebasePushProvider.getPushConfig(A_SESSION_ID) assertThat(result).isNull() } @@ -163,8 +163,8 @@ class FirebasePushProviderTest { token = "aToken" ), ) - val result = firebasePushProvider.getCurrentUserPushConfig() - assertThat(result).isEqualTo(CurrentUserPushConfig(A_FIREBASE_GATEWAY, "aToken")) + val result = firebasePushProvider.getPushConfig(A_SESSION_ID) + assertThat(result).isEqualTo(Config(A_FIREBASE_GATEWAY, "aToken")) } @Test diff --git a/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/FakePushProvider.kt b/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/FakePushProvider.kt index afb4d833d4..55b3b754f9 100644 --- a/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/FakePushProvider.kt +++ b/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/FakePushProvider.kt @@ -9,7 +9,7 @@ package io.element.android.libraries.pushproviders.test import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.api.PushProvider import io.element.android.tests.testutils.lambda.lambdaError @@ -21,7 +21,7 @@ class FakePushProvider( private val distributors: List = listOf(Distributor("aDistributorValue", "aDistributorName")), private val currentDistributorValue: () -> String? = { lambdaError() }, private val currentDistributor: () -> Distributor? = { distributors.firstOrNull() }, - private val currentUserPushConfig: CurrentUserPushConfig? = null, + private val config: Config? = null, private val registerWithResult: (MatrixClient, Distributor) -> Result = { _, _ -> lambdaError() }, private val unregisterWithResult: (MatrixClient) -> Result = { lambdaError() }, private val onSessionDeletedLambda: (SessionId) -> Unit = { lambdaError() }, @@ -50,8 +50,8 @@ class FakePushProvider( onSessionDeletedLambda(sessionId) } - override suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? { - return currentUserPushConfig + override suspend fun getPushConfig(sessionId: SessionId): Config? { + return config } override fun canRotateToken(): Boolean { diff --git a/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/Fixtures.kt b/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/Fixtures.kt index cd3b95d672..698c8ed6cc 100644 --- a/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/Fixtures.kt +++ b/libraries/pushproviders/test/src/main/kotlin/io/element/android/libraries/pushproviders/test/Fixtures.kt @@ -7,12 +7,12 @@ package io.element.android.libraries.pushproviders.test -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config -fun aCurrentUserPushConfig( +fun aSessionPushConfig( url: String = "aUrl", pushKey: String = "aPushKey", -) = CurrentUserPushConfig( +) = Config( url = url, pushKey = pushKey, ) diff --git a/libraries/pushproviders/unifiedpush/build.gradle.kts b/libraries/pushproviders/unifiedpush/build.gradle.kts index e416ccf8bf..b6066c76ed 100644 --- a/libraries/pushproviders/unifiedpush/build.gradle.kts +++ b/libraries/pushproviders/unifiedpush/build.gradle.kts @@ -30,7 +30,6 @@ dependencies { implementation(projects.libraries.pushproviders.api) implementation(projects.libraries.architecture) implementation(projects.libraries.core) - implementation(projects.services.appnavstate.api) implementation(projects.services.toolbox.api) implementation(projects.libraries.network) @@ -53,5 +52,4 @@ dependencies { testImplementation(projects.libraries.pushstore.test) testImplementation(projects.libraries.troubleshoot.test) testImplementation(projects.services.toolbox.test) - testImplementation(projects.services.appnavstate.test) } diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt deleted file mode 100644 index e66975b40c..0000000000 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushCurrentUserPushConfigProvider.kt +++ /dev/null @@ -1,37 +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.pushproviders.unifiedpush - -import dev.zacsweers.metro.AppScope -import dev.zacsweers.metro.ContributesBinding -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig -import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret -import io.element.android.services.appnavstate.api.AppNavigationStateService -import io.element.android.services.appnavstate.api.currentSessionId - -interface UnifiedPushCurrentUserPushConfigProvider { - suspend fun provide(): CurrentUserPushConfig? -} - -@ContributesBinding(AppScope::class) -class DefaultUnifiedPushCurrentUserPushConfigProvider( - private val pushClientSecret: PushClientSecret, - private val unifiedPushStore: UnifiedPushStore, - private val appNavigationStateService: AppNavigationStateService, -) : UnifiedPushCurrentUserPushConfigProvider { - override suspend fun provide(): CurrentUserPushConfig? { - val currentSession = appNavigationStateService.appNavigationState.value.navigationState.currentSessionId() ?: return null - val clientSecret = pushClientSecret.getSecretForUser(currentSession) - val url = unifiedPushStore.getPushGateway(clientSecret) ?: return null - val pushKey = unifiedPushStore.getEndpoint(clientSecret) ?: return null - return CurrentUserPushConfig( - url = url, - pushKey = pushKey, - ) - } -} diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt index 92d7c9ebc3..e7321bad5f 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProvider.kt @@ -12,7 +12,7 @@ import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.Inject import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushproviders.api.Distributor import io.element.android.libraries.pushproviders.api.PushProvider import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret @@ -25,7 +25,7 @@ class UnifiedPushProvider( private val unRegisterUnifiedPushUseCase: UnregisterUnifiedPushUseCase, private val pushClientSecret: PushClientSecret, private val unifiedPushStore: UnifiedPushStore, - private val unifiedPushCurrentUserPushConfigProvider: UnifiedPushCurrentUserPushConfigProvider, + private val unifiedPushSessionPushConfigProvider: UnifiedPushSessionPushConfigProvider, ) : PushProvider { override val index = UnifiedPushConfig.INDEX override val name = UnifiedPushConfig.NAME @@ -62,8 +62,8 @@ class UnifiedPushProvider( unRegisterUnifiedPushUseCase.cleanup(clientSecret) } - override suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? { - return unifiedPushCurrentUserPushConfigProvider.provide() + override suspend fun getPushConfig(sessionId: SessionId): Config? { + return unifiedPushSessionPushConfigProvider.provide(sessionId) } override fun canRotateToken(): Boolean = false diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushSessionPushConfigProvider.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushSessionPushConfigProvider.kt new file mode 100644 index 0000000000..dfd4adc954 --- /dev/null +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushSessionPushConfigProvider.kt @@ -0,0 +1,34 @@ +/* + * 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.pushproviders.unifiedpush + +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.pushproviders.api.Config +import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret + +interface UnifiedPushSessionPushConfigProvider { + suspend fun provide(sessionId: SessionId): Config? +} + +@ContributesBinding(AppScope::class) +class DefaultUnifiedPushPushConfigProvider( + private val pushClientSecret: PushClientSecret, + private val unifiedPushStore: UnifiedPushStore, +) : UnifiedPushSessionPushConfigProvider { + override suspend fun provide(sessionId: SessionId): Config? { + val clientSecret = pushClientSecret.getSecretForUser(sessionId) + val url = unifiedPushStore.getPushGateway(clientSecret) ?: return null + val pushKey = unifiedPushStore.getEndpoint(clientSecret) ?: return null + return Config( + url = url, + pushKey = pushKey, + ) + } +} diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTest.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTest.kt index 7a22e92222..ff32dd51b7 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTest.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTest.kt @@ -7,13 +7,14 @@ package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot -import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushApiFactory import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushConfig -import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushCurrentUserPushConfigProvider +import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushSessionPushConfigProvider import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTest import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestDelegate import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState @@ -22,12 +23,13 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch -@ContributesIntoSet(AppScope::class) +@ContributesIntoSet(SessionScope::class) @Inject class UnifiedPushMatrixGatewayTest( + private val sessionId: SessionId, private val unifiedPushApiFactory: UnifiedPushApiFactory, private val coroutineDispatchers: CoroutineDispatchers, - private val unifiedPushCurrentUserPushConfigProvider: UnifiedPushCurrentUserPushConfigProvider, + private val unifiedPushSessionPushConfigProvider: UnifiedPushSessionPushConfigProvider, ) : NotificationTroubleshootTest { override val order = 450 private val delegate = NotificationTroubleshootTestDelegate( @@ -44,7 +46,7 @@ class UnifiedPushMatrixGatewayTest( override suspend fun run(coroutineScope: CoroutineScope) { delegate.start() - val config = unifiedPushCurrentUserPushConfigProvider.provide() + val config = unifiedPushSessionPushConfigProvider.provide(sessionId) if (config == null) { delegate.updateState( description = "No current push provider", diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushCurrentUserPushConfigProviderTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushCurrentUserPushConfigProviderTest.kt index deabff4488..2c15b47dd1 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushCurrentUserPushConfigProviderTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushCurrentUserPushConfigProviderTest.kt @@ -10,36 +10,16 @@ package io.element.android.libraries.pushproviders.unifiedpush import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.test.A_SECRET import io.element.android.libraries.matrix.test.A_SESSION_ID -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig +import io.element.android.libraries.pushproviders.api.Config import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret import io.element.android.libraries.pushstore.test.userpushstore.clientsecret.FakePushClientSecret -import io.element.android.services.appnavstate.api.AppNavigationState -import io.element.android.services.appnavstate.api.AppNavigationStateService -import io.element.android.services.appnavstate.api.NavigationState -import io.element.android.services.appnavstate.test.FakeAppNavigationStateService -import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultUnifiedPushCurrentUserPushConfigProviderTest { - @Test - fun `getCurrentUserPushConfig no session`() = runTest { - val sut = createDefaultUnifiedPushCurrentUserPushConfigProvider() - val result = sut.provide() - assertThat(result).isNull() - } - @Test fun `getCurrentUserPushConfig no push gateway`() = runTest { val sut = createDefaultUnifiedPushCurrentUserPushConfigProvider( - appNavigationStateService = FakeAppNavigationStateService( - appNavigationState = MutableStateFlow( - AppNavigationState( - navigationState = NavigationState.Session(owner = "owner", sessionId = A_SESSION_ID), - isInForeground = true - ) - ) - ), pushClientSecret = FakePushClientSecret( getSecretForUserResult = { A_SECRET } ), @@ -47,21 +27,13 @@ class DefaultUnifiedPushCurrentUserPushConfigProviderTest { getPushGatewayResult = { null } ), ) - val result = sut.provide() + val result = sut.provide(A_SESSION_ID) assertThat(result).isNull() } @Test fun `getCurrentUserPushConfig no push key`() = runTest { val sut = createDefaultUnifiedPushCurrentUserPushConfigProvider( - appNavigationStateService = FakeAppNavigationStateService( - appNavigationState = MutableStateFlow( - AppNavigationState( - navigationState = NavigationState.Session(owner = "owner", sessionId = A_SESSION_ID), - isInForeground = true - ) - ) - ), pushClientSecret = FakePushClientSecret( getSecretForUserResult = { A_SECRET } ), @@ -70,21 +42,13 @@ class DefaultUnifiedPushCurrentUserPushConfigProviderTest { getEndpointResult = { null } ), ) - val result = sut.provide() + val result = sut.provide(A_SESSION_ID) assertThat(result).isNull() } @Test fun `getCurrentUserPushConfig ok`() = runTest { val sut = createDefaultUnifiedPushCurrentUserPushConfigProvider( - appNavigationStateService = FakeAppNavigationStateService( - appNavigationState = MutableStateFlow( - AppNavigationState( - navigationState = NavigationState.Session(owner = "owner", sessionId = A_SESSION_ID), - isInForeground = true - ) - ) - ), pushClientSecret = FakePushClientSecret( getSecretForUserResult = { A_SECRET } ), @@ -93,19 +57,17 @@ class DefaultUnifiedPushCurrentUserPushConfigProviderTest { getEndpointResult = { "aEndpoint" } ), ) - val result = sut.provide() - assertThat(result).isEqualTo(CurrentUserPushConfig("aPushGateway", "aEndpoint")) + val result = sut.provide(A_SESSION_ID) + assertThat(result).isEqualTo(Config("aPushGateway", "aEndpoint")) } private fun createDefaultUnifiedPushCurrentUserPushConfigProvider( pushClientSecret: PushClientSecret = FakePushClientSecret(), unifiedPushStore: UnifiedPushStore = FakeUnifiedPushStore(), - appNavigationStateService: AppNavigationStateService = FakeAppNavigationStateService(), - ): DefaultUnifiedPushCurrentUserPushConfigProvider { - return DefaultUnifiedPushCurrentUserPushConfigProvider( + ): DefaultUnifiedPushPushConfigProvider { + return DefaultUnifiedPushPushConfigProvider( pushClientSecret = pushClientSecret, unifiedPushStore = unifiedPushStore, - appNavigationStateService = appNavigationStateService, ) } } diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProviderTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProviderTest.kt index 5e48728322..61be1496a6 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProviderTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushProviderTest.kt @@ -16,9 +16,9 @@ import io.element.android.libraries.matrix.test.A_SECRET import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.pushproviders.api.Distributor -import io.element.android.libraries.pushproviders.test.aCurrentUserPushConfig -import io.element.android.libraries.pushproviders.unifiedpush.troubleshoot.FakeUnifiedPushCurrentUserPushConfigProvider +import io.element.android.libraries.pushproviders.test.aSessionPushConfig import io.element.android.libraries.pushproviders.unifiedpush.troubleshoot.FakeUnifiedPushDistributorProvider +import io.element.android.libraries.pushproviders.unifiedpush.troubleshoot.FakeUnifiedPushSessionPushConfigProvider import io.element.android.libraries.pushstore.api.clientsecret.PushClientSecret import io.element.android.libraries.pushstore.test.userpushstore.clientsecret.FakePushClientSecret import io.element.android.tests.testutils.lambda.lambdaRecorder @@ -211,13 +211,13 @@ class UnifiedPushProviderTest { @Test fun `getCurrentUserPushConfig invokes the provider methods`() = runTest { - val currentUserPushConfig = aCurrentUserPushConfig() + val currentUserPushConfig = aSessionPushConfig() val unifiedPushProvider = createUnifiedPushProvider( - unifiedPushCurrentUserPushConfigProvider = FakeUnifiedPushCurrentUserPushConfigProvider( - currentUserPushConfig = { currentUserPushConfig } + unifiedPushSessionPushConfigProvider = FakeUnifiedPushSessionPushConfigProvider( + config = { currentUserPushConfig } ) ) - val result = unifiedPushProvider.getCurrentUserPushConfig() + val result = unifiedPushProvider.getPushConfig(A_SESSION_ID) assertThat(result).isEqualTo(currentUserPushConfig) } @@ -248,7 +248,7 @@ class UnifiedPushProviderTest { unRegisterUnifiedPushUseCase: UnregisterUnifiedPushUseCase = FakeUnregisterUnifiedPushUseCase(), pushClientSecret: PushClientSecret = FakePushClientSecret(), unifiedPushStore: UnifiedPushStore = FakeUnifiedPushStore(), - unifiedPushCurrentUserPushConfigProvider: UnifiedPushCurrentUserPushConfigProvider = FakeUnifiedPushCurrentUserPushConfigProvider(), + unifiedPushSessionPushConfigProvider: UnifiedPushSessionPushConfigProvider = FakeUnifiedPushSessionPushConfigProvider(), ): UnifiedPushProvider { return UnifiedPushProvider( unifiedPushDistributorProvider = unifiedPushDistributorProvider, @@ -256,7 +256,7 @@ class UnifiedPushProviderTest { unRegisterUnifiedPushUseCase = unRegisterUnifiedPushUseCase, pushClientSecret = pushClientSecret, unifiedPushStore = unifiedPushStore, - unifiedPushCurrentUserPushConfigProvider = unifiedPushCurrentUserPushConfigProvider, + unifiedPushSessionPushConfigProvider = unifiedPushSessionPushConfigProvider, ) } } diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushCurrentUserPushConfigProvider.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushCurrentUserPushConfigProvider.kt deleted file mode 100644 index 92be615054..0000000000 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushCurrentUserPushConfigProvider.kt +++ /dev/null @@ -1,20 +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.pushproviders.unifiedpush.troubleshoot - -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig -import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushCurrentUserPushConfigProvider -import io.element.android.tests.testutils.lambda.lambdaError - -class FakeUnifiedPushCurrentUserPushConfigProvider( - private val currentUserPushConfig: () -> CurrentUserPushConfig? = { lambdaError() }, -) : UnifiedPushCurrentUserPushConfigProvider { - override suspend fun provide(): CurrentUserPushConfig? { - return currentUserPushConfig() - } -} diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushSessionPushConfigProvider.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushSessionPushConfigProvider.kt new file mode 100644 index 0000000000..bf54d95da2 --- /dev/null +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/FakeUnifiedPushSessionPushConfigProvider.kt @@ -0,0 +1,21 @@ +/* + * 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.pushproviders.unifiedpush.troubleshoot + +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.pushproviders.api.Config +import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushSessionPushConfigProvider +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeUnifiedPushSessionPushConfigProvider( + private val config: (SessionId) -> Config? = { lambdaError() }, +) : UnifiedPushSessionPushConfigProvider { + override suspend fun provide(sessionId: SessionId): Config? { + return config(sessionId) + } +} diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTestTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTestTest.kt index f4a0cf5da4..f1bd427abd 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTestTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/troubleshoot/UnifiedPushMatrixGatewayTestTest.kt @@ -8,8 +8,10 @@ package io.element.android.libraries.pushproviders.unifiedpush.troubleshoot import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.pushproviders.api.CurrentUserPushConfig -import io.element.android.libraries.pushproviders.test.aCurrentUserPushConfig +import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.pushproviders.api.Config +import io.element.android.libraries.pushproviders.test.aSessionPushConfig import io.element.android.libraries.pushproviders.unifiedpush.FakeUnifiedPushApiFactory import io.element.android.libraries.pushproviders.unifiedpush.UnifiedPushConfig import io.element.android.libraries.pushproviders.unifiedpush.invalidDiscoveryResponse @@ -27,7 +29,7 @@ class UnifiedPushMatrixGatewayTestTest { @Test fun `test UnifiedPushMatrixGatewayTest success`() = runTest { val sut = createUnifiedPushMatrixGatewayTest( - currentUserPushConfig = aCurrentUserPushConfig(), + config = aSessionPushConfig(), discoveryResponse = matrixDiscoveryResponse, ) sut.runAndTestState { @@ -41,7 +43,7 @@ class UnifiedPushMatrixGatewayTestTest { @Test fun `test UnifiedPushMatrixGatewayTest no config found`() = runTest { val sut = createUnifiedPushMatrixGatewayTest( - currentUserPushConfig = null, + config = null, discoveryResponse = matrixDiscoveryResponse, ) sut.runAndTestState { @@ -55,7 +57,7 @@ class UnifiedPushMatrixGatewayTestTest { @Test fun `test UnifiedPushMatrixGatewayTest not valid gateway`() = runTest { val sut = createUnifiedPushMatrixGatewayTest( - currentUserPushConfig = aCurrentUserPushConfig(), + config = aSessionPushConfig(), discoveryResponse = invalidDiscoveryResponse, ) sut.runAndTestState { @@ -72,7 +74,7 @@ class UnifiedPushMatrixGatewayTestTest { @Test fun `test UnifiedPushMatrixGatewayTest network error`() = runTest { val sut = createUnifiedPushMatrixGatewayTest( - currentUserPushConfig = aCurrentUserPushConfig(), + config = aSessionPushConfig(), discoveryResponse = { error("Network error") }, ) sut.runAndTestState { @@ -91,14 +93,16 @@ class UnifiedPushMatrixGatewayTestTest { } private fun TestScope.createUnifiedPushMatrixGatewayTest( - currentUserPushConfig: CurrentUserPushConfig? = null, + sessionId: SessionId = A_SESSION_ID, + config: Config? = null, discoveryResponse: () -> DiscoveryResponse = matrixDiscoveryResponse, ): UnifiedPushMatrixGatewayTest { return UnifiedPushMatrixGatewayTest( + sessionId = sessionId, unifiedPushApiFactory = FakeUnifiedPushApiFactory(discoveryResponse), coroutineDispatchers = testCoroutineDispatchers(), - unifiedPushCurrentUserPushConfigProvider = FakeUnifiedPushCurrentUserPushConfigProvider( - currentUserPushConfig = { currentUserPushConfig } + unifiedPushSessionPushConfigProvider = FakeUnifiedPushSessionPushConfigProvider( + config = { config } ), ) } From 17e69974c769785a3a36134666e1ebdea1fb1ef8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 15:39:23 +0200 Subject: [PATCH 181/898] Cleanup --- libraries/pushstore/impl/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/pushstore/impl/build.gradle.kts b/libraries/pushstore/impl/build.gradle.kts index ea45836d1f..7af786dc55 100644 --- a/libraries/pushstore/impl/build.gradle.kts +++ b/libraries/pushstore/impl/build.gradle.kts @@ -35,7 +35,6 @@ dependencies { testCommonDependencies(libs) testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.preferences.test) - testImplementation(projects.services.appnavstate.test) testImplementation(projects.libraries.pushstore.test) androidTestImplementation(libs.coroutines.test) From 296b85eb2f16d01a21d94ed3b861ebdfe74fd0c5 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 16:11:26 +0200 Subject: [PATCH 182/898] design(home): rename RomListTopBar to HomeTopBar --- .../android/features/home/impl/HomeView.kt | 4 ++-- .../{RoomListTopBar.kt => HomeTopBar.kt} | 18 +++++++++--------- .../tests/konsist/KonsistPreviewTest.kt | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) rename features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/{RoomListTopBar.kt => HomeTopBar.kt} (97%) 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 563f9c86c4..2b407bb49b 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 @@ -41,7 +41,7 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.home.impl.components.RoomListContentView import io.element.android.features.home.impl.components.RoomListMenuAction -import io.element.android.features.home.impl.components.RoomListTopBar +import io.element.android.features.home.impl.components.HomeTopBar import io.element.android.features.home.impl.model.RoomListRoomSummary import io.element.android.features.home.impl.roomlist.RoomListContextMenu import io.element.android.features.home.impl.roomlist.RoomListDeclineInviteMenu @@ -158,7 +158,7 @@ private fun HomeScaffold( Scaffold( modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { - RoomListTopBar( + HomeTopBar( title = stringResource(state.currentHomeNavigationBarItem.labelRes), currentUserAndNeighbors = state.currentUserAndNeighbors, showAvatarIndicator = state.showAvatarIndicator, diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListTopBar.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt similarity index 97% rename from features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListTopBar.kt rename to features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt index abd6e7892d..f2a712ef66 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListTopBar.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt @@ -76,7 +76,7 @@ import kotlinx.collections.immutable.toImmutableList @OptIn(ExperimentalMaterial3Api::class) @Composable -fun RoomListTopBar( +fun HomeTopBar( title: String, currentUserAndNeighbors: ImmutableList, showAvatarIndicator: Boolean, @@ -92,7 +92,7 @@ fun RoomListTopBar( canReportBug: Boolean, modifier: Modifier = Modifier, ) { - DefaultRoomListTopBar( + DefaultHomeTopBar( title = title, currentUserAndNeighbors = currentUserAndNeighbors, showAvatarIndicator = showAvatarIndicator, @@ -112,7 +112,7 @@ fun RoomListTopBar( @OptIn(ExperimentalMaterial3Api::class) @Composable -private fun DefaultRoomListTopBar( +private fun DefaultHomeTopBar( title: String, currentUserAndNeighbors: ImmutableList, showAvatarIndicator: Boolean, @@ -329,8 +329,8 @@ private fun AccountIcon( @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultRoomListTopBarPreview() = ElementPreview { - DefaultRoomListTopBar( +internal fun DefaultHomeTopBarPreview() = ElementPreview { + DefaultHomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = persistentListOf(MatrixUser(UserId("@id:domain"), "Alice")), showAvatarIndicator = false, @@ -350,8 +350,8 @@ internal fun DefaultRoomListTopBarPreview() = ElementPreview { @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultRoomListTopBarWithIndicatorPreview() = ElementPreview { - DefaultRoomListTopBar( +internal fun DefaultHomeTopBarWithIndicatorPreview() = ElementPreview { + DefaultHomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = persistentListOf(MatrixUser(UserId("@id:domain"), "Alice")), showAvatarIndicator = true, @@ -371,8 +371,8 @@ internal fun DefaultRoomListTopBarWithIndicatorPreview() = ElementPreview { @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultRoomListTopBarMultiAccountPreview() = ElementPreview { - DefaultRoomListTopBar( +internal fun DefaultHomeTopBarMultiAccountPreview() = ElementPreview { + DefaultHomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = aMatrixUserList().take(3).toImmutableList(), showAvatarIndicator = false, diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index 8120e2ff2e..e027200bfc 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -81,8 +81,8 @@ class KonsistPreviewTest { "BackgroundVerticalGradientDisabledPreview", "BackgroundVerticalGradientPreview", "ColorAliasesPreview", - "DefaultRoomListTopBarMultiAccountPreview", - "DefaultRoomListTopBarWithIndicatorPreview", + "DefaultHomeTopBarMultiAccountPreview", + "DefaultHomeTopBarWithIndicatorPreview", "FocusedEventPreview", "GradientFloatingActionButtonCircleShapePreview", "HeaderFooterPageScrollablePreview", From 0498c3e4eddfea886d8c6f3f86f9d23ac60dda80 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 16:16:08 +0200 Subject: [PATCH 183/898] design(home): makes HomeTopBar match design --- .../home/impl/components/HomeTopBar.kt | 205 ++++++++---------- 1 file changed, 87 insertions(+), 118 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt index f2a712ef66..e40c24cddc 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt @@ -10,14 +10,13 @@ package io.element.android.features.home.impl.components import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.pager.VerticalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.material3.rememberTopAppBarState @@ -32,7 +31,6 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.heading @@ -52,12 +50,8 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.modifiers.backgroundVerticalGradient import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.text.applyScaleDown -import io.element.android.libraries.designsystem.text.toSp -import io.element.android.libraries.designsystem.theme.aliasScreenTitle import io.element.android.libraries.designsystem.theme.components.DropdownMenu import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem -import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.MediumTopAppBar @@ -128,128 +122,103 @@ private fun DefaultHomeTopBar( canReportBug: Boolean, modifier: Modifier = Modifier, ) { - val collapsedFraction = scrollBehavior.state.collapsedFraction - Box(modifier = modifier) { - val collapsedTitleTextStyle = ElementTheme.typography.aliasScreenTitle - val expandedTitleTextStyle = ElementTheme.typography.fontHeadingLgBold.copy( - // Due to a limitation of MediumTopAppBar, and to avoid the text to be truncated, - // ensure that the font size will never be bigger than 28.dp. - fontSize = 28.dp.applyScaleDown().toSp() - ) - MaterialTheme( - colorScheme = ElementTheme.materialColors, - shapes = MaterialTheme.shapes, - typography = ElementTheme.materialTypography.copy( - headlineSmall = expandedTitleTextStyle, - titleLarge = collapsedTitleTextStyle + Column(modifier) { + TopAppBar( + modifier = Modifier + .backgroundVerticalGradient( + isVisible = !areSearchResultsDisplayed, + ) + .statusBarsPadding(), + colors = TopAppBarDefaults.topAppBarColors( + containerColor = Color.Transparent, + scrolledContainerColor = Color.Transparent, ), - ) { - Column { - MediumTopAppBar( - modifier = Modifier - .backgroundVerticalGradient( - isVisible = !areSearchResultsDisplayed, - ) - .statusBarsPadding(), - colors = TopAppBarDefaults.mediumTopAppBarColors( - containerColor = Color.Transparent, - scrolledContainerColor = Color.Transparent, - ), - title = { - Text( - modifier = Modifier.semantics { - heading() - }, - text = title, - ) + title = { + Text( + modifier = Modifier.semantics { + heading() }, - navigationIcon = { - NavigationIcon( - currentUserAndNeighbors = currentUserAndNeighbors, - showAvatarIndicator = showAvatarIndicator, - onAccountSwitch = onAccountSwitch, - onClick = onOpenSettings, + text = title, + ) + }, + navigationIcon = { + NavigationIcon( + currentUserAndNeighbors = currentUserAndNeighbors, + showAvatarIndicator = showAvatarIndicator, + onAccountSwitch = onAccountSwitch, + onClick = onOpenSettings, + ) + }, + actions = { + if (displayMenuItems) { + IconButton( + onClick = onSearchClick, + ) { + Icon( + imageVector = CompoundIcons.Search(), + contentDescription = stringResource(CommonStrings.action_search), ) - }, - actions = { - if (displayMenuItems) { - IconButton( - onClick = onSearchClick, - ) { - Icon( - imageVector = CompoundIcons.Search(), - contentDescription = stringResource(CommonStrings.action_search), + } + if (RoomListConfig.HAS_DROP_DOWN_MENU) { + var showMenu by remember { mutableStateOf(false) } + IconButton( + onClick = { showMenu = !showMenu } + ) { + Icon( + imageVector = CompoundIcons.OverflowVertical(), + contentDescription = null, + ) + } + DropdownMenu( + expanded = showMenu, + onDismissRequest = { showMenu = false } + ) { + if (RoomListConfig.SHOW_INVITE_MENU_ITEM) { + DropdownMenuItem( + onClick = { + showMenu = false + onMenuActionClick(RoomListMenuAction.InviteFriends) + }, + text = { Text(stringResource(id = CommonStrings.action_invite)) }, + leadingIcon = { + Icon( + imageVector = CompoundIcons.ShareAndroid(), + tint = ElementTheme.colors.iconSecondary, + contentDescription = null, + ) + } ) } - if (RoomListConfig.HAS_DROP_DOWN_MENU) { - var showMenu by remember { mutableStateOf(false) } - IconButton( - onClick = { showMenu = !showMenu } - ) { - Icon( - imageVector = CompoundIcons.OverflowVertical(), - contentDescription = null, - ) - } - DropdownMenu( - expanded = showMenu, - onDismissRequest = { showMenu = false } - ) { - if (RoomListConfig.SHOW_INVITE_MENU_ITEM) { - DropdownMenuItem( - onClick = { - showMenu = false - onMenuActionClick(RoomListMenuAction.InviteFriends) - }, - text = { Text(stringResource(id = CommonStrings.action_invite)) }, - leadingIcon = { - Icon( - imageVector = CompoundIcons.ShareAndroid(), - tint = ElementTheme.colors.iconSecondary, - contentDescription = null, - ) - } + if (RoomListConfig.SHOW_REPORT_PROBLEM_MENU_ITEM && canReportBug) { + DropdownMenuItem( + onClick = { + showMenu = false + onMenuActionClick(RoomListMenuAction.ReportBug) + }, + text = { Text(stringResource(id = CommonStrings.common_report_a_problem)) }, + leadingIcon = { + Icon( + imageVector = CompoundIcons.ChatProblem(), + tint = ElementTheme.colors.iconSecondary, + contentDescription = null, ) } - if (RoomListConfig.SHOW_REPORT_PROBLEM_MENU_ITEM && canReportBug) { - DropdownMenuItem( - onClick = { - showMenu = false - onMenuActionClick(RoomListMenuAction.ReportBug) - }, - text = { Text(stringResource(id = CommonStrings.common_report_a_problem)) }, - leadingIcon = { - Icon( - imageVector = CompoundIcons.ChatProblem(), - tint = ElementTheme.colors.iconSecondary, - contentDescription = null, - ) - } - ) - } - } + ) } } - }, - scrollBehavior = scrollBehavior, - windowInsets = WindowInsets(0.dp), - ) - if (displayFilters) { - RoomListFiltersView( - state = filtersState, - modifier = Modifier.padding(bottom = 16.dp) - ) + } } - } - } - - HorizontalDivider( - modifier = Modifier - .fillMaxWidth() - .alpha(collapsedFraction) - .align(Alignment.BottomCenter), - color = ElementTheme.materialColors.outlineVariant, + }, + scrollBehavior = scrollBehavior, + // We need a 16dp left padding : 4dp default padding + 8dp IconButton padding + 4dp extra padding + windowInsets = WindowInsets(4.dp), ) + if (displayFilters) { + RoomListFiltersView( + state = filtersState, + modifier = Modifier.padding(bottom = 16.dp) + ) + } } } From 44e125dbc7e00de96d0475301036c7281847efbe Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:20:15 +0200 Subject: [PATCH 184/898] Add parameter `wasLastSession` to `SessionListener.onSessionDeleted` --- .../android/features/invite/impl/DefaultSeenInvitesStore.kt | 2 +- .../features/lockscreen/impl/DefaultLockScreenService.kt | 2 +- .../android/libraries/matrix/ui/media/ImageLoaderHolder.kt | 2 +- .../impl/store/DefaultSessionPreferencesStoreFactory.kt | 2 +- .../element/android/libraries/push/impl/DefaultPushService.kt | 2 +- .../conversations/DefaultNotificationConversationService.kt | 2 +- .../android/libraries/push/impl/DefaultPushServiceTest.kt | 4 ++-- .../libraries/sessionstorage/api/observer/SessionListener.kt | 2 +- .../sessionstorage/impl/observer/DefaultSessionObserver.kt | 3 ++- .../sessionstorage/impl/observer/TestSessionListener.kt | 2 +- .../sessionstorage/test/observer/FakeSessionObserver.kt | 2 +- .../services/analytics/impl/DefaultAnalyticsService.kt | 2 +- .../services/analytics/impl/DefaultAnalyticsServiceTest.kt | 2 +- 13 files changed, 15 insertions(+), 14 deletions(-) diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt index 38295daa27..5a8a9116d5 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt @@ -34,7 +34,7 @@ class DefaultSeenInvitesStore( init { sessionObserver.addListener(object : SessionListener { override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { if (sessionId.value == userId) { clear() } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt index 8995eee65a..03ac11e086 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt @@ -79,7 +79,7 @@ class DefaultLockScreenService( sessionObserver.addListener(object : SessionListener { override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { // TODO handle multi session at some point pinCodeManager.deletePinCode() } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt index 16cb3cca18..77d3abffef 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt @@ -37,7 +37,7 @@ class DefaultImageLoaderHolder( sessionObserver.addListener(object : SessionListener { override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { remove(SessionId(userId)) } }) diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt index fefbd84104..07df852208 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt @@ -31,7 +31,7 @@ class DefaultSessionPreferencesStoreFactory( init { sessionObserver.addListener(object : SessionListener { override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { val sessionPreferences = cache.remove(SessionId(userId)) sessionPreferences?.clear() } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index c92e512a71..8e8874d6ea 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -119,7 +119,7 @@ class DefaultPushService( * The current push provider may want to take action, and we need to * cleanup the stores. */ - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { val sessionId = SessionId(userId) val userPushStore = userPushStoreFactory.getOrCreate(sessionId) val currentPushProviderName = userPushStore.getPushProviderName() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt index f61487c571..43824c88ae 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt @@ -61,7 +61,7 @@ class DefaultNotificationConversationService( sessionObserver.addListener(object : SessionListener { override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { onSessionLogOut(SessionId(userId)) } }) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt index 5ae8ab261e..dffd7d4846 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/DefaultPushServiceTest.kt @@ -248,7 +248,7 @@ class DefaultPushServiceTest { ), pushClientSecretStore = pushClientSecretStore, ) - defaultPushService.onSessionDeleted(A_SESSION_ID.value) + defaultPushService.onSessionDeleted(A_SESSION_ID.value, false) assertThat(userPushStore.getPushProviderName()).isNull() assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull() onSessionDeletedLambda.assertions().isCalledOnce().with(value(A_SESSION_ID)) @@ -268,7 +268,7 @@ class DefaultPushServiceTest { ), pushClientSecretStore = pushClientSecretStore, ) - defaultPushService.onSessionDeleted(A_SESSION_ID.value) + defaultPushService.onSessionDeleted(A_SESSION_ID.value, false) assertThat(userPushStore.getPushProviderName()).isNull() assertThat(pushClientSecretStore.getSecret(A_SESSION_ID)).isNull() } diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt index b0db9fa4bc..6066ffd09b 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt @@ -9,5 +9,5 @@ package io.element.android.libraries.sessionstorage.api.observer interface SessionListener { suspend fun onSessionCreated(userId: String) - suspend fun onSessionDeleted(userId: String) + suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) } diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt index 71a63db82d..be2e5c9eaa 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserver.kt @@ -60,9 +60,10 @@ class DefaultSessionObserver( // Compute diff // Removed user val removedUsers = currentUserSet - newUserSet + val wasLastSession = newUserSet.isEmpty() removedUsers.forEach { removedUser -> listeners.onEach { listener -> - listener.onSessionDeleted(removedUser) + listener.onSessionDeleted(removedUser, wasLastSession) } } // Added user diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt index 91ae519538..b08c7ffa6e 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt @@ -22,7 +22,7 @@ class TestSessionListener : SessionListener { trackRecord.add(Event.Created(userId)) } - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { trackRecord.add(Event.Deleted(userId)) } diff --git a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt index 817046517a..ef11f5d2d3 100644 --- a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt +++ b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt @@ -29,6 +29,6 @@ class FakeSessionObserver : SessionObserver { } suspend fun onSessionDeleted(userId: String) { - listeners.forEach { it.onSessionDeleted(userId) } + listeners.forEach { it.onSessionDeleted(userId, false) } } } diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt index 7d06f762e5..dc6b32ef7d 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt @@ -79,7 +79,7 @@ class DefaultAnalyticsService( // Nothing to do } - override suspend fun onSessionDeleted(userId: String) { + override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { // Delete the store when the last session is deleted if (sessionStore.getAllSessions().isEmpty()) { analyticsStore.reset() diff --git a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt index 1e5a54fb26..61950d122e 100644 --- a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt +++ b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt @@ -178,7 +178,7 @@ class DefaultAnalyticsServiceTest { coroutineScope = backgroundScope, analyticsStore = store, ) - sut.onSessionDeleted("userId") + sut.onSessionDeleted("userId", false) resetLambda.assertions().isCalledOnce() } From eb2b52723638e4b405a39241dc83da6847444623 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 16:41:43 +0200 Subject: [PATCH 185/898] design(home) : use enterAlwaysScrollBehavior for the RoomListFiltersView --- .../android/features/home/impl/HomeState.kt | 1 + .../android/features/home/impl/HomeView.kt | 5 +- .../home/impl/components/HomeTopBar.kt | 94 +++++++------------ .../TopAppBarScrollBehaviorLayout.kt | 54 +++++++++++ 4 files changed, 90 insertions(+), 64 deletions(-) create mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/TopAppBarScrollBehaviorLayout.kt diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt index fdaf01e9aa..b81cf79db1 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt @@ -32,5 +32,6 @@ data class HomeState( val eventSink: (HomeEvents) -> Unit, ) { val displayActions = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats + val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters val showNavigationBar = isSpaceFeatureEnabled && homeSpacesState.spaceRooms.isNotEmpty() } 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 2b407bb49b..32afbaf284 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 @@ -25,6 +25,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalLayoutDirection @@ -143,7 +144,7 @@ private fun HomeScaffold( } val appBarState = rememberTopAppBarState() - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(appBarState) + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(appBarState) val snackbarHostState = rememberSnackbarHostState(snackbarMessage = state.snackbarMessage) val roomListState: RoomListState = state.roomListState @@ -171,7 +172,7 @@ private fun HomeScaffold( }, scrollBehavior = scrollBehavior, displayMenuItems = state.displayActions, - displayFilters = roomListState.displayFilters && state.currentHomeNavigationBarItem == HomeNavigationBarItem.Chats, + displayFilters = state.displayRoomListFilters, filtersState = roomListState.filtersState, canReportBug = state.canReportBug, modifier = if (state.isSpaceFeatureEnabled) { diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt index e40c24cddc..b936d90da8 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.pager.VerticalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.material3.rememberTopAppBarState @@ -44,18 +43,20 @@ import io.element.android.features.home.impl.filters.RoomListFiltersState import io.element.android.features.home.impl.filters.RoomListFiltersView import io.element.android.features.home.impl.filters.aRoomListFiltersState import io.element.android.libraries.designsystem.atomic.atoms.RedIndicatorAtom +import io.element.android.libraries.designsystem.components.TopAppBarScrollBehaviorLayout import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.modifiers.backgroundVerticalGradient import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.aliasScreenTitle import io.element.android.libraries.designsystem.theme.components.DropdownMenu import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton -import io.element.android.libraries.designsystem.theme.components.MediumTopAppBar import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.user.MatrixUser @@ -81,45 +82,9 @@ fun HomeTopBar( onAccountSwitch: (SessionId) -> Unit, scrollBehavior: TopAppBarScrollBehavior, displayMenuItems: Boolean, + canReportBug: Boolean, displayFilters: Boolean, filtersState: RoomListFiltersState, - canReportBug: Boolean, - modifier: Modifier = Modifier, -) { - DefaultHomeTopBar( - title = title, - currentUserAndNeighbors = currentUserAndNeighbors, - showAvatarIndicator = showAvatarIndicator, - areSearchResultsDisplayed = areSearchResultsDisplayed, - onOpenSettings = onOpenSettings, - onAccountSwitch = onAccountSwitch, - onSearchClick = onToggleSearch, - onMenuActionClick = onMenuActionClick, - scrollBehavior = scrollBehavior, - displayMenuItems = displayMenuItems, - displayFilters = displayFilters, - filtersState = filtersState, - canReportBug = canReportBug, - modifier = modifier, - ) -} - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -private fun DefaultHomeTopBar( - title: String, - currentUserAndNeighbors: ImmutableList, - showAvatarIndicator: Boolean, - areSearchResultsDisplayed: Boolean, - scrollBehavior: TopAppBarScrollBehavior, - onOpenSettings: () -> Unit, - onAccountSwitch: (SessionId) -> Unit, - onSearchClick: () -> Unit, - onMenuActionClick: (RoomListMenuAction) -> Unit, - displayMenuItems: Boolean, - displayFilters: Boolean, - filtersState: RoomListFiltersState, - canReportBug: Boolean, modifier: Modifier = Modifier, ) { Column(modifier) { @@ -138,6 +103,7 @@ private fun DefaultHomeTopBar( modifier = Modifier.semantics { heading() }, + style = ElementTheme.typography.aliasScreenTitle, text = title, ) }, @@ -152,7 +118,7 @@ private fun DefaultHomeTopBar( actions = { if (displayMenuItems) { IconButton( - onClick = onSearchClick, + onClick = onToggleSearch, ) { Icon( imageVector = CompoundIcons.Search(), @@ -209,15 +175,17 @@ private fun DefaultHomeTopBar( } } }, - scrollBehavior = scrollBehavior, + //scrollBehavior = scrollBehavior, // We need a 16dp left padding : 4dp default padding + 8dp IconButton padding + 4dp extra padding - windowInsets = WindowInsets(4.dp), + windowInsets = WindowInsets(left = 4.dp), ) if (displayFilters) { - RoomListFiltersView( - state = filtersState, - modifier = Modifier.padding(bottom = 16.dp) - ) + TopAppBarScrollBehaviorLayout(scrollBehavior = scrollBehavior) { + RoomListFiltersView( + state = filtersState, + modifier = Modifier.padding(bottom = 16.dp) + ) + } } } } @@ -270,9 +238,11 @@ private fun AccountIcon( isCurrentAccount: Boolean, showAvatarIndicator: Boolean, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { + val testTag = if (isCurrentAccount) Modifier.testTag(TestTags.homeScreenSettings) else Modifier IconButton( - modifier = if (isCurrentAccount) Modifier.testTag(TestTags.homeScreenSettings) else Modifier, + modifier = modifier.then(testTag), onClick = onClick, ) { Box { @@ -298,20 +268,20 @@ private fun AccountIcon( @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultHomeTopBarPreview() = ElementPreview { - DefaultHomeTopBar( +internal fun HomeTopBarPreview() = ElementPreview { + HomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = persistentListOf(MatrixUser(UserId("@id:domain"), "Alice")), showAvatarIndicator = false, areSearchResultsDisplayed = false, - scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()), + scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()), onOpenSettings = {}, onAccountSwitch = {}, - onSearchClick = {}, + onToggleSearch = {}, displayMenuItems = true, + canReportBug = true, displayFilters = true, filtersState = aRoomListFiltersState(), - canReportBug = true, onMenuActionClick = {}, ) } @@ -319,20 +289,20 @@ internal fun DefaultHomeTopBarPreview() = ElementPreview { @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultHomeTopBarWithIndicatorPreview() = ElementPreview { - DefaultHomeTopBar( +internal fun HomeTopBarWithIndicatorPreview() = ElementPreview { + HomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = persistentListOf(MatrixUser(UserId("@id:domain"), "Alice")), showAvatarIndicator = true, areSearchResultsDisplayed = false, - scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()), + scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()), onOpenSettings = {}, onAccountSwitch = {}, - onSearchClick = {}, + onToggleSearch = {}, displayMenuItems = true, + canReportBug = true, displayFilters = true, filtersState = aRoomListFiltersState(), - canReportBug = true, onMenuActionClick = {}, ) } @@ -340,20 +310,20 @@ internal fun DefaultHomeTopBarWithIndicatorPreview() = ElementPreview { @OptIn(ExperimentalMaterial3Api::class) @PreviewsDayNight @Composable -internal fun DefaultHomeTopBarMultiAccountPreview() = ElementPreview { - DefaultHomeTopBar( +internal fun HomeTopBarMultiAccountPreview() = ElementPreview { + HomeTopBar( title = stringResource(R.string.screen_roomlist_main_space_title), currentUserAndNeighbors = aMatrixUserList().take(3).toImmutableList(), showAvatarIndicator = false, areSearchResultsDisplayed = false, - scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()), + scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()), onOpenSettings = {}, onAccountSwitch = {}, - onSearchClick = {}, + onToggleSearch = {}, displayMenuItems = true, + canReportBug = true, displayFilters = true, filtersState = aRoomListFiltersState(), - canReportBug = true, onMenuActionClick = {}, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/TopAppBarScrollBehaviorLayout.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/TopAppBarScrollBehaviorLayout.kt new file mode 100644 index 0000000000..f4c62ca974 --- /dev/null +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/TopAppBarScrollBehaviorLayout.kt @@ -0,0 +1,54 @@ +/* + * 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.designsystem.components + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Surface +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.UiComposable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.Layout +import io.element.android.compound.theme.ElementTheme + +/** + * A layout that measures its content to set the height offset limit of a [TopAppBarScrollBehavior]. + * It places the content according to the current height offset of the scroll behavior. + * + */ +@ExperimentalMaterial3Api +@Composable +fun TopAppBarScrollBehaviorLayout( + scrollBehavior: TopAppBarScrollBehavior, + modifier: Modifier = Modifier, + backgroundColor: Color = ElementTheme.colors.bgCanvasDefault, + contentColor: Color = contentColorFor(backgroundColor), + content: @Composable @UiComposable () -> Unit, +) { + Surface( + modifier = modifier, + color = backgroundColor, + contentColor = contentColor + ) { + Layout( + content = content, + measurePolicy = { measurables, constraints -> + val placeable = measurables.first().measure(constraints) + val contentHeight = placeable.height.toFloat() + scrollBehavior.state.heightOffsetLimit = -contentHeight + val heightOffset = scrollBehavior.state.heightOffset + val layoutHeight = (contentHeight + heightOffset).toInt() + layout(placeable.width, layoutHeight) { + placeable.place(0, heightOffset.toInt()) + } + } + ) + } +} From 66d8e6210d2d522f777631a44ddb4b86e324f7db Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:23:01 +0200 Subject: [PATCH 186/898] Add default implementation to `SessionListener` --- .../android/features/invite/impl/DefaultSeenInvitesStore.kt | 1 - .../features/lockscreen/impl/DefaultLockScreenService.kt | 2 -- .../android/libraries/matrix/ui/media/ImageLoaderHolder.kt | 2 -- .../impl/store/DefaultSessionPreferencesStoreFactory.kt | 1 - .../element/android/libraries/push/impl/DefaultPushService.kt | 4 ---- .../conversations/DefaultNotificationConversationService.kt | 2 -- .../libraries/sessionstorage/api/observer/SessionListener.kt | 4 ++-- .../services/analytics/impl/DefaultAnalyticsService.kt | 4 ---- 8 files changed, 2 insertions(+), 18 deletions(-) diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt index 5a8a9116d5..c358cbf36f 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/DefaultSeenInvitesStore.kt @@ -33,7 +33,6 @@ class DefaultSeenInvitesStore( ) : SeenInvitesStore { init { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { if (sessionId.value == userId) { clear() diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt index 03ac11e086..ffdb4e67ff 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt @@ -77,8 +77,6 @@ class DefaultLockScreenService( */ private fun observeSessionsState() { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { // TODO handle multi session at some point pinCodeManager.deletePinCode() diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt index 77d3abffef..12cc099eee 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt @@ -35,8 +35,6 @@ class DefaultImageLoaderHolder( private fun observeSessions() { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { remove(SessionId(userId)) } diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt index 07df852208..e2e8c2088a 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultSessionPreferencesStoreFactory.kt @@ -30,7 +30,6 @@ class DefaultSessionPreferencesStoreFactory( init { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { val sessionPreferences = cache.remove(SessionId(userId)) sessionPreferences?.clear() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt index 8e8874d6ea..f872754827 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/DefaultPushService.kt @@ -108,10 +108,6 @@ class DefaultPushService( sessionObserver.addListener(this) } - override suspend fun onSessionCreated(userId: String) { - // Nothing to do - } - /** * The session has been deleted. * In this case, this is not necessary to unregister the pusher from the homeserver, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt index 43824c88ae..ea282caa6d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt @@ -59,8 +59,6 @@ class DefaultNotificationConversationService( init { sessionObserver.addListener(object : SessionListener { - override suspend fun onSessionCreated(userId: String) = Unit - override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { onSessionLogOut(SessionId(userId)) } diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt index 6066ffd09b..fa6226a5ec 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt @@ -8,6 +8,6 @@ package io.element.android.libraries.sessionstorage.api.observer interface SessionListener { - suspend fun onSessionCreated(userId: String) - suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) + suspend fun onSessionCreated(userId: String) = Unit + suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) = Unit } diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt index dc6b32ef7d..656373b3a6 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt @@ -75,10 +75,6 @@ class DefaultAnalyticsService( analyticsStore.setAnalyticsId(analyticsId) } - override suspend fun onSessionCreated(userId: String) { - // Nothing to do - } - override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { // Delete the store when the last session is deleted if (sessionStore.getAllSessions().isEmpty()) { From 2d1b4b1ede6c72dcdb9b9c403a1738826fe12a57 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:32:19 +0200 Subject: [PATCH 187/898] Rename fixture fun for clarity. --- .../sessionstorage/impl/DatabaseSessionStoreTest.kt | 2 +- .../android/libraries/sessionstorage/impl/Fixtures.kt | 2 +- .../impl/observer/DefaultSessionObserverTest.kt | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt index 7d264f42db..d1fef8a39a 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt @@ -24,7 +24,7 @@ class DatabaseSessionStoreTest { private lateinit var database: SessionDatabase private lateinit var databaseSessionStore: DatabaseSessionStore - private val aSessionData = aSessionData() + private val aSessionData = aDbSessionData() @OptIn(ExperimentalCoroutinesApi::class) @Before diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt index e8713dac1a..165a91b5b5 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.sessionstorage.impl import io.element.android.libraries.matrix.session.SessionData import io.element.android.libraries.sessionstorage.api.LoginType -internal fun aSessionData() = SessionData( +internal fun aDbSessionData() = SessionData( userId = "userId", deviceId = "deviceId", accessToken = "accessToken", diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt index 8b0184fdc7..f833f146a4 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt @@ -11,7 +11,7 @@ import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.sessionstorage.impl.DatabaseSessionStore import io.element.android.libraries.sessionstorage.impl.SessionDatabase -import io.element.android.libraries.sessionstorage.impl.aSessionData +import io.element.android.libraries.sessionstorage.impl.aDbSessionData import io.element.android.libraries.sessionstorage.impl.toApiModel import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -46,7 +46,7 @@ import org.junit.Test @Test fun `adding data invokes onSessionCreated`() = runTest { - val sessionData = aSessionData() + val sessionData = aDbSessionData() val sut = createDefaultSessionObserver() runCurrent() val listener = TestSessionListener() @@ -59,7 +59,7 @@ import org.junit.Test @Test fun `adding and deleting data invokes onSessionCreated and onSessionDeleted`() = runTest { - val sessionData = aSessionData() + val sessionData = aDbSessionData() val sut = createDefaultSessionObserver() runCurrent() val listener = TestSessionListener() From b8c7e16c503675954f3049c719bab7b4545ec151 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:37:16 +0200 Subject: [PATCH 188/898] Add test on `wasLastSession` value. --- .../libraries/sessionstorage/impl/Fixtures.kt | 6 +++-- .../observer/DefaultSessionObserverTest.kt | 26 +++++++++++++++++-- .../impl/observer/TestSessionListener.kt | 4 +-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt index 165a91b5b5..2fd9900bdf 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/Fixtures.kt @@ -10,8 +10,10 @@ package io.element.android.libraries.sessionstorage.impl import io.element.android.libraries.matrix.session.SessionData import io.element.android.libraries.sessionstorage.api.LoginType -internal fun aDbSessionData() = SessionData( - userId = "userId", +internal fun aDbSessionData( + userId: String = "userId", +) = SessionData( + userId = userId, deviceId = "deviceId", accessToken = "accessToken", refreshToken = "refreshToken", diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt index f833f146a4..e9910cbe77 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt @@ -23,7 +23,8 @@ import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test -@OptIn(ExperimentalCoroutinesApi::class) class DefaultSessionObserverTest { +@OptIn(ExperimentalCoroutinesApi::class) +class DefaultSessionObserverTest { private lateinit var database: SessionDatabase private lateinit var databaseSessionStore: DatabaseSessionStore @@ -69,7 +70,28 @@ import org.junit.Test databaseSessionStore.removeSession(sessionData.userId) listener.assertEvents( TestSessionListener.Event.Created(sessionData.userId), - TestSessionListener.Event.Deleted(sessionData.userId), + TestSessionListener.Event.Deleted(sessionData.userId, true), + ) + coroutineContext.cancelChildren() + } + + @Test + fun `adding and deleting data twice invokes onSessionCreated and onSessionDeleted`() = runTest { + val sessionData1 = aDbSessionData(userId = "user1") + val sessionData2 = aDbSessionData(userId = "user2") + val sut = createDefaultSessionObserver() + runCurrent() + val listener = TestSessionListener() + sut.addListener(listener) + databaseSessionStore.addSession(sessionData1.toApiModel()) + databaseSessionStore.addSession(sessionData2.toApiModel()) + databaseSessionStore.removeSession(sessionData2.userId) + databaseSessionStore.removeSession(sessionData1.userId) + listener.assertEvents( + TestSessionListener.Event.Created(sessionData1.userId), + TestSessionListener.Event.Created(sessionData2.userId), + TestSessionListener.Event.Deleted(sessionData2.userId, wasLastSession = false), + TestSessionListener.Event.Deleted(sessionData1.userId, wasLastSession = true), ) coroutineContext.cancelChildren() } diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt index b08c7ffa6e..87bebf63b5 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/TestSessionListener.kt @@ -13,7 +13,7 @@ import io.element.android.libraries.sessionstorage.api.observer.SessionListener class TestSessionListener : SessionListener { sealed interface Event { data class Created(val userId: String) : Event - data class Deleted(val userId: String) : Event + data class Deleted(val userId: String, val wasLastSession: Boolean) : Event } private val trackRecord: MutableList = mutableListOf() @@ -23,7 +23,7 @@ class TestSessionListener : SessionListener { } override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { - trackRecord.add(Event.Deleted(userId)) + trackRecord.add(Event.Deleted(userId, wasLastSession)) } fun assertEvents(vararg events: Event) { From fdc64e9be73e10a693ed94b339c793f8e295a720 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:38:30 +0200 Subject: [PATCH 189/898] Use TestScope.backgroundScope --- .../impl/observer/DefaultSessionObserverTest.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt index e9910cbe77..a2ed815b88 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/observer/DefaultSessionObserverTest.kt @@ -15,7 +15,6 @@ import io.element.android.libraries.sessionstorage.impl.aDbSessionData import io.element.android.libraries.sessionstorage.impl.toApiModel import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.cancelChildren import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runCurrent @@ -55,7 +54,6 @@ class DefaultSessionObserverTest { databaseSessionStore.addSession(sessionData.toApiModel()) listener.assertEvents(TestSessionListener.Event.Created(sessionData.userId)) sut.removeListener(listener) - coroutineContext.cancelChildren() } @Test @@ -72,7 +70,6 @@ class DefaultSessionObserverTest { TestSessionListener.Event.Created(sessionData.userId), TestSessionListener.Event.Deleted(sessionData.userId, true), ) - coroutineContext.cancelChildren() } @Test @@ -93,13 +90,12 @@ class DefaultSessionObserverTest { TestSessionListener.Event.Deleted(sessionData2.userId, wasLastSession = false), TestSessionListener.Event.Deleted(sessionData1.userId, wasLastSession = true), ) - coroutineContext.cancelChildren() } private fun TestScope.createDefaultSessionObserver(): DefaultSessionObserver { return DefaultSessionObserver( sessionStore = databaseSessionStore, - coroutineScope = this, + coroutineScope = backgroundScope, dispatchers = testCoroutineDispatchers(useUnconfinedTestDispatcher = true), ) } From dae44ccab70d80b927129c345824dff3130a45db Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:44:14 +0200 Subject: [PATCH 190/898] Use parameter `wasLastSession` --- .../analytics/impl/DefaultAnalyticsService.kt | 4 +--- .../impl/DefaultAnalyticsServiceTest.kt | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt index 656373b3a6..f7f92e25ce 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsService.kt @@ -16,7 +16,6 @@ import im.vector.app.features.analytics.itf.VectorAnalyticsScreen import im.vector.app.features.analytics.plan.SuperProperties import im.vector.app.features.analytics.plan.UserProperties import io.element.android.libraries.di.annotations.AppCoroutineScope -import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.observer.SessionListener import io.element.android.libraries.sessionstorage.api.observer.SessionObserver import io.element.android.services.analytics.api.AnalyticsService @@ -39,7 +38,6 @@ class DefaultAnalyticsService( @AppCoroutineScope private val coroutineScope: CoroutineScope, private val sessionObserver: SessionObserver, - private val sessionStore: SessionStore, ) : AnalyticsService, SessionListener { // Cache for the store values private val userConsent = AtomicBoolean(false) @@ -77,7 +75,7 @@ class DefaultAnalyticsService( override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { // Delete the store when the last session is deleted - if (sessionStore.getAllSessions().isEmpty()) { + if (wasLastSession) { analyticsStore.reset() } } diff --git a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt index 61950d122e..c2594feaa4 100644 --- a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt +++ b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultAnalyticsServiceTest.kt @@ -16,9 +16,7 @@ import im.vector.app.features.analytics.plan.MobileScreen import im.vector.app.features.analytics.plan.PollEnd import im.vector.app.features.analytics.plan.SuperProperties import im.vector.app.features.analytics.plan.UserProperties -import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.api.observer.SessionObserver -import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.libraries.sessionstorage.test.observer.NoOpSessionObserver import io.element.android.services.analytics.impl.store.AnalyticsStore import io.element.android.services.analytics.impl.store.FakeAnalyticsStore @@ -178,10 +176,24 @@ class DefaultAnalyticsServiceTest { coroutineScope = backgroundScope, analyticsStore = store, ) - sut.onSessionDeleted("userId", false) + sut.onSessionDeleted("userId", true) resetLambda.assertions().isCalledOnce() } + @Test + fun `when a session is deleted, the store is not reset if it was not the last session`() = runTest { + val resetLambda = lambdaRecorder { } + val store = FakeAnalyticsStore( + resetLambda = resetLambda, + ) + val sut = createDefaultAnalyticsService( + coroutineScope = backgroundScope, + analyticsStore = store, + ) + sut.onSessionDeleted("userId", false) + resetLambda.assertions().isNeverCalled() + } + @Test fun `when a session is added, nothing happen`() = runTest { val sut = createDefaultAnalyticsService( @@ -260,13 +272,11 @@ class DefaultAnalyticsServiceTest { ), analyticsStore: AnalyticsStore = FakeAnalyticsStore(), sessionObserver: SessionObserver = NoOpSessionObserver(), - sessionStore: SessionStore = InMemorySessionStore(), ) = DefaultAnalyticsService( analyticsProviders = analyticsProviders, analyticsStore = analyticsStore, coroutineScope = coroutineScope, sessionObserver = sessionObserver, - sessionStore = sessionStore, ).also { // Wait for the service to be ready delay(1) From eee53d8bbffbf233d48521422486e6898bf5021e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:46:33 +0200 Subject: [PATCH 191/898] Delete the PIN code only when the last session is deleted. --- .../features/lockscreen/impl/DefaultLockScreenService.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt index ffdb4e67ff..77e190b64d 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenService.kt @@ -73,13 +73,14 @@ class DefaultLockScreenService( } /** - * Makes sure to delete the pin code when the session is deleted. + * Makes sure to delete the pin code when the last session is deleted. */ private fun observeSessionsState() { sessionObserver.addListener(object : SessionListener { override suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) { - // TODO handle multi session at some point - pinCodeManager.deletePinCode() + if (wasLastSession) { + pinCodeManager.deletePinCode() + } } }) } From e427d8851e9dbf9d9f8c577b7cef6334632786b1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 16:52:24 +0200 Subject: [PATCH 192/898] Remove dead code. --- .../android/features/lockscreen/api/LockScreenService.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenService.kt b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenService.kt index 4919442e28..987bd75166 100644 --- a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenService.kt +++ b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenService.kt @@ -35,12 +35,6 @@ interface LockScreenService { fun isPinSetup(): Flow } -/** - * Check if the app is currently locked. - */ -val LockScreenService.isLocked: Boolean - get() = lockState.value == LockScreenLockState.Locked - /** * Makes sure the secure flag is set on the activity if the pin is setup. * @param activity the activity to set the flag on. From a5b4f503343ec5fb38004ba0ab109ef6317737ff Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 17:00:40 +0200 Subject: [PATCH 193/898] design(home) : allow scrolling to top when clicking on already selected tab --- .../android/features/home/impl/HomeView.kt | 97 +++++++++++++------ .../impl/components/RoomListContentView.kt | 8 +- .../home/impl/spaces/HomeSpacesView.kt | 9 +- 3 files changed, 81 insertions(+), 33 deletions(-) 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 32afbaf284..69e9e2d0bd 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 @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.calculateStartPadding import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarState @@ -25,7 +26,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalLayoutDirection @@ -40,9 +40,9 @@ import dev.chrisbanes.haze.materials.HazeMaterials import dev.chrisbanes.haze.rememberHazeState import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.features.home.impl.components.HomeTopBar import io.element.android.features.home.impl.components.RoomListContentView import io.element.android.features.home.impl.components.RoomListMenuAction -import io.element.android.features.home.impl.components.HomeTopBar import io.element.android.features.home.impl.model.RoomListRoomSummary import io.element.android.features.home.impl.roomlist.RoomListContextMenu import io.element.android.features.home.impl.roomlist.RoomListDeclineInviteMenu @@ -63,6 +63,7 @@ import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.utils.snackbar.SnackbarHost import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbarHostState import io.element.android.libraries.matrix.api.core.RoomId +import kotlinx.coroutines.launch @Composable fun HomeView( @@ -155,6 +156,8 @@ private fun HomeScaffold( } val hazeState = rememberHazeState() + val roomsLazyListState = rememberLazyListState() + val spacesLazyListState = rememberLazyListState() Scaffold( modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection), @@ -181,41 +184,39 @@ private fun HomeScaffold( style = HazeMaterials.thick(), ) } else { - Modifier - .background(ElementTheme.colors.bgCanvasDefault) + Modifier.background(ElementTheme.colors.bgCanvasDefault) } ) }, bottomBar = { if (state.showNavigationBar) { - NavigationBar( - containerColor = Color.Transparent, - modifier = Modifier - .hazeEffect( - state = hazeState, - style = HazeMaterials.thick(), - ) - ) { - HomeNavigationBarItem.entries.forEach { item -> - val isSelected = state.currentHomeNavigationBarItem == item - NavigationBarItem( - selected = isSelected, - onClick = { - state.eventSink(HomeEvents.SelectHomeNavigationBarItem(item)) - }, - icon = { - NavigationBarIcon( - imageVector = item.icon(isSelected), - ) - }, - label = { - NavigationBarText( - text = stringResource(item.labelRes), - ) + val coroutineScope = rememberCoroutineScope() + HomeBottomBar( + currentHomeNavigationBarItem = state.currentHomeNavigationBarItem, + onItemClick = { item -> + // scroll to top if selecting the same item + if (item == state.currentHomeNavigationBarItem) { + val lazyListStateTarget = when (item) { + HomeNavigationBarItem.Chats -> roomsLazyListState + HomeNavigationBarItem.Spaces -> spacesLazyListState } - ) - } - } + coroutineScope.launch { + if (lazyListStateTarget.firstVisibleItemIndex > 10) { + lazyListStateTarget.scrollToItem(10) + } + // Also reset the scrollBehavior height offset as it's not triggered by programmatic scrolls + scrollBehavior.state.heightOffset = 0f + lazyListStateTarget.animateScrollToItem(0) + } + } else { + state.eventSink(HomeEvents.SelectHomeNavigationBarItem(item)) + } + }, + modifier = Modifier.hazeEffect( + state = hazeState, + style = HazeMaterials.thick(), + ) + ) } }, content = { padding -> @@ -224,6 +225,7 @@ private fun HomeScaffold( RoomListContentView( contentState = roomListState.contentState, filtersState = roomListState.filtersState, + lazyListState = roomsLazyListState, hideInvitesAvatars = roomListState.hideInvitesAvatars, eventSink = roomListState.eventSink, onSetUpRecoveryClick = onSetUpRecoveryClick, @@ -261,6 +263,7 @@ private fun HomeScaffold( .consumeWindowInsets(padding) .hazeSource(state = hazeState), state = state.homeSpacesState, + lazyListState = spacesLazyListState, onSpaceClick = { spaceId -> onRoomClick(spaceId) } @@ -284,6 +287,38 @@ private fun HomeScaffold( ) } +@Composable +private fun HomeBottomBar( + currentHomeNavigationBarItem: HomeNavigationBarItem, + onItemClick: (HomeNavigationBarItem) -> Unit, + modifier: Modifier = Modifier, +) { + NavigationBar( + containerColor = Color.Transparent, + modifier = modifier + ) { + HomeNavigationBarItem.entries.forEach { item -> + val isSelected = currentHomeNavigationBarItem == item + NavigationBarItem( + selected = isSelected, + onClick = { + onItemClick(item) + }, + icon = { + NavigationBarIcon( + imageVector = item.icon(isSelected), + ) + }, + label = { + NavigationBarText( + text = stringResource(item.labelRes), + ) + } + ) + } + } +} + internal fun RoomListRoomSummary.contentType() = displayType.ordinal @PreviewsDayNight diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListContentView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListContentView.kt index 34d036b204..4546849112 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListContentView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/RoomListContentView.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable @@ -60,6 +61,7 @@ import kotlinx.collections.immutable.ImmutableList fun RoomListContentView( contentState: RoomListContentState, filtersState: RoomListFiltersState, + lazyListState: LazyListState, hideInvitesAvatars: Boolean, eventSink: (RoomListEvents) -> Unit, onSetUpRecoveryClick: () -> Unit, @@ -97,6 +99,7 @@ fun RoomListContentView( onSetUpRecoveryClick = onSetUpRecoveryClick, onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = onRoomClick, + lazyListState = lazyListState, contentPadding = contentPadding, ) } @@ -176,6 +179,7 @@ private fun RoomsView( onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, contentPadding: PaddingValues, + lazyListState: LazyListState, modifier: Modifier = Modifier, ) { if (state.summaries.isEmpty() && filtersState.hasAnyFilterSelected) { @@ -192,6 +196,7 @@ private fun RoomsView( onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = onRoomClick, contentPadding = contentPadding, + lazyListState = lazyListState, modifier = modifier.fillMaxSize(), ) } @@ -206,9 +211,9 @@ private fun RoomsViewList( onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, contentPadding: PaddingValues, + lazyListState: LazyListState, modifier: Modifier = Modifier, ) { - val lazyListState = rememberLazyListState() val visibleRange by remember { derivedStateOf { val layoutInfo = lazyListState.layoutInfo @@ -343,6 +348,7 @@ internal fun RoomListContentViewPreview(@PreviewParameter(RoomListContentStatePr onConfirmRecoveryKeyClick = {}, onRoomClick = {}, onCreateRoomClick = {}, + lazyListState = rememberLazyListState(), contentPadding = PaddingValues(0.dp), ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt index 66e5403b35..bc1f474956 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt @@ -8,6 +8,8 @@ package io.element.android.features.home.impl.spaces import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter @@ -26,10 +28,14 @@ import kotlinx.collections.immutable.toImmutableList @Composable fun HomeSpacesView( state: HomeSpacesState, + lazyListState: LazyListState, onSpaceClick: (RoomId) -> Unit, modifier: Modifier = Modifier, ) { - LazyColumn(modifier) { + LazyColumn( + modifier = modifier, + state = lazyListState + ) { val space = state.space when (space) { CurrentSpace.Root -> { @@ -77,6 +83,7 @@ internal fun HomeSpacesViewPreview( ) = ElementPreview { HomeSpacesView( state = state, + lazyListState = rememberLazyListState(), onSpaceClick = {}, modifier = Modifier, ) From bc8db88a0387563a9473a0043f1590f8604d8e78 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 17:12:11 +0200 Subject: [PATCH 194/898] Add unit test on DefaultLockScreenService --- .../impl/DefaultLockScreenServiceTest.kt | 95 +++++++++++++++++++ .../impl/pin/DefaultPinCodeManagerTest.kt | 21 +++- .../test/observer/FakeSessionObserver.kt | 4 +- 3 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenServiceTest.kt diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenServiceTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenServiceTest.kt new file mode 100644 index 0000000000..4672a82bf4 --- /dev/null +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenServiceTest.kt @@ -0,0 +1,95 @@ +/* + * 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.lockscreen.impl + +import app.cash.turbine.test +import com.google.common.truth.Truth.assertThat +import io.element.android.features.lockscreen.impl.biometric.BiometricAuthenticatorManager +import io.element.android.features.lockscreen.impl.biometric.FakeBiometricAuthenticatorManager +import io.element.android.features.lockscreen.impl.fixtures.aLockScreenConfig +import io.element.android.features.lockscreen.impl.pin.PinCodeManager +import io.element.android.features.lockscreen.impl.pin.createDefaultPinCodeManager +import io.element.android.features.lockscreen.impl.pin.storage.InMemoryLockScreenStore +import io.element.android.features.lockscreen.impl.storage.LockScreenStore +import io.element.android.libraries.sessionstorage.api.observer.SessionObserver +import io.element.android.libraries.sessionstorage.test.observer.FakeSessionObserver +import io.element.android.services.appnavstate.api.AppForegroundStateService +import io.element.android.services.appnavstate.test.FakeAppForegroundStateService +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class DefaultLockScreenServiceTest { + @Test + fun `when the pin is not mandatory and no pin is configured isSetupRequired emits false`() = runTest { + val sut = createDefaultLockScreenService( + lockScreenConfig = aLockScreenConfig(isPinMandatory = false) + ) + sut.isSetupRequired().test { + assertThat(awaitItem()).isFalse() + } + } + + @Test + fun `when the pin is mandatory, isSetupRequired emits true`() = runTest { + val lockScreenStore = InMemoryLockScreenStore() + val sut = createDefaultLockScreenService( + lockScreenConfig = aLockScreenConfig(isPinMandatory = true), + lockScreenStore = lockScreenStore, + ) + sut.isSetupRequired().test { + assertThat(awaitItem()).isTrue() + // When the user configures the pin code, the setup is not required anymore + lockScreenStore.saveEncryptedPinCode("encryptedCode") + assertThat(awaitItem()).isFalse() + // Users deletes the pin code + lockScreenStore.deleteEncryptedPinCode() + assertThat(awaitItem()).isTrue() + } + } + + @Test + fun `when the last session is deleted, the pin code is removed`() = runTest { + val sessionObserver = FakeSessionObserver() + val lockScreenStore = InMemoryLockScreenStore() + val sut = createDefaultLockScreenService( + lockScreenConfig = aLockScreenConfig(isPinMandatory = true), + lockScreenStore = lockScreenStore, + sessionObserver = sessionObserver, + ) + sut.isPinSetup().test { + assertThat(awaitItem()).isFalse() + // When the user configure the pin code, the setup is not required anymore + lockScreenStore.saveEncryptedPinCode("encryptedCode") + assertThat(awaitItem()).isTrue() + sessionObserver.onSessionDeleted("userId", wasLastSession = false) + expectNoEvents() + sessionObserver.onSessionDeleted("userId", wasLastSession = true) + assertThat(awaitItem()).isFalse() + } + } +} + +private fun TestScope.createDefaultLockScreenService( + lockScreenConfig: LockScreenConfig = aLockScreenConfig(), + lockScreenStore: LockScreenStore = InMemoryLockScreenStore(), + pinCodeManager: PinCodeManager = createDefaultPinCodeManager( + lockScreenStore = lockScreenStore, + ), + sessionObserver: SessionObserver = FakeSessionObserver(), + appForegroundStateService: AppForegroundStateService = FakeAppForegroundStateService(), + biometricAuthenticatorManager: BiometricAuthenticatorManager = FakeBiometricAuthenticatorManager(), +) = DefaultLockScreenService( + lockScreenConfig = lockScreenConfig, + lockScreenStore = lockScreenStore, + pinCodeManager = pinCodeManager, + coroutineScope = backgroundScope, + sessionObserver = sessionObserver, + appForegroundStateService = appForegroundStateService, + biometricAuthenticatorManager = biometricAuthenticatorManager, +) diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt index ed942c45b9..5c29c7ecea 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/pin/DefaultPinCodeManagerTest.kt @@ -10,19 +10,18 @@ package io.element.android.features.lockscreen.impl.pin import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.lockscreen.impl.pin.storage.InMemoryLockScreenStore +import io.element.android.features.lockscreen.impl.storage.LockScreenStore +import io.element.android.libraries.cryptography.api.EncryptionDecryptionService +import io.element.android.libraries.cryptography.api.SecretKeyRepository import io.element.android.libraries.cryptography.impl.AESEncryptionDecryptionService import io.element.android.libraries.cryptography.test.SimpleSecretKeyRepository import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultPinCodeManagerTest { - private val lockScreenStore = InMemoryLockScreenStore() - private val secretKeyRepository = SimpleSecretKeyRepository() - private val encryptionDecryptionService = AESEncryptionDecryptionService() - private val pinCodeManager = DefaultPinCodeManager(secretKeyRepository, encryptionDecryptionService, lockScreenStore) - @Test fun `given a pin code when create and delete assert no pin code left`() = runTest { + val pinCodeManager = createDefaultPinCodeManager() pinCodeManager.hasPinCode().test { assertThat(awaitItem()).isFalse() pinCodeManager.createPinCode("1234") @@ -34,6 +33,7 @@ class DefaultPinCodeManagerTest { @Test fun `given a pin code when create and verify with the same pin succeed`() = runTest { + val pinCodeManager = createDefaultPinCodeManager() val pinCode = "1234" pinCodeManager.createPinCode(pinCode) assertThat(pinCodeManager.verifyPinCode(pinCode)).isTrue() @@ -41,7 +41,18 @@ class DefaultPinCodeManagerTest { @Test fun `given a pin code when create and verify with a different pin fails`() = runTest { + val pinCodeManager = createDefaultPinCodeManager() pinCodeManager.createPinCode("1234") assertThat(pinCodeManager.verifyPinCode("1235")).isFalse() } } + +fun createDefaultPinCodeManager( + lockScreenStore: LockScreenStore = InMemoryLockScreenStore(), + secretKeyRepository: SecretKeyRepository = SimpleSecretKeyRepository(), + encryptionDecryptionService: EncryptionDecryptionService = AESEncryptionDecryptionService(), +) = DefaultPinCodeManager( + lockScreenStore = lockScreenStore, + secretKeyRepository = secretKeyRepository, + encryptionDecryptionService = encryptionDecryptionService, +) diff --git a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt index ef11f5d2d3..eb34a713bb 100644 --- a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt +++ b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/observer/FakeSessionObserver.kt @@ -28,7 +28,7 @@ class FakeSessionObserver : SessionObserver { listeners.forEach { it.onSessionCreated(userId) } } - suspend fun onSessionDeleted(userId: String) { - listeners.forEach { it.onSessionDeleted(userId, false) } + suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean = true) { + listeners.forEach { it.onSessionDeleted(userId, wasLastSession = wasLastSession) } } } From 05d5ec78bb539a8e564249549fd3c0e0790079e8 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 17:22:39 +0200 Subject: [PATCH 195/898] design(home) : clean up --- .../android/features/home/impl/components/HomeTopBar.kt | 1 - .../io/element/android/tests/konsist/KonsistPreviewTest.kt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt index b936d90da8..e0b0f4c505 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt @@ -175,7 +175,6 @@ fun HomeTopBar( } } }, - //scrollBehavior = scrollBehavior, // We need a 16dp left padding : 4dp default padding + 8dp IconButton padding + 4dp extra padding windowInsets = WindowInsets(left = 4.dp), ) diff --git a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt index e027200bfc..4af88c93cd 100644 --- a/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt +++ b/tests/konsist/src/test/kotlin/io/element/android/tests/konsist/KonsistPreviewTest.kt @@ -81,11 +81,11 @@ class KonsistPreviewTest { "BackgroundVerticalGradientDisabledPreview", "BackgroundVerticalGradientPreview", "ColorAliasesPreview", - "DefaultHomeTopBarMultiAccountPreview", - "DefaultHomeTopBarWithIndicatorPreview", "FocusedEventPreview", "GradientFloatingActionButtonCircleShapePreview", "HeaderFooterPageScrollablePreview", + "HomeTopBarMultiAccountPreview", + "HomeTopBarWithIndicatorPreview", "IconsOtherPreview", "MarkdownTextComposerEditPreview", "MatrixBadgeAtomInfoPreview", From 5b4e5f68d18bb1d216ee67a4ab02587204ba80b5 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Thu, 23 Oct 2025 15:38:44 +0000 Subject: [PATCH 196/898] Update screenshots --- ....components_DefaultRoomListTopBarMultiAccount_Day_0_en.png | 3 --- ...omponents_DefaultRoomListTopBarMultiAccount_Night_0_en.png | 3 --- ...components_DefaultRoomListTopBarWithIndicator_Day_0_en.png | 3 --- ...mponents_DefaultRoomListTopBarWithIndicator_Night_0_en.png | 3 --- ...es.home.impl.components_DefaultRoomListTopBar_Day_0_en.png | 3 --- ....home.impl.components_DefaultRoomListTopBar_Night_0_en.png | 3 --- ...s.home.impl.components_HomeTopBarMultiAccount_Day_0_en.png | 3 +++ ...home.impl.components_HomeTopBarMultiAccount_Night_0_en.png | 3 +++ ....home.impl.components_HomeTopBarWithIndicator_Day_0_en.png | 3 +++ ...ome.impl.components_HomeTopBarWithIndicator_Night_0_en.png | 3 +++ .../features.home.impl.components_HomeTopBar_Day_0_en.png | 3 +++ .../features.home.impl.components_HomeTopBar_Night_0_en.png | 3 +++ .../snapshots/images/features.home.impl_HomeViewA11y_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_0_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_10_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_11_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_13_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_14_en.png | 4 ++-- .../images/features.home.impl_HomeView_Day_15_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_2_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_3_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_4_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_5_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_6_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_7_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_8_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_9_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_0_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_10_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_11_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_13_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_14_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_15_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_1_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_2_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_3_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_4_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_5_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_6_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_7_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_8_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_9_en.png | 4 ++-- 43 files changed, 80 insertions(+), 80 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png deleted file mode 100644 index 15ab073e13..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9595d23fae3fb23bf1a893744c3e28f99b163091d374dabd65d24dbde69af6c -size 25617 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png deleted file mode 100644 index 90f15ceeb4..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd357c3f6b143b3dcc4f8a23cd0c8e34b801709630a2c31406b4563e928f64ed -size 22757 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png deleted file mode 100644 index b8f5d9ceaf..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9b7f028749ba909fbeb0c8c2a81ccc6337b3f9c7a8af20e5492c938b1ac8d7a -size 25962 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png deleted file mode 100644 index c40bee2a47..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13b6b3cd99a2561e5116c5dd9950fdb1db61cf3a5a83014c67900bc455f0b53c -size 23171 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png deleted file mode 100644 index 30af422f38..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c8add737c25478dc3be8fc638661fb03be922702136d4ae83bfcfca4287e5c1 -size 25709 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png deleted file mode 100644 index 0a5780528e..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.components_DefaultRoomListTopBar_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b330c24f0a118665aa3f6eb68b2573deed4167cd3ddbbbe08eed8ddc27c639d -size 22814 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Day_0_en.png new file mode 100644 index 0000000000..ea9abe74c0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6992a2fbaebed88e22c58e393d086bbcba50afd822ac869b9e27dc68ed3a493e +size 22007 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Night_0_en.png new file mode 100644 index 0000000000..e3f6f0ea4e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarMultiAccount_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a87f2231268e26e06e62aada18c4c62e8ee53e1eb1ddc538f8c7e98881acbc +size 20256 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Day_0_en.png new file mode 100644 index 0000000000..93b29cd67f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fdbe7e7ab22f44cc60a04582d5a5159055d4af3af0d3d2a7cd012f48abd9592 +size 22443 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Night_0_en.png new file mode 100644 index 0000000000..a796c3a10e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBarWithIndicator_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96942af60064898a853268f8aa8103f04a836332fef09fbfa83ad01cccae54d3 +size 20651 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Day_0_en.png new file mode 100644 index 0000000000..1df7a1d9ec --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e38f16c942bcfb31103b5e80d168a5425f181632ea4440a054aa4d0985bd335a +size 22106 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Night_0_en.png new file mode 100644 index 0000000000..ef2d6e3500 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.components_HomeTopBar_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:677c21f745e4b9c7984f6c8fe3f84a27fabe6aeaf5f8cac82bb5ac692bd6a797 +size 20308 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png index f12d71d438..e2340106b8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeViewA11y_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9d9c029f8aa66d921be752b3bd5c70d00aa80b8dc6fed343a4ab7b9be5a187f -size 125045 +oid sha256:a3530f2d4ba4b189c7e40c19548fe1d44fea844505ed411cd476eb41add5aac5 +size 122437 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png index ac59c14e46..c87b2327c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 -size 65098 +oid sha256:60f321d5352e1966b44e13b4b9e56da3f2cfd14e5eb4a468b61b1939799d364a +size 61182 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png index bcc68d581d..be60b0ceec 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:440881dfdccf466ac78d3486f05a16acf32c65cd9a926e51f9a03c8df153a996 -size 33572 +oid sha256:dd257b64d9e91bedebcf4552e8b93d357304954ad844b7f7d52bc76fc1543747 +size 29901 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png index 53d3ff1d11..95987c0cb2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e7a170db66cbdae26a12cba6d221264097733e09fb868974ce2f29dbf4f942d -size 28313 +oid sha256:4e3e455fbe6e3a10ec1578e01dc3f10c3b2b0688f99a1855319143c8fc7044a8 +size 25355 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png index b2a4beadee..7728b33306 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1e803f9818ffed85454a4d7c02d2b5fa63e9fc6280c521cddfd8253225ed790 -size 89858 +oid sha256:bf7d32047c608340c06edfb8ade3cc8b92858eaa763fedafa915c16439657fc2 +size 88205 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png index 5eae7fb73a..32cf426e12 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86eb0a74576e1023a0e79e2c42083efa0ab7e59f57688f431cdb825937106d03 -size 83133 +oid sha256:abf95575cbd55470c798accf988bc6a509daea71eded4108857595993873df4e +size 81038 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png index 62e6277f37..2eb8a41683 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d85ed502c37c8486c9b7e235ebb639bb7a6ddcdfec388b48ec1626ca45d7fd95 -size 51335 +oid sha256:c9e019924f41de0c16f1f403944b8fe390afa65d1ad604db3dd0baadbc30db5b +size 50953 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png index ac59c14e46..c87b2327c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 -size 65098 +oid sha256:60f321d5352e1966b44e13b4b9e56da3f2cfd14e5eb4a468b61b1939799d364a +size 61182 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png index ac59c14e46..c87b2327c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 -size 65098 +oid sha256:60f321d5352e1966b44e13b4b9e56da3f2cfd14e5eb4a468b61b1939799d364a +size 61182 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png index c1a812a036..b14e265de2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3df1fc44ef9b4c71349aefaa06a09583b25b5baa2765c572fde2579d543c7dc8 -size 62134 +oid sha256:93b7d7b0d7df69921015ece40ae3ab859c81cd3e78828143f660a481a72b73e2 +size 62305 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png index 71958573f2..5c7dae4a0e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08f1583ccded2046d10fd19890bcc70b9fedf0efe310318a6a6209bded37b423 -size 52241 +oid sha256:ef2b3724cdd28175824554f800019fa663be341f0854751b50321e9b73203b6a +size 54275 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png index ac59c14e46..c87b2327c8 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a249702f230f3dc0c9ee097fc11496df64c11436680e3f790d1fbf9051c4119 -size 65098 +oid sha256:60f321d5352e1966b44e13b4b9e56da3f2cfd14e5eb4a468b61b1939799d364a +size 61182 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png index 829d5fb8ea..e1b311a970 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e609fcb03b38d2265b91f6cccbd91092b050c34f979116a20e1d2f72c9fb7d9c -size 52933 +oid sha256:6bb7a5a23947cd3a311c8d9526508c121beb4e0ee37f337bf8361845be10d172 +size 54415 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png index d42fa336b1..1e79e25769 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58536ac6068bce6399048fb5a082791ce4d2d74dc9e39d96e6483c818067a3b1 -size 52741 +oid sha256:11e9f28e6131eae66e268b72daab6d404d1f1f8b0eba78eb11d4376284eb11e3 +size 54220 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png index 31c77b66df..09aa1a9b42 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5eb9e2d9245b31509ecd22351cc11b6d5fe27dcad76ab1eab36d692cf0fed2b -size 50942 +oid sha256:26bfe68b4448aa83e19f196d8633eeb74883064db319aab355a5e755b7cbb56d +size 52439 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png index 2b7d7164d1..4c31f1f2ee 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6c524b3c587eea43d5d753757fe42434ee751709559851ec9e0ca283c6f2236 -size 82960 +oid sha256:196cad6f5c3d01d52c88713526848d7905b59b49866f27f6e420df0b6b8f9e73 +size 80857 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png index 56b6111cb7..2366c44bf9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 -size 60213 +oid sha256:7e9b4b3247cf2f540866286de61760a45956d8179891aeb669b4763bdd29393d +size 57993 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png index 4fe6a4ff29..19f76b695e 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_10_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c065e34ccdcb98cf347177057029fb052986e680eb3a0ce0d3ba1110f893a6ed -size 29213 +oid sha256:496855b1b3186adcad8b35895ee51776dce00a8d3229b8dccac4d6e4482bdaff +size 26577 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png index 47ddffda1a..7c3b6e1552 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aeecc6082c03bbb7fc3d5d2cff9c145fa6b1b2da253fc5d9d7df4b3b49705f67 -size 23513 +oid sha256:8b98678dc90bce52ab2293e5102794b4fc3b51fc667a6c061d771ea90212a0f2 +size 22034 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png index 393f5a9b3f..54fd5321eb 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_13_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3911b9f33b862f1fa47ac80420f1ded92d8c7c304a0b0af8c7132033eca63da1 -size 84486 +oid sha256:a7ff4652d94dec6bc98b3f1dea0d182576c7bfc72e39f232d224046e6492b55e +size 83764 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png index f06871dfc0..766b356208 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_14_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58917137b3500639edcd3308f665cb9111450bf0c34fe07880076f43725ae145 -size 78202 +oid sha256:cb1d9b5143703ec9a8035e11374c7e56ce4d3f836005632a109e5556b141c59b +size 77098 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png index ce3dbb3c5d..8a3822d03c 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_15_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82748aa6dee71f50a9a1eaa1f34e2966126c4b13c4dc2a2a53c5588f8ba83f50 -size 46455 +oid sha256:8f0e5430bcd399d5a39c3d92e7551243f0e15bc315f9ec6ded43829d4672308c +size 47186 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png index 56b6111cb7..2366c44bf9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 -size 60213 +oid sha256:7e9b4b3247cf2f540866286de61760a45956d8179891aeb669b4763bdd29393d +size 57993 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png index 56b6111cb7..2366c44bf9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 -size 60213 +oid sha256:7e9b4b3247cf2f540866286de61760a45956d8179891aeb669b4763bdd29393d +size 57993 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png index 92e4d51300..044c2a9fbc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:494864f07f4ca2ef426f611842f580fa6d2c5d04c61385acd649e50ee49e9405 -size 58119 +oid sha256:a8db3006e7ea4826022d47a4ae37dab2a7ddd064d4cc2c48b44deca0f158541c +size 59301 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png index e9a3aa0e6e..00edb13227 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3d89f2829ddb05c63da3f4afcadf55e70a8c70b7df46d0e04eba35932fe947d -size 49455 +oid sha256:1b6fc1c78e05737b3231172b2b72b532b769ae9928ddd6674a864bee56566f6e +size 52623 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png index 56b6111cb7..2366c44bf9 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea48147772f8fa99aca0345a5a98f8d2ea6fd26793edab55f7d920a7e3f56414 -size 60213 +oid sha256:7e9b4b3247cf2f540866286de61760a45956d8179891aeb669b4763bdd29393d +size 57993 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png index 6560e328e2..442eba42bc 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0493d1a09ba7d41e0ef0b66ef4068528af281cfaa9f7187d64d17316ca97d2fd -size 50038 +oid sha256:957b8712456f13d83857616e2ffab05c5d60f50e6b39037bb47af0d272c53b02 +size 51863 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png index 1985857a9b..34ae9c102a 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4215bf2ac9870ec1d6f3832adc8e8bfd2ce4d1ab2c1ef5584a0a934e880969be -size 49887 +oid sha256:beac305c3cc0661633873276a99798b1fa693342bd4ab9424bc44759a1f745ec +size 51695 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png index 779db27242..54c43af536 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9977db4bcc333f7fa0f662e8cc73170fe96a90bcb545f5471cb6e107f159f943 -size 48083 +oid sha256:aba9a16cabbe67f28512721740e268bebd93b3084efd93e8de7eed251fd1ffe0 +size 49849 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png index 77001db565..fdfec064e2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_9_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21cbfa635df606c3fa17345a1ad1055e47f2265b059cb10580dfc464c694870e -size 78085 +oid sha256:101d0425024c30f2dce8b6d91ed2416fc115c4bf3719fd6c46093705ba4ef772 +size 76985 From 2de115d57b1551b2fa27b6c1633eab050e33b2d6 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 18:00:33 +0200 Subject: [PATCH 197/898] design(home) : better comment on padding --- .../android/features/home/impl/components/HomeTopBar.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt index e0b0f4c505..fc60ad063b 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/components/HomeTopBar.kt @@ -175,7 +175,10 @@ fun HomeTopBar( } } }, - // We need a 16dp left padding : 4dp default padding + 8dp IconButton padding + 4dp extra padding + // We want a 16dp left padding for the navigationIcon : + // 4dp from default TopAppBarHorizontalPadding + // 8dp from AccountIcon default padding (because of IconButton) + // 4dp extra padding using left insets windowInsets = WindowInsets(left = 4.dp), ) if (displayFilters) { From 5d1696b12252e8ccd4b327c34944879bc4d89669 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 Oct 2025 18:03:22 +0200 Subject: [PATCH 198/898] Fix detekt issue. --- .../libraries/sessionstorage/api/observer/SessionListener.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt index fa6226a5ec..0a5234f725 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/observer/SessionListener.kt @@ -8,6 +8,6 @@ package io.element.android.libraries.sessionstorage.api.observer interface SessionListener { - suspend fun onSessionCreated(userId: String) = Unit - suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) = Unit + suspend fun onSessionCreated(userId: String) {} + suspend fun onSessionDeleted(userId: String, wasLastSession: Boolean) {} } From 25a033d61ef25ebbbc82881aeea8429acad7d8fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 02:42:00 +0000 Subject: [PATCH 199/898] fix(deps): update dependencyanalysis to v3.3.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c048aa6fb0..65877ff4ab 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,7 +50,7 @@ telephoto = "0.18.0" haze = "1.6.10" # Dependency analysis -dependencyAnalysis = "3.2.0" +dependencyAnalysis = "3.3.0" # DI metro = "0.7.2" From 514f4d05415fad02543005ad98d34838652925b6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 09:07:32 +0200 Subject: [PATCH 200/898] Add missing test on NoopAnalyticsService --- services/analytics/noop/build.gradle.kts | 2 + .../noop/NoopAnalyticsServiceTest.kt | 67 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsServiceTest.kt diff --git a/services/analytics/noop/build.gradle.kts b/services/analytics/noop/build.gradle.kts index cd6d16d029..81f969ac2a 100644 --- a/services/analytics/noop/build.gradle.kts +++ b/services/analytics/noop/build.gradle.kts @@ -1,4 +1,5 @@ import extension.setupDependencyInjection +import extension.testCommonDependencies /* * Copyright 2023, 2024 New Vector Ltd. @@ -20,4 +21,5 @@ dependencies { implementation(projects.libraries.architecture) implementation(projects.libraries.di) api(projects.services.analytics.api) + testCommonDependencies(libs) } diff --git a/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsServiceTest.kt b/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsServiceTest.kt new file mode 100644 index 0000000000..d5bc10073a --- /dev/null +++ b/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopAnalyticsServiceTest.kt @@ -0,0 +1,67 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.services.analytics.noop + +import app.cash.turbine.test +import com.google.common.truth.Truth.assertThat +import im.vector.app.features.analytics.plan.CallStarted +import im.vector.app.features.analytics.plan.MobileScreen +import im.vector.app.features.analytics.plan.SuperProperties +import im.vector.app.features.analytics.plan.UserProperties +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class NoopAnalyticsServiceTest { + @Test + fun `getAvailableAnalyticsProviders returns emptySet`() { + val sut = NoopAnalyticsService() + assertThat(sut.getAvailableAnalyticsProviders()).isEmpty() + } + + @Test + fun `didAskUserConsentFlow emits only true`() = runTest { + val sut = NoopAnalyticsService() + sut.didAskUserConsentFlow.test { + assertThat(awaitItem()).isTrue() + awaitComplete() + } + } + + @Test + fun `analyticsIdFlow emits only empty string`() = runTest { + val sut = NoopAnalyticsService() + sut.analyticsIdFlow.test { + assertThat(awaitItem()).isEmpty() + sut.setAnalyticsId("anId") + awaitComplete() + } + } + + @Test + fun `userConsentFlow emits only false`() = runTest { + val sut = NoopAnalyticsService() + sut.userConsentFlow.test { + assertThat(awaitItem()).isFalse() + awaitComplete() + } + } + + @Test + fun `test no op methods`() = runTest { + val sut = NoopAnalyticsService() + sut.setUserConsent(false) + sut.setUserConsent(true) + sut.setDidAskUserConsent() + sut.setAnalyticsId("anId") + sut.capture(CallStarted(true, 1, true)) + sut.screen(MobileScreen(screenName = MobileScreen.ScreenName.RoomMembers)) + sut.updateUserProperties(UserProperties()) + sut.trackError(Exception("an_error")) + sut.updateSuperProperties(SuperProperties()) + } +} From 4fd860687f0d081811b620dbffb4c51ec519d2b6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 09:12:38 +0200 Subject: [PATCH 201/898] Add missing test on NoopScreenTracker --- .../analytics/noop/NoopScreenTrackerTest.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopScreenTrackerTest.kt diff --git a/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopScreenTrackerTest.kt b/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopScreenTrackerTest.kt new file mode 100644 index 0000000000..43b80f3e4b --- /dev/null +++ b/services/analytics/noop/src/test/kotlin/io/element/android/services/analytics/noop/NoopScreenTrackerTest.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.services.analytics.noop + +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.MobileScreen +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class NoopScreenTrackerTest { + @Test + fun `TrackScreen is no op`() = runTest { + val sut = NoopScreenTracker() + moleculeFlow(RecompositionMode.Immediate) { + sut.TrackScreen(MobileScreen.ScreenName.RoomMembers) + }.test { + assertThat(awaitItem()).isEqualTo(Unit) + } + } +} From 009ceb87046b2db058c186bcfbc6f73d41884290 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 24 Oct 2025 09:30:10 +0200 Subject: [PATCH 202/898] Clearing the room list search clears the search term too (#5603) --- .../features/home/impl/search/RoomListSearchView.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt index a506ab7176..fe6fab0fde 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchView.kt @@ -25,6 +25,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind @@ -33,7 +34,6 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -111,7 +111,11 @@ private fun RoomListSearchContent( }, navigationIcon = { BackButton(onClick = ::onBackButtonClick) }, title = { - var value by remember { mutableStateOf(TextFieldValue(state.query)) } + // TODO replace `state.query` with TextFieldState when it's available for M3 TextField + // The stateSaver will keep the selection state when returning to this UI + var value by rememberSaveable(stateSaver = TextFieldValue.Saver) { + mutableStateOf(TextFieldValue(state.query)) + } val focusRequester = remember { FocusRequester() } FilledTextField( @@ -137,6 +141,8 @@ private fun RoomListSearchContent( if (value.text.isNotEmpty()) { IconButton(onClick = { state.eventSink(RoomListSearchEvents.ClearQuery) + // Clear local state too + value = value.copy(text = "") }) { Icon( imageVector = CompoundIcons.Close(), @@ -148,7 +154,6 @@ private fun RoomListSearchContent( ) LaunchedEffect(Unit) { - value = value.copy(selection = TextRange(value.text.length)) if (!focusRequester.restoreFocusedChild()) { focusRequester.requestFocus() } From b1033c4bf60497626db3cfb2ddc81d3a196117ea Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 09:41:46 +0200 Subject: [PATCH 203/898] Add missing test on DefaultScreenTracker --- services/analytics/impl/build.gradle.kts | 2 + .../analytics/impl/DefaultScreenTracker.kt | 2 +- .../impl/DefaultScreenTrackerTest.kt | 61 +++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt diff --git a/services/analytics/impl/build.gradle.kts b/services/analytics/impl/build.gradle.kts index 83eebead5d..d50d4c6228 100644 --- a/services/analytics/impl/build.gradle.kts +++ b/services/analytics/impl/build.gradle.kts @@ -33,5 +33,7 @@ dependencies { testCommonDependencies(libs) testImplementation(projects.libraries.sessionStorage.test) + testImplementation(projects.services.analytics.test) testImplementation(projects.services.analyticsproviders.test) + testImplementation(projects.services.toolbox.test) } diff --git a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt index 46870ccf74..4bb09a65da 100644 --- a/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt +++ b/services/analytics/impl/src/main/kotlin/io/element/android/services/analytics/impl/DefaultScreenTracker.kt @@ -24,7 +24,7 @@ import io.element.android.services.toolbox.api.systemclock.SystemClock @ContributesBinding(AppScope::class) class DefaultScreenTracker( private val analyticsService: AnalyticsService, - private val systemClock: SystemClock + private val systemClock: SystemClock, ) : ScreenTracker { @Composable override fun TrackScreen( diff --git a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt new file mode 100644 index 0000000000..f5afffef28 --- /dev/null +++ b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt @@ -0,0 +1,61 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.services.analytics.impl + +import androidx.lifecycle.Lifecycle +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.MobileScreen +import io.element.android.services.analytics.api.AnalyticsService +import io.element.android.services.analytics.test.FakeAnalyticsService +import io.element.android.services.toolbox.api.systemclock.SystemClock +import io.element.android.services.toolbox.test.systemclock.FakeSystemClock +import io.element.android.tests.testutils.FakeLifecycleOwner +import io.element.android.tests.testutils.withFakeLifecycleOwner +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class DefaultScreenTrackerTest { + @Test + fun `TrackScreen is working as expected`() = runTest { + val analyticsService = FakeAnalyticsService() + val systemClock = FakeSystemClock(150) + val lifecycleOwner = FakeLifecycleOwner() + val sut = createDefaultScreenTracker( + analyticsService = analyticsService, + systemClock = systemClock, + ) + moleculeFlow(RecompositionMode.Immediate) { + withFakeLifecycleOwner(lifecycleOwner) { + sut.TrackScreen(MobileScreen.ScreenName.RoomMembers) + } + }.test { + // Screen resumes + lifecycleOwner.givenState(Lifecycle.State.RESUMED) + assertThat(awaitItem()).isEqualTo(Unit) + systemClock.epochMillisResult = 450 + lifecycleOwner.givenState((Lifecycle.State.DESTROYED)) + } + assertThat(analyticsService.screenEvents).containsExactly( + MobileScreen( + screenName = MobileScreen.ScreenName.RoomMembers, + durationMs = 300, + ) + ) + } +} + +private fun createDefaultScreenTracker( + analyticsService: AnalyticsService = FakeAnalyticsService(), + systemClock: SystemClock = FakeSystemClock(), +) = DefaultScreenTracker( + analyticsService = analyticsService, + systemClock = systemClock, +) From 712da7a94ddf1dcba1b50e16214cf1217b7c5c45 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 09:44:30 +0200 Subject: [PATCH 204/898] Cleanup and remove warning, this code is not reachable by production code. --- .../android/tests/testutils/WithFakeLifecycleOwner.kt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/WithFakeLifecycleOwner.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/WithFakeLifecycleOwner.kt index 16d4cfb2fd..20bc431033 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/WithFakeLifecycleOwner.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/WithFakeLifecycleOwner.kt @@ -12,8 +12,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.InternalComposeApi import androidx.compose.runtime.Stable import androidx.compose.runtime.currentComposer -import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry @@ -26,8 +24,6 @@ import io.element.android.libraries.architecture.Presenter /** * Composable that provides a fake [LifecycleOwner] to the composition. - * - * **WARNING: DO NOT USE OUTSIDE TESTS.** */ @OptIn(InternalComposeApi::class) @Stable @@ -44,19 +40,16 @@ fun withFakeLifecycleOwner( /** * Test a [Presenter] with a fake [LifecycleOwner]. - * - * **WARNING: DO NOT USE OUTSIDE TESTS.** */ suspend fun Presenter.testWithLifecycleOwner( lifecycleOwner: FakeLifecycleOwner = FakeLifecycleOwner(), block: suspend TurbineTestContext.() -> Unit ) { moleculeFlow(RecompositionMode.Immediate) { - val ret = withFakeLifecycleOwner(lifecycleOwner) { + withFakeLifecycleOwner(lifecycleOwner) { present() } - ret - }.test(validate = block) + }.test(validate = block) } @SuppressLint("VisibleForTests") From 948c68b1ad61adb02a35cdb942b947a2d925b345 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 09:47:04 +0200 Subject: [PATCH 205/898] Cleanup --- .../android/services/analytics/impl/DefaultScreenTrackerTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt index f5afffef28..78fa25f161 100644 --- a/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt +++ b/services/analytics/impl/src/test/kotlin/io/element/android/services/analytics/impl/DefaultScreenTrackerTest.kt @@ -41,7 +41,7 @@ class DefaultScreenTrackerTest { lifecycleOwner.givenState(Lifecycle.State.RESUMED) assertThat(awaitItem()).isEqualTo(Unit) systemClock.epochMillisResult = 450 - lifecycleOwner.givenState((Lifecycle.State.DESTROYED)) + lifecycleOwner.givenState(Lifecycle.State.DESTROYED) } assertThat(analyticsService.screenEvents).containsExactly( MobileScreen( From b01499c7ed8d6ef3a6967a260a58d39494a049ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 09:05:55 +0000 Subject: [PATCH 206/898] Update plugin sonarqube to v7.0.1.6134 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c048aa6fb0..70d8307266 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -258,7 +258,7 @@ roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } sqldelight = { id = "app.cash.sqldelight", version.ref = "sqldelight" } firebaseAppDistribution = { id = "com.google.firebase.appdistribution", version.ref = "firebaseAppDistribution" } knit = { id = "org.jetbrains.kotlinx.knit", version = "0.5.0" } -sonarqube = "org.sonarqube:7.0.0.6105" +sonarqube = "org.sonarqube:7.0.1.6134" licensee = "app.cash.licensee:1.14.1" compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } gms_google_services = { id = "com.google.gms.google-services", version = "4.4.4" } From d0c5abadbdae9bd3e1bcab05c6dbda7f81496db2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 13:22:00 +0200 Subject: [PATCH 207/898] Mark as read: use icon from compound --- .../factories/action/MarkAsReadActionFactory.kt | 3 ++- .../ic_material_done_all_white.png | Bin 398 -> 0 bytes 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100755 libraries/push/impl/src/main/res/drawable-xxhdpi/ic_material_done_all_white.png diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt index 1feaee7954..22e08ff550 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt @@ -14,6 +14,7 @@ import androidx.core.app.NotificationCompat import dev.zacsweers.metro.Inject import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri +import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds @@ -46,7 +47,7 @@ class MarkAsReadActionFactory( ) return NotificationCompat.Action.Builder( - R.drawable.ic_material_done_all_white, + CompoundDrawables.ic_compound_mark_as_read, stringProvider.getString(R.string.notification_room_action_mark_as_read), pendingIntent ) diff --git a/libraries/push/impl/src/main/res/drawable-xxhdpi/ic_material_done_all_white.png b/libraries/push/impl/src/main/res/drawable-xxhdpi/ic_material_done_all_white.png deleted file mode 100755 index 1f3132a3f2f1ef1d4f4683e148fd351eec398569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)hdV05a26EH^Do>3VzkAd1j7p1$9mlKEvS8<$lOjC~rtLv7=+%qJ9CEuV( zSEHe6nx<)*rU}Pk{Y6Ypiv{D#MVl4ZDLH_jM4J@=Hz_$@(l-a-HYLYN+TsB8Q*vOm zgChx2PEAhdcR54lDCd802Fm#nXRVyS!8x)xSu_qEUO1~9dvU}=qQ|CKOfAw=Y|bSgrDIE*M32wXV#(VVG#2;9V!lm^$_XYl#W;baVj;qDlIHu6 z#5f+3ad~;LNU~q_0Fv|rqZUc#y Date: Fri, 24 Oct 2025 13:23:59 +0200 Subject: [PATCH 208/898] Accept / reject invitation actions: use icons from compound --- .../action/AcceptInvitationActionFactory.kt | 4 ++-- .../action/RejectInvitationActionFactory.kt | 4 ++-- .../vector_notification_accept_invitation.png | Bin 473 -> 0 bytes .../vector_notification_reject_invitation.png | Bin 309 -> 0 bytes 4 files changed, 4 insertions(+), 4 deletions(-) delete mode 100755 libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_accept_invitation.png delete mode 100755 libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_reject_invitation.png diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt index 6e3fe95742..801ecbbc90 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt @@ -14,8 +14,8 @@ import androidx.core.app.NotificationCompat import dev.zacsweers.metro.Inject import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri +import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.di.annotations.ApplicationContext -import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent @@ -46,7 +46,7 @@ class AcceptInvitationActionFactory( PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) return NotificationCompat.Action.Builder( - R.drawable.vector_notification_accept_invitation, + CompoundDrawables.ic_compound_check, stringProvider.getString(CommonStrings.action_accept), pendingIntent ).build() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt index 73b3fc2fd9..fe33495387 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt @@ -14,8 +14,8 @@ import androidx.core.app.NotificationCompat import dev.zacsweers.metro.Inject import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri +import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.di.annotations.ApplicationContext -import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent @@ -46,7 +46,7 @@ class RejectInvitationActionFactory( PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) return NotificationCompat.Action.Builder( - R.drawable.vector_notification_reject_invitation, + CompoundDrawables.ic_compound_close, stringProvider.getString(CommonStrings.action_reject), pendingIntent ).build() diff --git a/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_accept_invitation.png b/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_accept_invitation.png deleted file mode 100755 index eb2be2518782887fc5a85e5e7458088b76b63198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmV;~0Ve*5P)n0!$1^!3wXZ3TqH33 zIbSAo5)cGI5ClOG+%o`F`=!Wvn3w@e&Ur+kL#WP#gl`PNp?PO?K-R}^Z7l9ts#c{;+-<8Y?QYL% ziW`;0IgxdWI7hOMiCgF59Lwqwx8|A~*1j5yrZ~ehFSRpH+png${phh9tc&y94YrB% z+`6kql~Uhd5>;_&2*2g3;=EU<8Yzf41q&7gL{u7si4;^EK@bE%5IXn)RHBsDDO{M4 P00000NkvXXu0mjf+Ct1x diff --git a/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_reject_invitation.png b/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_reject_invitation.png deleted file mode 100755 index 51b4401ca053ca8cad6e9903646709a2f44444df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw{&>1LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z From 8ee422508b9dc7712e7f8a6c95543d8fbabddaa5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 13:25:38 +0200 Subject: [PATCH 209/898] Quick reply action: use icon from compound --- .../factories/action/QuickReplyActionFactory.kt | 3 ++- .../vector_notification_quick_reply.png | Bin 269 -> 0 bytes 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100755 libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_quick_reply.png diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt index eb54bf9b36..a716839ea9 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt @@ -16,6 +16,7 @@ import androidx.core.app.RemoteInput import dev.zacsweers.metro.Inject import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri +import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -45,7 +46,7 @@ class QuickReplyActionFactory( .build() return NotificationCompat.Action.Builder( - R.drawable.vector_notification_quick_reply, + CompoundDrawables.ic_compound_reply, stringProvider.getString(R.string.notification_room_action_quick_reply), replyPendingIntent ) diff --git a/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_quick_reply.png b/libraries/push/impl/src/main/res/drawable-xxhdpi/vector_notification_quick_reply.png deleted file mode 100755 index 4af4ae634b4c805b2b13c209262bba92d4ef5bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawu6VjQhEy=Vy==(G$SBbIuwHt% zp3_UKM>>291zL-BrWtE$WMrxY&q^|md-S)saec+%`%mT+^YR*%zN!3_;NI;JthdL` z{KCnCCY1w%imdJpA~Ld3FOd=(E`?RG0HH+`PU-POx#QYR|iePyTZek-J~XvsWJ zNp;6pnWrr{gH+WWS3OqoV4b69!Fg%ZjL8ar=LoBC`b|jln)7GMS;OOVHd`te@;#f8 z>^I4HhOyA|j6Ta%GFL2C6b3wAaO`BGUn!j9*xM|{uGv?7Zl}4O+1d4_3mOH1{$ucT L^>bP0l+XkKk9}#` From 760ca8e8106f11a5f3052fba7fbfc49519cfd6bf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 15:09:45 +0200 Subject: [PATCH 210/898] Fix warning --- .../kotlin/io/element/android/appconfig/NotificationConfig.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt index 41acf5d266..1e0f5c2f55 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt @@ -7,8 +7,8 @@ package io.element.android.appconfig -import android.graphics.Color import androidx.annotation.ColorInt +import androidx.core.graphics.toColorInt object NotificationConfig { /** @@ -27,5 +27,5 @@ object NotificationConfig { const val SHOW_QUICK_REPLY_ACTION = true @ColorInt - val NOTIFICATION_ACCENT_COLOR: Int = Color.parseColor("#FF0DBD8B") + val NOTIFICATION_ACCENT_COLOR: Int = "#FF0DBD8B".toColorInt() } From e689eaf73a077327c0f110655add8d3fdb13b9a5 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 23 Oct 2025 16:01:47 +0200 Subject: [PATCH 211/898] design(space): let divider be full width # Conflicts: # features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt --- .../home/impl/spaces/HomeSpacesView.kt | 33 ++++--- .../features/space/impl/root/SpaceView.kt | 61 +++++++------ .../matrix/ui/components/SpaceRoomItemView.kt | 88 +++++++++---------- 3 files changed, 92 insertions(+), 90 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt index bc1f474956..12ef091b3a 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt @@ -10,6 +10,7 @@ package io.element.android.features.home.impl.spaces import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter @@ -57,20 +58,24 @@ fun HomeSpacesView( item { HorizontalDivider() } - state.spaceRooms.forEach { spaceRoom -> - item(spaceRoom.roomId) { - val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED - SpaceRoomItemView( - spaceRoom = spaceRoom, - showUnreadIndicator = isInvitation && spaceRoom.roomId !in state.seenSpaceInvites, - hideAvatars = isInvitation && state.hideInvitesAvatar, - onClick = { - onSpaceClick(spaceRoom.roomId) - }, - onLongClick = { - // TODO - }, - ) + itemsIndexed( + items = state.spaceRooms, + key = { _, spaceRoom -> spaceRoom.roomId } + ) { index, spaceRoom -> + val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED + SpaceRoomItemView( + spaceRoom = spaceRoom, + showUnreadIndicator = isInvitation && spaceRoom.roomId !in state.seenSpaceInvites, + hideAvatars = isInvitation && state.hideInvitesAvatar, + onClick = { + onSpaceClick(spaceRoom.roomId) + }, + onLongClick = { + // TODO + }, + ) + if (index != state.spaceRooms.lastIndex) { + HorizontalDivider() } } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index cd722ac6f3..cbcae289e0 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -182,32 +183,36 @@ private fun SpaceViewContent( HorizontalDivider() } } - state.children.forEach { spaceRoom -> - item { - val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED - val isCurrentlyJoining = state.isJoining(spaceRoom.roomId) - SpaceRoomItemView( - spaceRoom = spaceRoom, - showUnreadIndicator = isInvitation && spaceRoom.roomId !in state.seenSpaceInvites, - hideAvatars = isInvitation && state.hideInvitesAvatar, - onClick = { - onRoomClick(spaceRoom) + itemsIndexed( + items = state.children, + key = { _, spaceRoom -> spaceRoom.roomId } + ) { index, spaceRoom -> + val isInvitation = spaceRoom.state == CurrentUserMembership.INVITED + val isCurrentlyJoining = state.isJoining(spaceRoom.roomId) + SpaceRoomItemView( + spaceRoom = spaceRoom, + showUnreadIndicator = isInvitation && spaceRoom.roomId !in state.seenSpaceInvites, + hideAvatars = isInvitation && state.hideInvitesAvatar, + onClick = { + onRoomClick(spaceRoom) + }, + onLongClick = { + // TODO + }, + trailingAction = spaceRoom.trailingAction(isCurrentlyJoining = isCurrentlyJoining) { + state.eventSink(SpaceEvents.Join(spaceRoom)) + }, + bottomAction = spaceRoom.inviteButtons( + onAcceptClick = { + state.eventSink(SpaceEvents.AcceptInvite(spaceRoom)) }, - onLongClick = { - // TODO - }, - trailingAction = spaceRoom.trailingAction(isCurrentlyJoining = isCurrentlyJoining) { - state.eventSink(SpaceEvents.Join(spaceRoom)) - }, - bottomAction = spaceRoom.inviteButtons( - onAcceptClick = { - state.eventSink(SpaceEvents.AcceptInvite(spaceRoom)) - }, - onDeclineClick = { - state.eventSink(SpaceEvents.DeclineInvite(spaceRoom)) - } - ) + onDeclineClick = { + state.eventSink(SpaceEvents.DeclineInvite(spaceRoom)) + } ) + ) + if (index != state.children.lastIndex) { + HorizontalDivider() } } if (state.hasMoreToLoad) { @@ -328,10 +333,10 @@ private fun SpaceAvatarAndNameRow( ) Text( modifier = Modifier - .padding(horizontal = 8.dp) - .semantics { - heading() - }, + .padding(horizontal = 8.dp) + .semantics { + heading() + }, text = name ?: stringResource(CommonStrings.common_no_space_name), style = ElementTheme.typography.fontBodyLgMedium, fontStyle = FontStyle.Italic.takeIf { name == null }, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt index 90ed843483..1bede0784b 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/SpaceRoomItemView.kt @@ -43,7 +43,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.modifiers.onKeyboardContextMenuAction import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.theme.components.HorizontalDivider import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.unreadIndicator @@ -81,56 +80,50 @@ fun SpaceRoomItemView( interactionSource = remember { MutableInteractionSource() } ) .onKeyboardContextMenuAction { onLongClick } - Box(modifier = modifier.then(clickModifier)) { - Column( - modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), + Column( + modifier = modifier + .then(clickModifier) + .padding(horizontal = 16.dp, vertical = 12.dp), + ) { + SpaceRoomItemScaffold( + avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), + isSpace = spaceRoom.isSpace, + hideAvatars = hideAvatars, + heroes = spaceRoom.heroes + .map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) } + .toImmutableList(), + trailingAction = trailingAction, ) { - SpaceRoomItemScaffold( - avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), - isSpace = spaceRoom.isSpace, - hideAvatars = hideAvatars, - heroes = spaceRoom.heroes - .map { hero -> hero.getAvatarData(AvatarSize.SpaceListItem) } - .toImmutableList(), - trailingAction = trailingAction, - ) { - NameAndIndicatorRow( - name = spaceRoom.displayName, - showIndicator = showUnreadIndicator + NameAndIndicatorRow( + name = spaceRoom.displayName, + showIndicator = showUnreadIndicator + ) + Spacer(modifier = Modifier.height(1.dp)) + SubtitleRow( + visibilityIcon = spaceRoom.visibilityIcon(), + subtitle = spaceRoom.subtitle() + ) + Spacer(modifier = Modifier.height(1.dp)) + val info = spaceRoom.info() + if (info.isNotBlank()) { + Text( + modifier = Modifier.weight(1f), + style = ElementTheme.typography.fontBodyMdRegular, + text = info, + color = ElementTheme.colors.textSecondary, + maxLines = 1, + overflow = TextOverflow.Ellipsis ) - Spacer(modifier = Modifier.height(1.dp)) - SubtitleRow( - visibilityIcon = spaceRoom.visibilityIcon(), - subtitle = spaceRoom.subtitle() - ) - Spacer(modifier = Modifier.height(1.dp)) - val info = spaceRoom.info() - if (info.isNotBlank()) { - Text( - modifier = Modifier.weight(1f), - style = ElementTheme.typography.fontBodyMdRegular, - text = info, - color = ElementTheme.colors.textSecondary, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } - } - if (bottomAction != null) { - Spacer(modifier = Modifier.height(12.dp)) - // Match the padding of the text content (avatar + spacer) - Box(modifier = Modifier.padding(start = AvatarSize.SpaceListItem.dp + 16.dp)) { - bottomAction() - } - Spacer(modifier = Modifier.height(4.dp)) } } - HorizontalDivider( - modifier = Modifier - // Match the padding of the text content (padding + avatar + spacer) - .padding(start = AvatarSize.SpaceListItem.dp + 16.dp + 16.dp) - .align(Alignment.BottomCenter) - ) + if (bottomAction != null) { + Spacer(modifier = Modifier.height(12.dp)) + // Match the padding of the text content (avatar + spacer) + Box(modifier = Modifier.padding(start = AvatarSize.SpaceListItem.dp + 16.dp)) { + bottomAction() + } + Spacer(modifier = Modifier.height(4.dp)) + } } } @@ -264,7 +257,6 @@ internal fun SpaceRoomItemViewPreview(@PreviewParameter(SpaceRoomProvider::class hideAvatars = false, onClick = {}, onLongClick = {}, - modifier = Modifier.fillMaxWidth().padding(8.dp), bottomAction = if (spaceRoom.state == CurrentUserMembership.INVITED) { { InviteButtonsRowMolecule({}, {}) } } else { From d75663f09ba25590866ae6065202257f2135374c Mon Sep 17 00:00:00 2001 From: ElementBot Date: Fri, 24 Oct 2025 14:22:53 +0000 Subject: [PATCH 212/898] Update screenshots --- .../features.home.impl.spaces_HomeSpacesView_Day_0_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Day_1_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Night_0_en.png | 4 ++-- .../features.home.impl.spaces_HomeSpacesView_Night_1_en.png | 4 ++-- .../snapshots/images/features.home.impl_HomeView_Day_4_en.png | 4 ++-- .../images/features.home.impl_HomeView_Night_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_4_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png | 4 ++-- ...raries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png | 4 ++-- ...ries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png | 4 ++-- 28 files changed, 56 insertions(+), 56 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png index 8bf9eeded7..eebbc79b07 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40570506b75d7cb582cee70eb3d6453b673087a17a18d8ef148e3ff5edb6f1b9 -size 89228 +oid sha256:388207cd5b424fbb95f070eac393db9330ae1b641795d1bb815874435ef9f623 +size 89027 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png index b61f724c29..834f73ab9f 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:491d0d8f7d7e269b13548c48a6eacb8fa4df5e2798aae5b3938e7eb7368ce3f9 -size 41251 +oid sha256:542d8ba6a6031fe2789cf111f333eef22acf95281f57421ace2c7b5b0a599cc2 +size 41140 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png index 20ce14c682..187ee16663 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fb98e398abcb465b94d4138eecbccf076e229cb0807f6543d4f77ebb0353499 -size 87390 +oid sha256:134e561fc4082339725c241a79fa55e0b5b1e134c046d4454cb7a9e71ea5e1b7 +size 87174 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png index 0192faf169..7dc28605d2 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl.spaces_HomeSpacesView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3bee6454b9fab1a579e86bece32c0d6134d08fed5a63fecf247a58d7acba142d -size 40125 +oid sha256:c31cd78bc054610be05012cdba7eb0cbc770435b0e12bc065f6eae4a773ca39e +size 40121 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png index 5c7dae4a0e..5cd1c50997 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef2b3724cdd28175824554f800019fa663be341f0854751b50321e9b73203b6a -size 54275 +oid sha256:27c5418d421ca6cf0069e34ca3e22ca807203d252b9c1424eca447f070fbbbdf +size 54177 diff --git a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png index 00edb13227..d6b722a3f3 100644 --- a/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.home.impl_HomeView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b6fc1c78e05737b3231172b2b72b532b769ae9928ddd6674a864bee56566f6e -size 52623 +oid sha256:fc4c11b4d2c83b179409083ca36fcb95e44b7d8c51abd23e9c07f4d3be8a339c +size 52626 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png index b6c04763dc..9a129e53f4 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0534ab33ee18f03d219eb5b1490d41ccd1e3a4eb6bf734f31383a75110e368b3 -size 63084 +oid sha256:7e8b65396dedff81056157620e2390c8d69954ee288266b575ac61aba16c2bec +size 62590 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png index b86ae23e63..2ac2e539b3 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85971dfed5e1cb01f5b04f43cc998d9cb69b6f06a24e3ea28f32c74aa3445e94 -size 63755 +oid sha256:b8e1fb3b8b62ea8583a5bc9a18f39dbe71684e7d019bf63b22b873851b219209 +size 63270 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png index f1e6084199..f932a63f92 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5e587b7c669fa8fd02b8202318cd405b6fbb3bc91928d56f4bf2ef12f3bbbcc -size 61863 +oid sha256:9ff5ca08d441240de9e5adc35e41bceeb0f462979777345da4b2865e9a80012e +size 61405 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png index 890440ff1b..bcc1e494e8 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a25dcf4e97dddb032713e49e13f46836fd541382aad2a9aa9b683dbcfdd93ccc -size 62409 +oid sha256:2f35b63ac49c799a5b3b5ad47652fe0f199efbbd2a285f782170c1edcd9ae723 +size 61955 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png index cbf7bc5ea6..71e06aee74 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed823d5ab8f1e0b1af536c240b2d50ba741de64d443e54d998a4e2d02e373e05 -size 16202 +oid sha256:4d62c0c47ea78b89611244bb6e37ffdf2298b7b161de69ede59871089bd946c1 +size 16617 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png index 8dfa3132e2..e1f8d9a655 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:026c69cb2b201c1d753cd6197cdc124e208a3d3c9290d40e4de840ba0ac41cc0 -size 13054 +oid sha256:efab4a3c85b9f762647c5e577c23a49f8ff40fd754171c90b670313f4790cdcd +size 13063 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png index 0f72c0ecfd..0e6921fcef 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0da8a3a836e8b3eebb48d00fa2b5080caf80a32579d775bebd7564a525423460 -size 9019 +oid sha256:4a5255962b310c60c62192391f4bf184955827022687f74efa21afda623e0b80 +size 8902 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png index 8fd804cdb1..ce6472cf85 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8b5298b33db0c0e74c6a786598b1826767f5ba3bcf9187846b5b9332b81a3e3 -size 23146 +oid sha256:8be1a1667726344d330d52b8b4844d9007d291b8f2a3aaf1e296a16be98c6b2d +size 23741 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png index 1a7bf98e7c..fd8068cecc 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7607784f41e0e7f6b4b1b4c983ed59aa466b01dd388a149b070a0540f6493d7f -size 18065 +oid sha256:ba2b344818e0b8d4b9224639be09c06de8585622be8dda20ad2aa1bb28e0e44d +size 18052 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png index 886a3cbb51..0743b882eb 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d234be8428b62e19b4192a17f1c9c21eeee25c7fc683f1597631b0599fc34b32 -size 13625 +oid sha256:8ab0601bf05f66e91b38774cb77b744bd426a2b083ab43b930a402e3c2b9ddb1 +size 13486 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png index 3ec3a1ec64..744a626c00 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a725468cea9dfbf210d7367277b3a4d30438caf4ace60304e9942e4509c71972 -size 34014 +oid sha256:a53eb404b797a91747a92a1fa2ae9ca23cbecda6c8d96991b38c28bb43cb51dc +size 33603 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png index 182ebc51a3..36f2c6a3fe 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c325ae3939648b0684e3ce2105e46445359748bf5d765593fa5eaca5d7e7082 -size 38852 +oid sha256:aabda293c6a242618e176b402e0d5bf8d84f1c6a75d3537b8e42f3abe2f68212 +size 38567 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png index 3d321a6803..3ac82460d8 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82ea9e352708d800c28d2651220294c1a12bd09b98cda6676a14680c337f3b6e -size 11094 +oid sha256:bea4702ff62ea222a2ac4a2801b0fb0dc603b8e9f2ce97843d927b21f98d7994 +size 11136 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png index 272b05e17c..69be21bda0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85f42e6853aac517879a0d0379e655c7a23526e8e8a44f5c806323239df65639 -size 15810 +oid sha256:821e281a6bcbb637e713b31fdb6e8bf3b30eef41507d25adb84d9bed4d6d9be0 +size 16083 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png index 3d058f4aee..8298f1cbb9 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:288b0d6fbce8b5e90bca734635705217c01bbb2e82f516d66cd0d0cb5f854f94 -size 12568 +oid sha256:4b78de1a677347827c1447cb459c76a20398846f4f96430b97ef3c3024d6b5b4 +size 12519 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png index 8573a7aee5..866915721c 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f931739c849cb283722149f9d89286633d7321d78b013281bb3333ae6af9cfd -size 9122 +oid sha256:8cc0851e3ea07010cebc83ac764239e9ab6e37ab2a2ad74039e542f117bf08b9 +size 9110 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png index c66c02a71d..3c6aaa8312 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35dcf251e3bb3613c1cf5fcc4bfed6b8bb837dd721404ac80b72d804830cd483 -size 22375 +oid sha256:3c41209aa36b563a8cd8c5a6788612d17464524b930ca8591e9e29b581a520de +size 22747 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png index fe91d6ff20..3da4e3172e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:283a7f62058a6f4d29b94a7a0d35b381a3e5038cb59bf545179b807f005aa3dd -size 17240 +oid sha256:53cc573decde4598fcc2c02cd6c7a925af464e215e8589bba71923cb54c0c687 +size 17148 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png index be21386b79..2c60ca6e31 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fb4b4a6588f44d637f770456ca621e2c47bb9e730a8d24ace74028b74056309 -size 13032 +oid sha256:c8d2611a87e3b9804c0538d4f3d7988f39f37f038b2a4b0c66f0676b4d03a1a9 +size 13017 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png index 6cfb8603b1..bbacbbf72a 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:083774bc84a79daac071eac0fca284ce49af7fb3ae21c141684fb588bd8842ed -size 32868 +oid sha256:c8f58003ba5ee7357c33a8e8d995f172ee12f50a6d07fadd6dbc3423bc357272 +size 32582 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png index 8304ff65d9..abf335a860 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4430144e9fb2637619b0fc9cd41ef5a3be7b5a3af7831caaba8bdeb9b96555ae -size 37560 +oid sha256:f6c3d7f0f259fff0089dd4d9f1b9071f43de8e21d5039fe95ab7b9cc37e69a00 +size 37269 diff --git a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png index 1653879613..4e1c38866f 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e68cc7f49af74626e7019b2a4eeac37877b94f0bcba31a21fa3e20b6fde1244d -size 10724 +oid sha256:f1f195d869be456f5eeaf9a6395f7d6e16b7449612c75b2493fcf9ff003ef512 +size 10810 From d87c484dd84783684eb52066aeea06aaac4ba460 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 24 Oct 2025 12:49:05 +0200 Subject: [PATCH 213/898] misc(navigation) : use JoinedRoomLoadedFlowNode as parent of SpaceFlowNode --- .../android/appnav/LoggedInFlowNode.kt | 18 +++----- .../android/appnav/room/RoomFlowNode.kt | 13 ++---- .../appnav/room/RoomNavigationTarget.kt | 2 +- .../room/joined/JoinedRoomLoadedFlowNode.kt | 44 ++++++++++++++++--- .../appnav/room/joined/LoadingRoomNodeView.kt | 3 -- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 8 ++-- 6 files changed, 52 insertions(+), 36 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 9fb04a2314..eb1df5643e 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -62,7 +62,6 @@ import io.element.android.features.roomdirectory.api.RoomDescription import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint import io.element.android.features.securebackup.api.SecureBackupEntryPoint import io.element.android.features.share.api.ShareEntryPoint -import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.features.startchat.api.StartChatEntryPoint import io.element.android.features.userprofile.api.UserProfileEntryPoint import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint @@ -256,7 +255,7 @@ class LoggedInFlowNode( val serverNames: List = emptyList(), val trigger: JoinedRoom.Trigger? = null, val roomDescription: RoomDescription? = null, - val initialElement: RoomNavigationTarget = RoomNavigationTarget.Messages(), + val initialElement: RoomNavigationTarget = RoomNavigationTarget.Root(), val targetId: UUID = UUID.randomUUID(), ) : NavTarget @@ -358,7 +357,7 @@ class LoggedInFlowNode( roomIdOrAlias = data.roomIdOrAlias, serverNames = data.viaParameters, trigger = JoinedRoom.Trigger.Timeline, - initialElement = RoomNavigationTarget.Messages(data.eventId), + initialElement = RoomNavigationTarget.Root(data.eventId), ) if (pushToBackstack) { backstack.push(target) @@ -377,11 +376,6 @@ class LoggedInFlowNode( backstack.push(NavTarget.Settings(PreferencesEntryPoint.InitialTarget.NotificationSettings)) } } - val spaceCallback = object : SpaceEntryPoint.Callback { - override fun onOpenRoom(roomId: RoomId, viaParameters: List) { - backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), serverNames = viaParameters)) - } - } val inputs = RoomFlowNode.Inputs( roomIdOrAlias = navTarget.roomIdOrAlias, roomDescription = Optional.ofNullable(navTarget.roomDescription), @@ -389,7 +383,7 @@ class LoggedInFlowNode( trigger = Optional.ofNullable(navTarget.trigger), initialElement = navTarget.initialElement ) - createNode(buildContext, plugins = listOf(inputs, joinedRoomCallback, spaceCallback)) + createNode(buildContext, plugins = listOf(inputs, joinedRoomCallback)) } is NavTarget.UserProfile -> { val callback = object : UserProfileEntryPoint.Callback { @@ -421,7 +415,7 @@ class LoggedInFlowNode( } override fun navigateTo(roomId: RoomId, eventId: EventId) { - backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), initialElement = RoomNavigationTarget.Messages(eventId))) + backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), initialElement = RoomNavigationTarget.Root(eventId))) } } val inputs = PreferencesEntryPoint.Params(navTarget.initialElement) @@ -516,9 +510,7 @@ class LoggedInFlowNode( roomIdOrAlias = roomIdOrAlias, serverNames = serverNames, trigger = trigger, - initialElement = RoomNavigationTarget.Messages( - focusedEventId = eventId - ) + initialElement = RoomNavigationTarget.Root(eventId = eventId) ) backstack.accept(AttachRoomOperation(roomNavTarget, clearBackstack)) } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 01683c01e7..64bf4b2fd2 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -9,7 +9,6 @@ package io.element.android.appnav.room import android.os.Parcelable import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.modality.BuildContext @@ -37,7 +36,6 @@ import io.element.android.libraries.architecture.BaseFlowNode 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.core.bool.orFalse import io.element.android.libraries.core.coroutine.withPreviousValue import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient @@ -49,11 +47,11 @@ import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias import io.element.android.libraries.matrix.ui.room.LoadingRoomState import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize @@ -130,7 +128,6 @@ class RoomFlowNode( private fun subscribeToRoomInfoFlow(roomId: RoomId, serverNames: List) { val roomInfoFlow = client.getRoomInfoFlow(roomId) - val isSpaceFlow = roomInfoFlow.map { it.getOrNull()?.isSpace.orFalse() }.distinctUntilChanged() // This observes the local membership changes for the room val membershipUpdateFlow = membershipObserver.updates @@ -143,14 +140,10 @@ class RoomFlowNode( .map { it.getOrNull()?.currentUserMembership } .distinctUntilChanged() .withPreviousValue() - combine(currentMembershipFlow, isSpaceFlow) { (previousMembership, membership), isSpace -> + currentMembershipFlow.onEach { (previousMembership, membership) -> Timber.d("Room membership: $membership") if (membership == CurrentUserMembership.JOINED) { - if (isSpace) { - backstack.newRoot(NavTarget.JoinedSpace(spaceId = roomId)) - } else { - backstack.newRoot(NavTarget.JoinedRoom(roomId)) - } + backstack.newRoot(NavTarget.JoinedRoom(roomId)) } else { val leavingFromCurrentDevice = membership == CurrentUserMembership.LEFT && diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt index ab1589898b..d4b97d100a 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt @@ -13,7 +13,7 @@ import kotlinx.parcelize.Parcelize sealed interface RoomNavigationTarget : Parcelable { @Parcelize - data class Messages(val focusedEventId: EventId? = null) : RoomNavigationTarget + data class Root(val eventId: EventId? = null) : RoomNavigationTarget @Parcelize data object Details : RoomNavigationTarget diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index f0f8dff3e7..37c4e14d62 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -22,8 +22,11 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget +import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.Inputs +import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.NavTarget import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint +import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs @@ -51,6 +54,7 @@ class JoinedRoomLoadedFlowNode( @Assisted plugins: List, private val messagesEntryPoint: MessagesEntryPoint, private val roomDetailsEntryPoint: RoomDetailsEntryPoint, + private val spaceEntryPoint: SpaceEntryPoint, private val appNavigationStateService: AppNavigationStateService, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, @@ -59,11 +63,7 @@ class JoinedRoomLoadedFlowNode( roomGraphFactory: RoomGraphFactory, ) : BaseFlowNode( backstack = BackStack( - initialElement = when (val input = plugins.filterIsInstance().first().initialElement) { - is RoomNavigationTarget.Messages -> NavTarget.Messages(input.focusedEventId) - RoomNavigationTarget.Details -> NavTarget.RoomDetails - RoomNavigationTarget.NotificationSettings -> NavTarget.RoomNotificationSettings - }, + initialElement = initialElement(plugins), savedStateMap = buildContext.savedStateMap, ), buildContext = buildContext, @@ -154,9 +154,25 @@ class JoinedRoomLoadedFlowNode( NavTarget.RoomNotificationSettings -> { createRoomDetailsNode(buildContext, RoomDetailsEntryPoint.InitialTarget.RoomNotificationSettings) } + NavTarget.Space -> { + createSpaceNode(buildContext) + } } } + private fun createSpaceNode(buildContext: BuildContext): Node { + val callback = object : SpaceEntryPoint.Callback { + override fun onOpenRoom(roomId: RoomId, viaParameters: List) { + callbacks.forEach { it.onOpenRoom(roomId, viaParameters) } + } + + } + return spaceEntryPoint.nodeBuilder(this, buildContext) + .inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId)) + .callback(callback) + .build() + } + private fun createMessagesNode( buildContext: BuildContext, navTarget: NavTarget.Messages, @@ -188,6 +204,9 @@ class JoinedRoomLoadedFlowNode( } sealed interface NavTarget : Parcelable { + @Parcelize + data object Space : NavTarget + @Parcelize data class Messages(val focusedEventId: EventId? = null) : NavTarget @@ -206,3 +225,18 @@ class JoinedRoomLoadedFlowNode( BackstackView() } } + +private fun initialElement(plugins: List): NavTarget { + val input = plugins.filterIsInstance().single() + return when (input.initialElement) { + is RoomNavigationTarget.Root -> { + if (input.room.roomInfoFlow.value.isSpace) { + NavTarget.Space + } else { + NavTarget.Messages(input.initialElement.eventId) + } + } + RoomNavigationTarget.Details -> NavTarget.RoomDetails + RoomNavigationTarget.NotificationSettings -> NavTarget.RoomNotificationSettings + } +} diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt index 95463fdc3f..deedf5f867 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt @@ -19,8 +19,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.designsystem.atomic.molecules.IconTitlePlaceholdersRowMolecule -import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -76,7 +74,6 @@ private fun LoadingRoomTopBar( BackButton(onClick = onBackClick) }, title = { - IconTitlePlaceholdersRowMolecule(iconSize = AvatarSize.TimelineRoom.dp) }, ) } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index dfb2638dc1..a48cf8d62a 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -120,7 +120,7 @@ class JoinedRoomLoadedFlowNodeTest { // GIVEN val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) val fakeMessagesEntryPoint = FakeMessagesEntryPoint() - val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, @@ -141,7 +141,7 @@ class JoinedRoomLoadedFlowNodeTest { val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() - val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( plugins = listOf(inputs), messagesEntryPoint = fakeMessagesEntryPoint, @@ -162,7 +162,7 @@ class JoinedRoomLoadedFlowNodeTest { val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() - val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val activeRoomsHolder = ActiveRoomsHolder() val roomFlowNode = createJoinedRoomLoadedFlowNode( plugins = listOf(inputs), @@ -185,7 +185,7 @@ class JoinedRoomLoadedFlowNodeTest { val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() - val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Messages()) + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val activeRoomsHolder = ActiveRoomsHolder().apply { addRoom(room) } From d8129e72bc0e0ad20e90c3c57d7d9a36b9a6318c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 17:04:48 +0200 Subject: [PATCH 214/898] Let notifications uses the brandColor. --- enterprise | 2 +- .../enterprise/api/EnterpriseService.kt | 3 ++ .../impl/DefaultEnterpriseService.kt | 5 ++ .../enterprise/test/FakeEnterpriseService.kt | 6 +++ .../android/libraries/matrix/test/TestData.kt | 2 + libraries/push/impl/build.gradle.kts | 2 + .../notifications/NotificationDataFactory.kt | 45 ++++++++++++---- .../notifications/NotificationRenderer.kt | 16 ++++-- .../notifications/RoomGroupMessageCreator.kt | 40 +++++++------- .../SummaryGroupMessageCreator.kt | 6 ++- .../factories/NotificationCreator.kt | 54 +++++++++++-------- .../impl/troubleshoot/NotificationTest.kt | 14 +++-- .../DefaultBaseRoomGroupMessageCreatorTest.kt | 7 +++ .../DefaultNotificationDrawerManagerTest.kt | 2 + ...aultOnMissedCallNotificationHandlerTest.kt | 2 + .../DefaultSummaryGroupMessageCreatorTest.kt | 2 + .../NotificationDataFactoryTest.kt | 30 ++++++----- .../notifications/NotificationRendererTest.kt | 2 + .../DefaultNotificationCreatorTest.kt | 24 ++++++--- .../fake/FakeNotificationCreator.kt | 26 ++++++--- .../fake/FakeNotificationDataFactory.kt | 26 +++++++-- .../fake/FakeRoomGroupMessageCreator.kt | 6 ++- .../fake/FakeSummaryGroupMessageCreator.kt | 5 +- .../impl/troubleshoot/NotificationTestTest.kt | 4 ++ 24 files changed, 239 insertions(+), 92 deletions(-) diff --git a/enterprise b/enterprise index 867d1118e1..a3e54addf0 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit 867d1118e157ba89a4f5462f8d9c13e206f10026 +Subproject commit a3e54addf0d61189bb6868f9b5dc733a6a1fb3ea diff --git a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt index 0c855c3a82..785afd115a 100644 --- a/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt +++ b/features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt @@ -7,6 +7,7 @@ package io.element.android.features.enterprise.api +import androidx.compose.ui.graphics.Color import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.libraries.matrix.api.core.SessionId import kotlinx.coroutines.flow.Flow @@ -24,6 +25,8 @@ interface EnterpriseService { */ suspend fun overrideBrandColor(sessionId: SessionId?, brandColor: String?) + fun brandColorsFlow(sessionId: SessionId?): Flow + fun semanticColorsFlow(sessionId: SessionId?): Flow fun firebasePushGateway(): String? diff --git a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt index 7207654bd2..b53e30c080 100644 --- a/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt +++ b/features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt @@ -7,6 +7,7 @@ package io.element.android.features.enterprise.impl +import androidx.compose.ui.graphics.Color import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.compound.colors.SemanticColorsLightDark @@ -27,6 +28,10 @@ class DefaultEnterpriseService : EnterpriseService { override suspend fun overrideBrandColor(sessionId: SessionId?, brandColor: String?) = Unit + override fun brandColorsFlow(sessionId: SessionId?): Flow { + return flowOf(null) + } + override fun semanticColorsFlow(sessionId: SessionId?): Flow { return flowOf(SemanticColorsLightDark.default) } diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 2aedd1edbd..39b7c320d9 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -7,6 +7,7 @@ package io.element.android.features.enterprise.test +import androidx.compose.ui.graphics.Color import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.features.enterprise.api.BugReportUrl import io.element.android.features.enterprise.api.EnterpriseService @@ -27,6 +28,7 @@ class FakeEnterpriseService( private val firebasePushGatewayResult: () -> String? = { lambdaError() }, private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() }, ) : EnterpriseService { + private val brandColorState = MutableStateFlow(null) private val semanticColorsState = MutableStateFlow(initialSemanticColors) override suspend fun isEnterpriseUser(sessionId: SessionId): Boolean = simulateLongTask { @@ -45,6 +47,10 @@ class FakeEnterpriseService( overrideBrandColorResult(sessionId, brandColor) } + override fun brandColorsFlow(sessionId: SessionId?): Flow { + return brandColorState.asStateFlow() + } + override fun semanticColorsFlow(sessionId: SessionId?): Flow { return semanticColorsState.asStateFlow() } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt index f05f6958c0..8db5fc6807 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt @@ -98,3 +98,5 @@ const val A_TIMESTAMP = 567L const val A_FORMATTED_DATE = "April 6, 1980 at 6:35 PM" const val A_LOGIN_HINT = "mxid:@alice:example.org" + +const val A_COLOR_INT = 0xFF0000 diff --git a/libraries/push/impl/build.gradle.kts b/libraries/push/impl/build.gradle.kts index 3d053a4657..87b3c681f1 100644 --- a/libraries/push/impl/build.gradle.kts +++ b/libraries/push/impl/build.gradle.kts @@ -56,6 +56,7 @@ dependencies { implementation(projects.libraries.troubleshoot.api) implementation(projects.libraries.workmanager.api) implementation(projects.features.call.api) + implementation(projects.features.enterprise.api) implementation(projects.features.lockscreen.api) implementation(projects.libraries.featureflag.api) api(projects.libraries.pushproviders.api) @@ -77,6 +78,7 @@ dependencies { testImplementation(projects.libraries.troubleshoot.test) testImplementation(projects.libraries.workmanager.test) testImplementation(projects.features.call.test) + testImplementation(projects.features.enterprise.test) testImplementation(projects.features.lockscreen.test) testImplementation(projects.features.networkmonitor.test) testImplementation(projects.services.appnavstate.test) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index 09fc7058dc..38ab52e084 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import android.graphics.Typeface import android.text.style.StyleSpan +import androidx.annotation.ColorInt import androidx.core.text.buildSpannedString import androidx.core.text.inSpans import coil3.ImageLoader @@ -31,17 +32,29 @@ interface NotificationDataFactory { messages: List, currentUser: MatrixUser, imageLoader: ImageLoader, + @ColorInt color: Int, ): List @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications(invites: List): List + fun toNotifications( + invites: List, + @ColorInt color: Int, + ): List + @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications(simpleEvents: List): List + fun toNotifications( + simpleEvents: List, + @ColorInt color: Int, + ): List + @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications(fallback: List): List + fun toNotifications( + fallback: List, + @ColorInt color: Int, + ): List fun createSummaryNotification( currentUser: MatrixUser, @@ -49,6 +62,7 @@ interface NotificationDataFactory { invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): SummaryNotification } @@ -64,6 +78,7 @@ class DefaultNotificationDataFactory( messages: List, currentUser: MatrixUser, imageLoader: ImageLoader, + @ColorInt color: Int, ): List { val messagesToDisplay = messages.filterNot { it.canNotBeDisplayed() } .groupBy { it.roomId } @@ -76,6 +91,7 @@ class DefaultNotificationDataFactory( roomId = roomId, imageLoader = imageLoader, existingNotification = getExistingNotificationForMessages(currentUser.userId, roomId), + color = color, ) RoomNotification( notification = notification, @@ -96,11 +112,14 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(invites: List): List { + override fun toNotifications( + invites: List, + @ColorInt color: Int, + ): List { return invites.map { event -> OneShotNotification( key = event.roomId.value, - notification = notificationCreator.createRoomInvitationNotification(event), + notification = notificationCreator.createRoomInvitationNotification(event, color), summaryLine = event.description, isNoisy = event.noisy, timestamp = event.timestamp @@ -110,11 +129,14 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(simpleEvents: List): List { + override fun toNotifications( + simpleEvents: List, + @ColorInt color: Int, + ): List { return simpleEvents.map { event -> OneShotNotification( key = event.eventId.value, - notification = notificationCreator.createSimpleEventNotification(event), + notification = notificationCreator.createSimpleEventNotification(event, color), summaryLine = event.description, isNoisy = event.noisy, timestamp = event.timestamp @@ -124,11 +146,14 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(fallback: List): List { + override fun toNotifications( + fallback: List, + @ColorInt color: Int, + ): List { return fallback.map { event -> OneShotNotification( key = event.eventId.value, - notification = notificationCreator.createFallbackNotification(event), + notification = notificationCreator.createFallbackNotification(event, color), summaryLine = event.description.orEmpty(), isNoisy = false, timestamp = event.timestamp @@ -142,6 +167,7 @@ class DefaultNotificationDataFactory( invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): SummaryNotification { return when { roomNotifications.isEmpty() && invitationNotifications.isEmpty() && simpleNotifications.isEmpty() -> SummaryNotification.Removed @@ -152,6 +178,7 @@ class DefaultNotificationDataFactory( invitationNotifications = invitationNotifications, simpleNotifications = simpleNotifications, fallbackNotifications = fallbackNotifications, + color = color, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 5d901abbc9..c70148ca25 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -7,8 +7,11 @@ package io.element.android.libraries.push.impl.notifications +import androidx.compose.ui.graphics.toArgb import coil3.ImageLoader import dev.zacsweers.metro.Inject +import io.element.android.appconfig.NotificationConfig +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationIdProvider @@ -18,6 +21,7 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent +import kotlinx.coroutines.flow.first import timber.log.Timber private val loggerTag = LoggerTag("NotificationRenderer", LoggerTag.NotificationLoggerTag) @@ -26,6 +30,7 @@ private val loggerTag = LoggerTag("NotificationRenderer", LoggerTag.Notification class NotificationRenderer( private val notificationDisplayer: NotificationDisplayer, private val notificationDataFactory: NotificationDataFactory, + private val enterpriseService: EnterpriseService, ) { suspend fun render( currentUser: MatrixUser, @@ -33,17 +38,20 @@ class NotificationRenderer( eventsToProcess: List, imageLoader: ImageLoader, ) { + val color = enterpriseService.brandColorsFlow(currentUser.userId).first()?.toArgb() + ?: NotificationConfig.NOTIFICATION_ACCENT_COLOR val groupedEvents = eventsToProcess.groupByType() - val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, currentUser, imageLoader) - val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents) - val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents) - val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents) + val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, currentUser, imageLoader, color) + val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents, color) + val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents, color) + val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents, color) val summaryNotification = notificationDataFactory.createSummaryNotification( currentUser = currentUser, roomNotifications = roomNotifications, invitationNotifications = invitationNotifications, simpleNotifications = simpleNotifications, fallbackNotifications = fallbackNotifications, + color = color, ) // Remove summary first to avoid briefly displaying it after dismissing the last notification diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt index cd75424225..bf6ac73522 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import android.graphics.Bitmap +import androidx.annotation.ColorInt import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding @@ -28,6 +29,7 @@ interface RoomGroupMessageCreator { roomId: RoomId, imageLoader: ImageLoader, existingNotification: Notification?, + @ColorInt color: Int, ): Notification } @@ -43,6 +45,7 @@ class DefaultRoomGroupMessageCreator( roomId: RoomId, imageLoader: ImageLoader, existingNotification: Notification?, + @ColorInt color: Int, ): Notification { val lastKnownRoomEvent = events.last() val roomName = lastKnownRoomEvent.roomName ?: lastKnownRoomEvent.senderDisambiguatedDisplayName ?: "Room name (${roomId.value.take(8)}…)" @@ -60,24 +63,25 @@ class DefaultRoomGroupMessageCreator( val smartReplyErrors = events.filter { it.isSmartReplyError() } val roomIsDm = !roomIsGroup return notificationCreator.createMessagesListNotification( - RoomEventGroupInfo( - sessionId = currentUser.userId, - roomId = roomId, - roomDisplayName = roomName, - isDm = roomIsDm, - hasSmartReplyError = smartReplyErrors.isNotEmpty(), - shouldBing = events.any { it.noisy }, - customSound = events.last().soundName, - isUpdated = events.last().isUpdated, - ), - threadId = lastKnownRoomEvent.threadId, - largeIcon = largeBitmap, - lastMessageTimestamp = lastMessageTimestamp, - tickerText = tickerText, - currentUser = currentUser, - existingNotification = existingNotification, - imageLoader = imageLoader, - events = events, + RoomEventGroupInfo( + sessionId = currentUser.userId, + roomId = roomId, + roomDisplayName = roomName, + isDm = roomIsDm, + hasSmartReplyError = smartReplyErrors.isNotEmpty(), + shouldBing = events.any { it.noisy }, + customSound = events.last().soundName, + isUpdated = events.last().isUpdated, + ), + threadId = lastKnownRoomEvent.threadId, + largeIcon = largeBitmap, + lastMessageTimestamp = lastMessageTimestamp, + tickerText = tickerText, + currentUser = currentUser, + existingNotification = existingNotification, + imageLoader = imageLoader, + events = events, + color = color, ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt index f217b303aa..85947226f1 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification +import androidx.annotation.ColorInt import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.user.MatrixUser @@ -22,6 +23,7 @@ interface SummaryGroupMessageCreator { invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): Notification } @@ -45,6 +47,7 @@ class DefaultSummaryGroupMessageCreator( invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): Notification { val summaryIsNoisy = roomNotifications.any { it.shouldBing } || invitationNotifications.any { it.isNoisy } || @@ -61,7 +64,8 @@ class DefaultSummaryGroupMessageCreator( currentUser, sumTitle, noisy = summaryIsNoisy, - lastMessageTimestamp = lastMessageTimestamp + lastMessageTimestamp = lastMessageTimestamp, + color = color, ) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index ab2dae4fb3..8e5605ccaf 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -11,6 +11,7 @@ import android.app.Notification import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas +import androidx.annotation.ColorInt import androidx.annotation.DrawableRes import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat.MessagingStyle @@ -19,7 +20,6 @@ import androidx.core.content.res.ResourcesCompat import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.di.annotations.ApplicationContext @@ -57,18 +57,22 @@ interface NotificationCreator { existingNotification: Notification?, imageLoader: ImageLoader, events: List, + @ColorInt color: Int, ): Notification fun createRoomInvitationNotification( - inviteNotifiableEvent: InviteNotifiableEvent + inviteNotifiableEvent: InviteNotifiableEvent, + @ColorInt color: Int, ): Notification fun createSimpleEventNotification( simpleNotifiableEvent: SimpleNotifiableEvent, + @ColorInt color: Int, ): Notification fun createFallbackNotification( fallbackNotifiableEvent: FallbackNotifiableEvent, + @ColorInt color: Int, ): Notification /** @@ -78,10 +82,13 @@ interface NotificationCreator { currentUser: MatrixUser, compatSummary: String, noisy: Boolean, - lastMessageTimestamp: Long + lastMessageTimestamp: Long, + @ColorInt color: Int, ): Notification - fun createDiagnosticNotification(): Notification + fun createDiagnosticNotification( + @ColorInt color: Int, + ): Notification } @ContributesBinding(AppScope::class) @@ -97,8 +104,6 @@ class DefaultNotificationCreator( private val acceptInvitationActionFactory: AcceptInvitationActionFactory, private val rejectInvitationActionFactory: RejectInvitationActionFactory ) : NotificationCreator { - private val accentColor = NotificationConfig.NOTIFICATION_ACCENT_COLOR - /** * Create a notification for a Room. */ @@ -112,15 +117,14 @@ class DefaultNotificationCreator( existingNotification: Notification?, imageLoader: ImageLoader, events: List, + @ColorInt color: Int, ): Notification { // Build the pending intent for when the notification is clicked val openIntent = when { threadId != null -> pendingIntentFactory.createOpenThreadPendingIntent(roomInfo, threadId) else -> pendingIntentFactory.createOpenRoomPendingIntent(roomInfo.sessionId, roomInfo.roomId) } - val smallIcon = CommonDrawables.ic_notification - val containsMissedCall = events.any { it.type == EventType.RTC_NOTIFICATION } val channelId = if (containsMissedCall) { notificationChannels.getChannelForIncomingCall(false) @@ -176,7 +180,7 @@ class DefaultNotificationCreator( ) .setSmallIcon(smallIcon) // Set primary color (important for Wear 2.0 Notifications). - .setColor(accentColor) + .setColor(color) // Sets priority for 25 and below. For 26 and above, 'priority' is deprecated for // 'importance' which is set in the NotificationChannel. The integers representing // 'priority' are different from 'importance', so make sure you don't mix them. @@ -189,7 +193,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(accentColor, 500, 500) + setLights(color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -221,7 +225,8 @@ class DefaultNotificationCreator( } override fun createRoomInvitationNotification( - inviteNotifiableEvent: InviteNotifiableEvent + inviteNotifiableEvent: InviteNotifiableEvent, + @ColorInt color: Int, ): Notification { val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(inviteNotifiableEvent.noisy) @@ -232,7 +237,7 @@ class DefaultNotificationCreator( .setGroup(inviteNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .setSmallIcon(smallIcon) - .setColor(accentColor) + .setColor(color) .apply { addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) @@ -247,7 +252,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(accentColor, 500, 500) + setLights(color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -264,9 +269,9 @@ class DefaultNotificationCreator( override fun createSimpleEventNotification( simpleNotifiableEvent: SimpleNotifiableEvent, + @ColorInt color: Int, ): Notification { val smallIcon = CommonDrawables.ic_notification - val channelId = notificationChannels.getChannelIdForMessage(simpleNotifiableEvent.noisy) return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) @@ -275,7 +280,7 @@ class DefaultNotificationCreator( .setGroup(simpleNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .setSmallIcon(smallIcon) - .setColor(accentColor) + .setColor(color) .setAutoCancel(true) .setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(simpleNotifiableEvent.sessionId, simpleNotifiableEvent.roomId)) .apply { @@ -287,7 +292,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(accentColor, 500, 500) + setLights(color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -297,9 +302,9 @@ class DefaultNotificationCreator( override fun createFallbackNotification( fallbackNotifiableEvent: FallbackNotifiableEvent, + @ColorInt color: Int, ): Notification { val smallIcon = CommonDrawables.ic_notification - val channelId = notificationChannels.getChannelIdForMessage(false) return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) @@ -308,7 +313,7 @@ class DefaultNotificationCreator( .setGroup(fallbackNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .setSmallIcon(smallIcon) - .setColor(accentColor) + .setColor(color) .setAutoCancel(true) .setWhen(fallbackNotifiableEvent.timestamp) // Ideally we'd use `createOpenRoomPendingIntent` here, but the broken notification might apply to an invite @@ -332,7 +337,8 @@ class DefaultNotificationCreator( currentUser: MatrixUser, compatSummary: String, noisy: Boolean, - lastMessageTimestamp: Long + lastMessageTimestamp: Long, + @ColorInt color: Int, ): Notification { val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(noisy) @@ -345,7 +351,7 @@ class DefaultNotificationCreator( .setGroup(currentUser.userId.value) // set this notification as the summary for the group .setGroupSummary(true) - .setColor(accentColor) + .setColor(color) .apply { if (noisy) { // Compat @@ -355,7 +361,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(accentColor, 500, 500) + setLights(color, 500, 500) } else { // compat priority = NotificationCompat.PRIORITY_LOW @@ -366,14 +372,16 @@ class DefaultNotificationCreator( .build() } - override fun createDiagnosticNotification(): Notification { + override fun createDiagnosticNotification( + @ColorInt color: Int, + ): Notification { val intent = pendingIntentFactory.createTestPendingIntent() return NotificationCompat.Builder(context, notificationChannels.getChannelIdForTest()) .setContentTitle(buildMeta.applicationName) .setContentText(stringProvider.getString(R.string.notification_test_push_notification_content)) .setSmallIcon(CommonDrawables.ic_notification) .setLargeIcon(getBitmap(R.drawable.element_logo_green)) - .setColor(accentColor) + .setColor(color) .setPriority(NotificationCompat.PRIORITY_MAX) .setCategory(NotificationCompat.CATEGORY_STATUS) .setAutoCancel(true) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTest.kt index da390f85f2..b217247aa2 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTest.kt @@ -7,9 +7,13 @@ package io.element.android.libraries.push.impl.troubleshoot -import dev.zacsweers.metro.AppScope +import androidx.compose.ui.graphics.toArgb import dev.zacsweers.metro.ContributesIntoSet import dev.zacsweers.metro.Inject +import io.element.android.appconfig.NotificationConfig +import io.element.android.features.enterprise.api.EnterpriseService +import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationDisplayer import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator @@ -25,13 +29,15 @@ import kotlinx.coroutines.withTimeout import timber.log.Timber import kotlin.time.Duration.Companion.seconds -@ContributesIntoSet(AppScope::class) +@ContributesIntoSet(SessionScope::class) @Inject class NotificationTest( + private val sessionId: SessionId, private val notificationCreator: NotificationCreator, private val notificationDisplayer: NotificationDisplayer, private val notificationClickHandler: NotificationClickHandler, private val stringProvider: StringProvider, + private val enterpriseService: EnterpriseService, ) : NotificationTroubleshootTest { override val order = 50 private val delegate = NotificationTroubleshootTestDelegate( @@ -43,7 +49,9 @@ class NotificationTest( override suspend fun run(coroutineScope: CoroutineScope) { delegate.start() - val notification = notificationCreator.createDiagnosticNotification() + val color = enterpriseService.brandColorsFlow(sessionId).first()?.toArgb() + ?: NotificationConfig.NOTIFICATION_ACCENT_COLOR + val notification = notificationCreator.createDiagnosticNotification(color) val result = notificationDisplayer.displayDiagnosticNotification(notification) if (result) { coroutineScope.listenToNotificationClick() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt index ba4e1657a7..ad872cfd1d 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt @@ -13,6 +13,7 @@ import androidx.core.app.NotificationCompat import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.matrix.api.media.MediaSource +import io.element.android.libraries.matrix.test.A_COLOR_INT import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_TIMESTAMP import io.element.android.libraries.matrix.ui.components.aMatrixUser @@ -52,6 +53,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) @Suppress("DEPRECATION") @@ -74,6 +76,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) @Suppress("DEPRECATION") assertThat(result.priority).isEqualTo(NotificationCompat.PRIORITY_DEFAULT) @@ -138,6 +141,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) assertThat(fakeImageLoader.getCoilRequests()).containsExactlyElementsIn(expectedCoilRequests) @@ -156,6 +160,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(2) assertThat(result.`when`).isEqualTo(A_TIMESTAMP + 10) @@ -184,6 +189,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( @@ -208,6 +214,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) assertThat(result.`when`).isEqualTo(A_TIMESTAMP) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index 07702602e8..36c406d129 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import androidx.core.app.NotificationManagerCompat import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID @@ -199,6 +200,7 @@ class DefaultNotificationDrawerManagerTest { activeNotificationsProvider = activeNotificationsProvider, stringProvider = FakeStringProvider(), ), + enterpriseService = FakeEnterpriseService(), ), appNavigationStateService = appNavigationStateService, coroutineScope = this, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt index 25e00f7977..8b668a7f77 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.push.impl.notifications +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID @@ -55,6 +56,7 @@ class DefaultOnMissedCallNotificationHandlerTest { notificationRenderer = NotificationRenderer( notificationDisplayer = FakeNotificationDisplayer(), notificationDataFactory = dataFactory, + enterpriseService = FakeEnterpriseService(), ), appNavigationStateService = FakeAppNavigationStateService(), coroutineScope = backgroundScope, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt index aae742fa6d..f0831f6fd0 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import androidx.core.app.NotificationCompat import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.test.A_COLOR_INT import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator @@ -47,6 +48,7 @@ class DefaultSummaryGroupMessageCreatorTest { invitationNotifications = emptyList(), simpleNotifications = emptyList(), fallbackNotifications = emptyList(), + color = A_COLOR_INT, ) notificationCreator.createSummaryListNotificationResult.assertions() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index 30c433a513..b8f4364ddb 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -11,6 +11,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.A_COLOR_INT 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.push.impl.notifications.fake.FakeActiveNotificationsProvider @@ -53,7 +54,7 @@ class NotificationDataFactoryTest { val expectedNotification = notificationCreator.createRoomInvitationNotificationResult(AN_INVITATION_EVENT) val roomInvitation = listOf(AN_INVITATION_EVENT) - val result = toNotifications(roomInvitation) + val result = toNotifications(roomInvitation, A_COLOR_INT) assertThat(result).isEqualTo( listOf( @@ -73,7 +74,7 @@ class NotificationDataFactoryTest { val expectedNotification = notificationCreator.createRoomInvitationNotificationResult(AN_INVITATION_EVENT) val roomInvitation = listOf(A_SIMPLE_EVENT) - val result = toNotifications(roomInvitation) + val result = toNotifications(roomInvitation, A_COLOR_INT) assertThat(result).isEqualTo( listOf( @@ -93,11 +94,12 @@ class NotificationDataFactoryTest { val events = listOf(A_MESSAGE_EVENT) val expectedNotification = RoomNotification( notification = fakeRoomGroupMessageCreator.createRoomMessage( - MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), - events, - A_ROOM_ID, - FakeImageLoader().getImageLoader(), - null, + currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + events = events, + roomId = A_ROOM_ID, + imageLoader = FakeImageLoader().getImageLoader(), + existingNotification = null, + color = A_COLOR_INT, ), roomId = A_ROOM_ID, summaryLine = "A room name: Bob Hello world!", @@ -112,6 +114,7 @@ class NotificationDataFactoryTest { messages = roomWithMessage, currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), + color = A_COLOR_INT, ) assertThat(result.size).isEqualTo(1) @@ -128,6 +131,7 @@ class NotificationDataFactoryTest { messages = redactedRoom, currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), + color = A_COLOR_INT, ) assertThat(result).isEmpty() @@ -145,11 +149,12 @@ class NotificationDataFactoryTest { val withRedactedRemoved = listOf(A_MESSAGE_EVENT.copy(eventId = EventId("\$not-redacted"))) val expectedNotification = RoomNotification( notification = fakeRoomGroupMessageCreator.createRoomMessage( - MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), - withRedactedRemoved, - A_ROOM_ID, - FakeImageLoader().getImageLoader(), - null, + currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + events = withRedactedRemoved, + roomId = A_ROOM_ID, + imageLoader = FakeImageLoader().getImageLoader(), + existingNotification = null, + color = A_COLOR_INT, ), roomId = A_ROOM_ID, summaryLine = "A room name: Bob Hello world!", @@ -163,6 +168,7 @@ class NotificationDataFactoryTest { messages = roomWithRedactedMessage, currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), + color = A_COLOR_INT, ) assertThat(result.size).isEqualTo(1) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index 8912693bc4..069aaf22ba 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.push.impl.notifications +import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID @@ -58,6 +59,7 @@ class NotificationRendererTest { private val notificationRenderer = NotificationRenderer( notificationDisplayer = notificationDisplayer, notificationDataFactory = notificationDataFactory, + enterpriseService = FakeEnterpriseService(), ) @Test diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index 7786fb261e..06283a76d0 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -16,6 +16,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.A_COLOR_INT import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID @@ -50,7 +51,9 @@ class DefaultNotificationCreatorTest { @Test fun `test createDiagnosticNotification`() { val sut = createNotificationCreator() - val result = sut.createDiagnosticNotification() + val result = sut.createDiagnosticNotification( + color = A_COLOR_INT, + ) result.commonAssertions( expectedGroup = null, expectedCategory = NotificationCompat.CATEGORY_STATUS, @@ -72,7 +75,8 @@ class DefaultNotificationCreatorTest { isUpdated = false, timestamp = A_FAKE_TIMESTAMP, cause = null, - ) + ), + color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -97,7 +101,8 @@ class DefaultNotificationCreatorTest { canBeReplaced = false, isRedacted = false, isUpdated = false, - ) + ), + color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -122,7 +127,8 @@ class DefaultNotificationCreatorTest { canBeReplaced = false, isRedacted = false, isUpdated = false, - ) + ), + color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -148,7 +154,8 @@ class DefaultNotificationCreatorTest { isRedacted = false, isUpdated = false, roomName = "roomName", - ) + ), + color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -181,7 +188,8 @@ class DefaultNotificationCreatorTest { isRedacted = false, isUpdated = false, roomName = "roomName", - ) + ), + color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -197,6 +205,7 @@ class DefaultNotificationCreatorTest { compatSummary = "compatSummary", noisy = false, lastMessageTimestamp = 123_456L, + color = A_COLOR_INT, ) result.commonAssertions( expectedGroup = matrixUser.userId.value, @@ -212,6 +221,7 @@ class DefaultNotificationCreatorTest { compatSummary = "compatSummary", noisy = true, lastMessageTimestamp = 123_456L, + color = A_COLOR_INT, ) result.commonAssertions( expectedGroup = matrixUser.userId.value, @@ -240,6 +250,7 @@ class DefaultNotificationCreatorTest { existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), events = emptyList(), + color = A_COLOR_INT, ) result.commonAssertions() } @@ -266,6 +277,7 @@ class DefaultNotificationCreatorTest { existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), events = emptyList(), + color = A_COLOR_INT, ) result.commonAssertions() } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt index 3cbed6e8bc..491b0bac33 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.push.impl.notifications.fake import android.app.Notification import android.graphics.Bitmap +import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.user.MatrixUser @@ -44,22 +45,32 @@ class FakeNotificationCreator( currentUser: MatrixUser, existingNotification: Notification?, imageLoader: ImageLoader, - events: List + events: List, + @ColorInt color: Int, ): Notification { return createMessagesListNotificationResult( listOf(roomInfo, threadId, largeIcon, lastMessageTimestamp, tickerText, currentUser, existingNotification, imageLoader, events) ) } - override fun createRoomInvitationNotification(inviteNotifiableEvent: InviteNotifiableEvent): Notification { + override fun createRoomInvitationNotification( + inviteNotifiableEvent: InviteNotifiableEvent, + @ColorInt color: Int, + ): Notification { return createRoomInvitationNotificationResult(inviteNotifiableEvent) } - override fun createSimpleEventNotification(simpleNotifiableEvent: SimpleNotifiableEvent): Notification { + override fun createSimpleEventNotification( + simpleNotifiableEvent: SimpleNotifiableEvent, + @ColorInt color: Int, + ): Notification { return createSimpleNotificationResult(simpleNotifiableEvent) } - override fun createFallbackNotification(fallbackNotifiableEvent: FallbackNotifiableEvent): Notification { + override fun createFallbackNotification( + fallbackNotifiableEvent: FallbackNotifiableEvent, + @ColorInt color: Int, + ): Notification { return createFallbackNotificationResult(fallbackNotifiableEvent) } @@ -67,12 +78,15 @@ class FakeNotificationCreator( currentUser: MatrixUser, compatSummary: String, noisy: Boolean, - lastMessageTimestamp: Long + lastMessageTimestamp: Long, + @ColorInt color: Int, ): Notification { return createSummaryListNotificationResult(currentUser, compatSummary, noisy, lastMessageTimestamp) } - override fun createDiagnosticNotification(): Notification { + override fun createDiagnosticNotification( + @ColorInt color: Int, + ): Notification { return createDiagnosticNotificationResult() } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt index fed6e3c7a3..9a0a5fe7ef 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.push.impl.notifications.fake +import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.NotificationDataFactory @@ -33,31 +34,45 @@ class FakeNotificationDataFactory( List, List, SummaryNotification - > = lambdaRecorder { _, _, _, _, _ -> SummaryNotification.Update(A_NOTIFICATION) }, + > = lambdaRecorder { _, _, _, _, _ -> SummaryNotification.Update(A_NOTIFICATION) }, var inviteToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, var simpleEventToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, var fallbackEventToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, ) : NotificationDataFactory { - override suspend fun toNotifications(messages: List, currentUser: MatrixUser, imageLoader: ImageLoader): List { + override suspend fun toNotifications( + messages: List, + currentUser: MatrixUser, + imageLoader: ImageLoader, + @ColorInt color: Int, + ): List { return messageEventToNotificationsResult(messages, currentUser, imageLoader) } @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(invites: List): List { + override fun toNotifications( + invites: List, + @ColorInt color: Int, + ): List { return inviteToNotificationsResult(invites) } @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(simpleEvents: List): List { + override fun toNotifications( + simpleEvents: List, + @ColorInt color: Int, + ): List { return simpleEventToNotificationsResult(simpleEvents) } @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications(fallback: List): List { + override fun toNotifications( + fallback: List, + @ColorInt color: Int, + ): List { return fallbackEventToNotificationsResult(fallback) } @@ -67,6 +82,7 @@ class FakeNotificationDataFactory( invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): SummaryNotification { return summaryToNotificationsResult( currentUser, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt index c531735a1e..344c77716f 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.push.impl.notifications.fake import android.app.Notification +import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.user.MatrixUser @@ -19,14 +20,15 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder class FakeRoomGroupMessageCreator( var createRoomMessageResult: LambdaFiveParamsRecorder, RoomId, ImageLoader, Notification?, Notification> = - lambdaRecorder { _, _, _, _, _, -> A_NOTIFICATION } + lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION } ) : RoomGroupMessageCreator { override suspend fun createRoomMessage( currentUser: MatrixUser, events: List, roomId: RoomId, imageLoader: ImageLoader, - existingNotification: Notification? + existingNotification: Notification?, + @ColorInt color: Int, ): Notification { return createRoomMessageResult(currentUser, events, roomId, imageLoader, existingNotification) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt index ed3ca3027e..bc8a5515c9 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.push.impl.notifications.fake import android.app.Notification +import androidx.annotation.ColorInt import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.OneShotNotification import io.element.android.libraries.push.impl.notifications.RoomNotification @@ -18,8 +19,7 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder class FakeSummaryGroupMessageCreator( var createSummaryNotificationResult: LambdaFiveParamsRecorder< - MatrixUser, List, List, List, List, Notification - > = + MatrixUser, List, List, List, List, Notification> = lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION } ) : SummaryGroupMessageCreator { override fun createSummaryNotification( @@ -28,6 +28,7 @@ class FakeSummaryGroupMessageCreator( invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, + @ColorInt color: Int, ): Notification { return createSummaryNotificationResult( currentUser, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTestTest.kt index eecb3801fd..7d94fd0082 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/NotificationTestTest.kt @@ -8,6 +8,8 @@ package io.element.android.libraries.push.impl.troubleshoot import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootTestState @@ -64,10 +66,12 @@ class NotificationTestTest { private fun createNotificationTest(): NotificationTest { return NotificationTest( + sessionId = A_SESSION_ID, notificationCreator = notificationCreator, notificationDisplayer = fakeNotificationDisplayer, notificationClickHandler = notificationClickHandler, stringProvider = FakeStringProvider(), + enterpriseService = FakeEnterpriseService(), ) } } From 06cf6c321eb7979a39716aac2f13cff981eb6569 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 17:06:03 +0200 Subject: [PATCH 215/898] Remove element_logo_green.xml from the diagnostic notification. --- .../factories/NotificationCreator.kt | 14 ------------ .../drawable-xxhdpi/element_logo_green.xml | 22 ------------------- 2 files changed, 36 deletions(-) delete mode 100644 libraries/push/impl/src/main/res/drawable-xxhdpi/element_logo_green.xml diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 8e5605ccaf..873137f7c0 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -10,13 +10,10 @@ package io.element.android.libraries.push.impl.notifications.factories import android.app.Notification import android.content.Context import android.graphics.Bitmap -import android.graphics.Canvas import androidx.annotation.ColorInt -import androidx.annotation.DrawableRes import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat.MessagingStyle import androidx.core.app.Person -import androidx.core.content.res.ResourcesCompat import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding @@ -380,7 +377,6 @@ class DefaultNotificationCreator( .setContentTitle(buildMeta.applicationName) .setContentText(stringProvider.getString(R.string.notification_test_push_notification_content)) .setSmallIcon(CommonDrawables.ic_notification) - .setLargeIcon(getBitmap(R.drawable.element_logo_green)) .setColor(color) .setPriority(NotificationCompat.PRIORITY_MAX) .setCategory(NotificationCompat.CATEGORY_STATUS) @@ -469,16 +465,6 @@ class DefaultNotificationCreator( } } - private fun getBitmap(@DrawableRes drawableRes: Int): Bitmap? { - val drawable = ResourcesCompat.getDrawable(context.resources, drawableRes, null) ?: return null - val canvas = Canvas() - val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888) - canvas.setBitmap(bitmap) - drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight) - drawable.draw(canvas) - return bitmap - } - companion object { const val MESSAGE_EVENT_ID = "message_event_id" } diff --git a/libraries/push/impl/src/main/res/drawable-xxhdpi/element_logo_green.xml b/libraries/push/impl/src/main/res/drawable-xxhdpi/element_logo_green.xml deleted file mode 100644 index e9b119c969..0000000000 --- a/libraries/push/impl/src/main/res/drawable-xxhdpi/element_logo_green.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - From 69b4fdec048a6b7312a134ea9df783ba626874ff Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 24 Oct 2025 18:15:15 +0200 Subject: [PATCH 216/898] Fix ktlint --- .../element/android/features/home/impl/spaces/HomeSpacesView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt index 12ef091b3a..0b8e0bd14b 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt @@ -9,8 +9,8 @@ package io.element.android.features.home.impl.spaces import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.PreviewParameter From 0250e6fa75bb8575d262a68d95797812e5f01e61 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 18:13:43 +0200 Subject: [PATCH 217/898] Let notifications uses the brandColor. --- enterprise | 2 +- .../enterprise/impl/DefaultEnterpriseServiceTest.kt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/enterprise b/enterprise index a3e54addf0..c5249d001c 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit a3e54addf0d61189bb6868f9b5dc733a6a1fb3ea +Subproject commit c5249d001c766261206e145fa2c54d5d9c95f2e6 diff --git a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt index b617f84bdd..92303a189d 100644 --- a/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt +++ b/features/enterprise/impl-foss/src/test/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseServiceTest.kt @@ -51,6 +51,16 @@ class DefaultEnterpriseServiceTest { } } + @Test + fun `brandColorsFlow always emits null`() = runTest { + val defaultEnterpriseService = DefaultEnterpriseService() + defaultEnterpriseService.brandColorsFlow(null).test { + val initialState = awaitItem() + assertThat(initialState).isNull() + awaitComplete() + } + } + @Test fun `semanticColorsFlow always emits the same value for a session`() = runTest { val defaultEnterpriseService = DefaultEnterpriseService() From 10d4c102e0545957efea519c114d462e7106eb0c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 24 Oct 2025 18:29:45 +0200 Subject: [PATCH 218/898] Update ref. --- enterprise | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enterprise b/enterprise index c5249d001c..19d78b589d 160000 --- a/enterprise +++ b/enterprise @@ -1 +1 @@ -Subproject commit c5249d001c766261206e145fa2c54d5d9c95f2e6 +Subproject commit 19d78b589dfbca08b1e8306bff1a236fa2cdf528 From 06c26582f22972563cde368ce164edc4403810e0 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 24 Oct 2025 20:48:22 +0200 Subject: [PATCH 219/898] misc(navigation) : makes SpaceFlowGraph child of RoomGraph --- .../io/element/android/features/space/impl/SpaceFlowNode.kt | 4 ++-- .../element/android/features/space/impl/di/SpaceFlowGraph.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 78472c7b31..1487aa4ac7 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -31,12 +31,12 @@ import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.DependencyInjectionGraphOwner -import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.spaces.SpaceService import kotlinx.parcelize.Parcelize -@ContributesNode(SessionScope::class) +@ContributesNode(RoomScope::class) @AssistedInject class SpaceFlowNode( @Assisted val buildContext: BuildContext, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/di/SpaceFlowGraph.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/di/SpaceFlowGraph.kt index b1dac522b4..c484d43a70 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/di/SpaceFlowGraph.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/di/SpaceFlowGraph.kt @@ -11,12 +11,12 @@ import dev.zacsweers.metro.ContributesTo import dev.zacsweers.metro.GraphExtension import dev.zacsweers.metro.Provides import io.element.android.libraries.architecture.NodeFactoriesBindings -import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.spaces.SpaceRoomList @GraphExtension(SpaceFlowScope::class) interface SpaceFlowGraph : NodeFactoriesBindings { - @ContributesTo(SessionScope::class) + @ContributesTo(RoomScope::class) @GraphExtension.Factory interface Factory { fun create(@Provides spaceRoomList: SpaceRoomList): SpaceFlowGraph From 5c88c783165a5184ff633aa7f82d0994a51ede70 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 00:13:11 +0000 Subject: [PATCH 220/898] chore(deps): update github artifact actions --- .github/workflows/build.yml | 4 ++-- .github/workflows/build_enterprise.yml | 2 +- .github/workflows/maestro-local.yml | 6 +++--- .github/workflows/nightlyReports.yml | 4 ++-- .github/workflows/quality.yml | 10 +++++----- .github/workflows/release.yml | 6 +++--- .github/workflows/tests.yml | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cf7f262cee..6c77cb3770 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,7 +53,7 @@ jobs: run: ./gradlew :app:assembleGplayDebug app:assembleFDroidDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES - name: Upload debug APKs if: ${{ matrix.variant == 'debug' }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-debug path: | @@ -61,7 +61,7 @@ jobs: app/build/outputs/apk/fdroid/debug/*-universal-debug.apk - name: Upload x86_64 APK for Maestro if: ${{ matrix.variant == 'debug' }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-apk-maestro path: | diff --git a/.github/workflows/build_enterprise.yml b/.github/workflows/build_enterprise.yml index 0d9b5949cc..bce9d923f3 100644 --- a/.github/workflows/build_enterprise.yml +++ b/.github/workflows/build_enterprise.yml @@ -61,7 +61,7 @@ jobs: run: ./gradlew :app:assembleGplayDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES - name: Upload debug Enterprise APKs if: ${{ matrix.variant == 'debug' }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-enterprise-debug path: | diff --git a/.github/workflows/maestro-local.yml b/.github/workflows/maestro-local.yml index 7481bec0ba..ff0ac49f5c 100644 --- a/.github/workflows/maestro-local.yml +++ b/.github/workflows/maestro-local.yml @@ -44,7 +44,7 @@ jobs: ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }} ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }} - name: Upload APK as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-apk-maestro path: | @@ -69,7 +69,7 @@ jobs: # https://github.com/actions/checkout/issues/881 ref: ${{ github.ref }} - name: Download APK artifact from previous job - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: elementx-apk-maestro - name: Enable KVM group perms @@ -102,7 +102,7 @@ jobs: script: | .github/workflows/scripts/maestro/maestro-local-with-screen-recording.sh app-gplay-x86_64-debug.apk - name: Upload test results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: test-results path: | diff --git a/.github/workflows/nightlyReports.yml b/.github/workflows/nightlyReports.yml index 537565743e..080cf99b05 100644 --- a/.github/workflows/nightlyReports.yml +++ b/.github/workflows/nightlyReports.yml @@ -42,7 +42,7 @@ jobs: - name: ✅ Upload kover report if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: kover-results path: | @@ -74,7 +74,7 @@ jobs: run: ./gradlew dependencyCheckAnalyze $CI_GRADLE_ARG_PROPERTIES - name: Upload dependency analysis if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: dependency-analysis path: build/reports/dependency-check-report.html diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 5277cbdf05..1b46f1373c 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -97,7 +97,7 @@ jobs: run: ./gradlew :tests:konsist:testDebugUnitTest $CI_GRADLE_ARG_PROPERTIES --no-daemon - name: Upload reports if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: konsist-report path: | @@ -174,7 +174,7 @@ jobs: run: ./gradlew :app:lintGplayDebug :app:lintFdroidDebug lintDebug $CI_GRADLE_ARG_PROPERTIES --continue - name: Upload reports if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: linting-report path: | @@ -214,7 +214,7 @@ jobs: run: ./gradlew detekt $CI_GRADLE_ARG_PROPERTIES --no-daemon - name: Upload reports if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: detekt-report path: | @@ -254,7 +254,7 @@ jobs: run: ./gradlew ktlintCheck $CI_GRADLE_ARG_PROPERTIES - name: Upload reports if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ktlint-report path: | @@ -317,7 +317,7 @@ jobs: # https://github.com/actions/checkout/issues/881 ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }} - name: Download reports from previous jobs - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 - name: Prepare Danger if: always() run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2cce85bd5a..29ff4a5373 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: ELEMENT_CALL_RAGESHAKE_URL: ${{ secrets.ELEMENT_CALL_RAGESHAKE_URL }} run: ./gradlew bundleGplayRelease $CI_GRADLE_ARG_PROPERTIES - name: Upload bundle as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-app-gplay-bundle-unsigned path: | @@ -74,7 +74,7 @@ jobs: ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }} run: ./gradlew bundleGplayRelease $CI_GRADLE_ARG_PROPERTIES - name: Upload bundle as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-enterprise-app-gplay-bundle-unsigned path: | @@ -102,7 +102,7 @@ jobs: ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }} run: ./gradlew assembleFdroidRelease $CI_GRADLE_ARG_PROPERTIES - name: Upload apks as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: elementx-app-fdroid-apks-unsigned path: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 22c302cbb3..4965530b5a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -61,7 +61,7 @@ jobs: - name: 🚫 Upload kover failed coverage reports if: failure() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: kover-error-report path: | @@ -73,7 +73,7 @@ jobs: - name: 🚫 Upload test results on error if: failure() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: tests-and-screenshot-tests-results path: | From 2949dfb42600e5de0dd9dc8e22129b7e982b57e4 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 27 Oct 2025 09:53:09 +0100 Subject: [PATCH 221/898] misc(navigation) : add onDetailsClick on SpaceView --- .../appnav/room/joined/JoinedRoomLoadedFlowNode.kt | 3 +++ .../android/features/space/api/SpaceEntryPoint.kt | 1 + .../android/features/space/impl/SpaceFlowNode.kt | 4 ++++ .../android/features/space/impl/root/SpaceNode.kt | 4 ++++ .../android/features/space/impl/root/SpaceView.kt | 11 +++++++++++ 5 files changed, 23 insertions(+) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 37c4e14d62..93e0c64a7f 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -166,6 +166,9 @@ class JoinedRoomLoadedFlowNode( callbacks.forEach { it.onOpenRoom(roomId, viaParameters) } } + override fun onOpenDetails() { + backstack.push(NavTarget.RoomDetails) + } } return spaceEntryPoint.nodeBuilder(this, buildContext) .inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId)) diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index bdea93f3ef..a5f1134bf3 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -32,5 +32,6 @@ interface SpaceEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) + fun onOpenDetails() } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 1487aa4ac7..833186958b 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -84,6 +84,10 @@ class SpaceFlowNode( callback.onOpenRoom(roomId, viaParameters) } + override fun onOpenDetails() { + callback.onOpenDetails() + } + override fun onLeaveSpace() { backstack.push(NavTarget.Leave) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 52c3472182..5266ba9f46 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -41,6 +41,7 @@ class SpaceNode( ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) + fun onOpenDetails() fun onLeaveSpace() } @@ -76,6 +77,9 @@ class SpaceNode( onRoomClick = { spaceRoom -> callback.onOpenRoom(spaceRoom.roomId, spaceRoom.via) }, + onDetailsClick = { + callback.onOpenDetails() + }, onShareSpace = { onShareRoom(context) }, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index cd722ac6f3..8f01ea3194 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -24,6 +25,7 @@ import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics @@ -73,6 +75,7 @@ fun SpaceView( onRoomClick: (spaceRoom: SpaceRoom) -> Unit, onShareSpace: () -> Unit, onLeaveSpaceClick: () -> Unit, + onDetailsClick: () -> Unit, modifier: Modifier = Modifier, acceptDeclineInviteView: @Composable () -> Unit, ) { @@ -84,6 +87,7 @@ fun SpaceView( onBackClick = onBackClick, onLeaveSpaceClick = onLeaveSpaceClick, onShareSpace = onShareSpace, + onDetailsClick = onDetailsClick ) }, content = { padding -> @@ -244,6 +248,7 @@ private fun SpaceViewTopBar( currentSpace: SpaceRoom?, onBackClick: () -> Unit, onLeaveSpaceClick: () -> Unit, + onDetailsClick: () -> Unit, onShareSpace: () -> Unit, modifier: Modifier = Modifier, ) { @@ -254,9 +259,14 @@ private fun SpaceViewTopBar( }, title = { if (currentSpace != null) { + val roundedCornerShape = RoundedCornerShape(8.dp) SpaceAvatarAndNameRow( name = currentSpace.displayName, avatarData = currentSpace.getAvatarData(AvatarSize.TimelineRoom), + modifier = Modifier + .clip(roundedCornerShape) + // TODO enable when screen ready for space + // .clickable(onClick = onDetailsClick) ) } }, @@ -386,6 +396,7 @@ internal fun SpaceViewPreview( onShareSpace = {}, onLeaveSpaceClick = {}, acceptDeclineInviteView = {}, + onDetailsClick = {}, onBackClick = {}, ) } From 45d4e9bf229497752cd2a9a211137217867a8fc5 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 27 Oct 2025 10:56:46 +0000 Subject: [PATCH 222/898] Update screenshots --- .../appnav.room.joined_LoadingRoomNodeView_Day_0_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Day_1_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Night_0_en.png | 4 ++-- .../appnav.room.joined_LoadingRoomNodeView_Night_1_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_0_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_1_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_2_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Day_5_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_0_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_1_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_2_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_3_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_4_en.png | 4 ++-- .../images/features.space.impl.root_SpaceView_Night_5_en.png | 4 ++-- 16 files changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png index 58d3ffea16..13b726fefb 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9583a29e680bee98819258e5b7356dd8677144957d5869da72c47685d986e87 -size 6494 +oid sha256:071914fc3e7bbc2fc6ef8a1b4544b9126c05dd08b2123666d320223582423226 +size 5632 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png index ef5c3290e1..db2c45090b 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5c19a8b26c9187c9bfd630242b15370ec8f0b874f9d3913ce53c743c0e0bdcd -size 8574 +oid sha256:5e9df6017bd0771e1337f82b75d13a0a8a572156e6900ae72f208e9bb2aaddb7 +size 7717 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png index 05eb8b590c..1dddbda28f 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74ad11143fc70164f67a8326cb87ce90a2c8730317540810ea138e39fc9093fa -size 6306 +oid sha256:811bd4534f4f16530cea1489b62d393e2fe7bf1b18b859a924333cd9d309f8dd +size 5566 diff --git a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png index 04b13d3533..53f10d4bd4 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.room.joined_LoadingRoomNodeView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bde612ade7298aeef44bbc480ee9d742ccb8c94108e21dcae9e804c744032a08 -size 8308 +oid sha256:030971f2c5f8c19f47fed2fa207c6d84d536c603fa7705ea6c288736684b7868 +size 7553 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png index 8e0e2b04ab..0f62df3d20 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba78cafc20c3d865fec9c7ab92f90e2565f233b224f99fb0665ad0d0c3c2be4e -size 34607 +oid sha256:c55277089a4447b618a0e8c058718ecf9d3da6d437322f0e23e5fd70019f6b00 +size 34585 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png index 0e81c563f9..bb1c9d1947 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe62bb5d157ba1b4c7a4e4f443f4b1b3e7d68bc0ac59ce7edb6fbc99e2abbdf7 -size 34795 +oid sha256:241f5500cb7212fac174466bbe7855ccf39de3e3764a83202388b947d90ae807 +size 34770 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png index e692443bf6..6f624546ab 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88db0bd5d05963761bd3b3a5a97834f8937a9a0e10723238f2c104c5d03eb81a -size 35089 +oid sha256:92785cf3a4010779b0fbcd58be3437a22808b0a2f02a19a5cfd50eb3bd58ed26 +size 35058 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png index 9a129e53f4..8b5b2f5f27 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e8b65396dedff81056157620e2390c8d69954ee288266b575ac61aba16c2bec -size 62590 +oid sha256:de26882f13bac98b2cb5365d98e06e781d516d179adb8328cf22cf524e6fd79e +size 62568 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png index 2ac2e539b3..cfa8381d77 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8e1fb3b8b62ea8583a5bc9a18f39dbe71684e7d019bf63b22b873851b219209 -size 63270 +oid sha256:a121fdb9473512b0264e48294df1799a7a6bf9b469df973fbe41f31bbf98f1d0 +size 63248 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png index 0a12faa0bd..f20b7c4048 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e60857b4c0d801d3a6ad7f7383b8ff8428157763ca46d30c2a559a4957cb71e -size 59706 +oid sha256:a3506b4f646408262450ae51b612f86c1171ed972c1d7ea8871c4dc090556c7a +size 59702 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png index d27c35077e..e8f00148a3 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53b3736b922b746a996f71aa38b3937ebc16e37eb40bb57cd1991d6f9d98ea33 -size 34022 +oid sha256:f2407444889af236ef21a90c47a5d3e05df8b15b9cc9483e84377e3af8794772 +size 33996 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png index 2dcc62b1d5..6f012ad603 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f2d6b368d4a8eaa8f3a396ba6edf8252d52b0e7ebd3b3f416c60050d3cd3c57 -size 34170 +oid sha256:fee41efefc2ca1d6670d8455ac756c6b314aab54510eab8a4e597f1cc1edf3f8 +size 34141 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png index bebf4c51f7..24f916eac9 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b0b347f48ac09d05a2348383580d26e3725af2ef48558be86541afa239f3b06 -size 34485 +oid sha256:ea955839cbd1aeba5de2780cee413628c7d46383398b10125cd3a900fb41d5a5 +size 34459 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png index f932a63f92..153b68c3d0 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ff5ca08d441240de9e5adc35e41bceeb0f462979777345da4b2865e9a80012e -size 61405 +oid sha256:cba2c99744aeb2a869ae2ed700d7241b1d0b6ed979b16d2be9774ddbc5f8f28a +size 61381 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png index bcc1e494e8..f36d90e33c 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f35b63ac49c799a5b3b5ad47652fe0f199efbbd2a285f782170c1edcd9ae723 -size 61955 +oid sha256:b32d65accabc357208efeb2ec61374182479541299ade28184f82938e59bfdd5 +size 61932 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png index 4367883548..66a7762467 100644 --- a/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.root_SpaceView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f470577ca0f0de530db1ab0d531f5b14630f9082cc4c34ad4e3fcbc1ab9ee530 -size 57954 +oid sha256:7c161ff55e8a235fe403e53ee179b299fd2563d85ef64bfe6d0dd9295228685b +size 57925 From b2aa6b162297abe4fcc111b80011ef79f26b7d34 Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Mon, 27 Oct 2025 13:53:07 +0100 Subject: [PATCH 223/898] Sync Strings from Localazy (#5610) Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com> --- .../src/main/res/values-cs/translations.xml | 11 + .../src/main/res/values-sk/translations.xml | 11 + .../impl/src/main/res/values/localazy.xml | 2 +- .../src/main/res/values-cs/translations.xml | 2 + .../src/main/res/values-sk/translations.xml | 2 + .../src/main/res/values-cs/translations.xml | 12 +- .../src/main/res/values-sk/translations.xml | 13 +- .../src/main/res/values-sk/translations.xml | 2 + .../src/main/res/values-cs/translations.xml | 6 + .../src/main/res/values-sk/translations.xml | 6 + .../src/main/res/values-sk/translations.xml | 2 + .../src/main/res/values-sk/translations.xml | 2 + .../impl/src/main/res/values/localazy.xml | 2 +- .../impl/src/main/res/values/localazy.xml | 10 +- .../src/main/res/values-cs/translations.xml | 3 + .../src/main/res/values-sk/translations.xml | 14 + .../src/main/res/values-sk/translations.xml | 6 +- .../src/main/res/values-cs/translations.xml | 3 + .../src/main/res/values-sk/translations.xml | 12 + .../src/main/res/values-cs/translations.xml | 8 + .../src/main/res/values-fi/translations.xml | 1 + .../src/main/res/values-sk/translations.xml | 26 +- .../src/main/res/values/localazy.xml | 2 + ...om.joined_LoadingRoomNodeView_Day_1_de.png | 4 +- ...ultRoomListTopBarMultiAccount_Day_0_de.png | 3 - ...ltRoomListTopBarWithIndicator_Day_0_de.png | 3 - ...ponents_DefaultRoomListTopBar_Day_0_de.png | 3 - ...onents_HomeTopBarMultiAccount_Day_0_de.png | 3 + ...nents_HomeTopBarWithIndicator_Day_0_de.png | 3 + ...me.impl.components_HomeTopBar_Day_0_de.png | 3 + ...me.impl.spaces_HomeSpacesView_Day_0_de.png | 4 +- ...me.impl.spaces_HomeSpacesView_Day_1_de.png | 4 +- .../features.home.impl_HomeView_Day_0_de.png | 4 +- .../features.home.impl_HomeView_Day_10_de.png | 4 +- .../features.home.impl_HomeView_Day_13_de.png | 4 +- .../features.home.impl_HomeView_Day_14_de.png | 4 +- .../features.home.impl_HomeView_Day_15_de.png | 4 +- .../features.home.impl_HomeView_Day_1_de.png | 4 +- .../features.home.impl_HomeView_Day_2_de.png | 4 +- .../features.home.impl_HomeView_Day_3_de.png | 4 +- .../features.home.impl_HomeView_Day_4_de.png | 4 +- .../features.home.impl_HomeView_Day_5_de.png | 4 +- .../features.home.impl_HomeView_Day_6_de.png | 4 +- .../features.home.impl_HomeView_Day_7_de.png | 4 +- .../features.home.impl_HomeView_Day_8_de.png | 4 +- .../features.home.impl_HomeView_Day_9_de.png | 4 +- ...s.messages.impl_MessagesView_Day_10_de.png | 3 - ...es.messages.impl_MessagesView_Day_1_de.png | 4 +- ...es.messages.impl_MessagesView_Day_2_de.png | 4 +- ...es.messages.impl_MessagesView_Day_3_de.png | 4 +- ...es.messages.impl_MessagesView_Day_4_de.png | 4 +- ...es.messages.impl_MessagesView_Day_5_de.png | 4 +- ...es.messages.impl_MessagesView_Day_6_de.png | 4 +- ...es.messages.impl_MessagesView_Day_7_de.png | 4 +- ...es.messages.impl_MessagesView_Day_8_de.png | 4 +- ...es.messages.impl_MessagesView_Day_9_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_3_de.png | 4 +- ...rivacy_SecurityAndPrivacyViewDark_9_de.png | 3 + ...ivacy_SecurityAndPrivacyViewLight_3_de.png | 4 +- ...ivacy_SecurityAndPrivacyViewLight_9_de.png | 3 + ...res.space.impl.root_SpaceView_Day_3_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_4_de.png | 4 +- ....components_SpaceRoomItemView_Day_0_de.png | 4 +- ....components_SpaceRoomItemView_Day_1_de.png | 4 +- ....components_SpaceRoomItemView_Day_2_de.png | 4 +- ....components_SpaceRoomItemView_Day_3_de.png | 4 +- ....components_SpaceRoomItemView_Day_4_de.png | 4 +- ....components_SpaceRoomItemView_Day_5_de.png | 4 +- ....components_SpaceRoomItemView_Day_6_de.png | 4 +- ....components_SpaceRoomItemView_Day_7_de.png | 4 +- ....components_SpaceRoomItemView_Day_8_de.png | 4 +- screenshots/html/data.js | 1836 ++++++++--------- ...impl_RoomMemberModerationView_Day_1_en.png | 4 +- ...impl_RoomMemberModerationView_Day_2_en.png | 4 +- ...impl_RoomMemberModerationView_Day_3_en.png | 4 +- ...impl_RoomMemberModerationView_Day_6_en.png | 4 +- ...pl_RoomMemberModerationView_Night_1_en.png | 4 +- ...pl_RoomMemberModerationView_Night_2_en.png | 4 +- ...pl_RoomMemberModerationView_Night_3_en.png | 4 +- ...pl_RoomMemberModerationView_Night_6_en.png | 4 +- 80 files changed, 1159 insertions(+), 1050 deletions(-) create mode 100644 features/announcement/impl/src/main/res/values-cs/translations.xml create mode 100644 features/announcement/impl/src/main/res/values-sk/translations.xml create mode 100644 features/space/impl/src/main/res/values-sk/translations.xml delete mode 100644 screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png delete mode 100644 screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png delete mode 100644 screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png create mode 100644 screenshots/de/features.home.impl.components_HomeTopBarMultiAccount_Day_0_de.png create mode 100644 screenshots/de/features.home.impl.components_HomeTopBarWithIndicator_Day_0_de.png create mode 100644 screenshots/de/features.home.impl.components_HomeTopBar_Day_0_de.png delete mode 100644 screenshots/de/features.messages.impl_MessagesView_Day_10_de.png create mode 100644 screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_de.png create mode 100644 screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_de.png diff --git a/features/announcement/impl/src/main/res/values-cs/translations.xml b/features/announcement/impl/src/main/res/values-cs/translations.xml new file mode 100644 index 0000000000..cf7ead1962 --- /dev/null +++ b/features/announcement/impl/src/main/res/values-cs/translations.xml @@ -0,0 +1,11 @@ + + + "Zobrazit prostory, které jste vytvořili nebo ke kterým jste se připojili" + "Přijmout nebo odmítnout pozvánky do prostorů" + "Objevte všechny místnosti, do kterých můžete vstoupit ve svých prostorech" + "Připojit se k veřejným prostorům" + "Opustit všechny prostory, ke kterým jste se připojili" + "Filtrování, vytváření a správa prostorů bude brzy k dispozici." + "Vítejte v beta verzi prostorů! S touto první verzí můžete:" + "Představujeme prostory" + diff --git a/features/announcement/impl/src/main/res/values-sk/translations.xml b/features/announcement/impl/src/main/res/values-sk/translations.xml new file mode 100644 index 0000000000..0b305499a7 --- /dev/null +++ b/features/announcement/impl/src/main/res/values-sk/translations.xml @@ -0,0 +1,11 @@ + + + "Zobraziť priestory, ktoré ste vytvorili alebo ku ktorým ste sa pripojili" + "Prijímať alebo odmietať pozvánky do priestorov" + "Objaviť všetky miestnosti, do ktorých sa môžete pripojiť vo svojich priestoroch" + "Pripojiť sa k verejnému priestoru" + "Opustiť akékoľvek priestory, ku ktorým ste sa pridali" + "Filtrovanie, vytváranie a správa priestorov bude čoskoro k dispozícii." + "Vitajte v beta verzii priestorov! S touto prvou verziou môžete:" + "Predstavujeme priestory" + diff --git a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml index 6e4918cde2..456426726a 100644 --- a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml +++ b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml @@ -38,7 +38,7 @@ "%1$d person" "%1$d people" - "Ban from room" + "Ban user" "Only remove member" "Unban" "They will be able to join this room again if invited." diff --git a/features/home/impl/src/main/res/values-cs/translations.xml b/features/home/impl/src/main/res/values-cs/translations.xml index 3699b7975e..1eab814e06 100644 --- a/features/home/impl/src/main/res/values-cs/translations.xml +++ b/features/home/impl/src/main/res/values-cs/translations.xml @@ -3,6 +3,8 @@ "Zakažte optimalizaci baterie pro tuto aplikaci, abyste měli jistotu, že budou přijata všechna oznámení." "Zakázat optimalizaci" "Nepřicházejí vám oznámení?" + "Váš zvuk oznámení byl aktualizován – je jasnější, rychlejší a méně rušivý." + "Aktualizovali jsme vaše zvuky" "Vygenerujte nový klíč pro obnovení, který lze použít k obnovení historie šifrovaných zpráv v případě, že ztratíte přístup ke svým zařízením." "Nastavení obnovy" "Nastavení obnovy" diff --git a/features/home/impl/src/main/res/values-sk/translations.xml b/features/home/impl/src/main/res/values-sk/translations.xml index f44e294432..275a4824b3 100644 --- a/features/home/impl/src/main/res/values-sk/translations.xml +++ b/features/home/impl/src/main/res/values-sk/translations.xml @@ -3,6 +3,8 @@ "Vypnite optimalizáciu batérie pre túto aplikáciu, aby ste sa uistili, že sú prijaté všetky upozornenia." "Zakázať optimalizáciu" "Oznámenia neprichádzajú?" + "Vaše oznámenia boli aktualizované – sú prehľadnejšie, rýchlejšie a menej rušivé." + "Obnovili sme vaše zvuky" "Vytvorte nový kľúč na obnovenie, ktorý môžete použiť na obnovenie vašej histórie šifrovaných správ v prípade straty prístupu k vašim zariadeniam." "Nastaviť obnovenie" "Nastaviť obnovenie" diff --git a/features/joinroom/impl/src/main/res/values-cs/translations.xml b/features/joinroom/impl/src/main/res/values-cs/translations.xml index 0c00c0c4bd..85403339e8 100644 --- a/features/joinroom/impl/src/main/res/values-cs/translations.xml +++ b/features/joinroom/impl/src/main/res/values-cs/translations.xml @@ -1,7 +1,7 @@ - "Z této místnosti jste byl vykázán uživatelem %1$s." - "Byl vám zakázán vstup do této místnosti" + "Byli jste vykázáni uživatelem %1$s." + "Byl vám zakázán vstup" "Důvod: %1$s." "Zrušit žádost" "Ano, zrušit" @@ -11,10 +11,10 @@ "Opravdu chcete odmítnout pozvánku do této místnosti? Tím také zabráníte tomu, aby vás %1$s kontaktoval(a) nebo pozval(a) do místností." "Odmítnout pozvání a zablokovat" "Odmítnout a zablokovat" - "Vstup do místnosti se nezdařil." - "Tato místnost je buď určena pouze pro zvané, nebo do ní může být omezen přístup na úrovni prostoru." - "Zapomenout na tuto místnost" - "Abyste se mohli připojit k této místnosti, potřebujete pozvánku." + "Vstup se nezdařil" + "Buď musíte být pozváni ke vstupu, nebo mohou existovat omezení přístupu." + "Zapomenout" + "Pro vstup potřebujete pozvánku" "Pozván(a)" "Vstoupit" "Abyste se mohli připojit, musíte být pozváni nebo být členem některého prostoru." diff --git a/features/joinroom/impl/src/main/res/values-sk/translations.xml b/features/joinroom/impl/src/main/res/values-sk/translations.xml index 35cc31af32..b6af52ca83 100644 --- a/features/joinroom/impl/src/main/res/values-sk/translations.xml +++ b/features/joinroom/impl/src/main/res/values-sk/translations.xml @@ -1,7 +1,7 @@ - "Používateľ %1$s vám zakázal prístup do tejto miestnosti." - "Bol vám zakázaný vstup do tejto miestnosti" + "Používateľ %1$s vám zakázal prístup." + "Bol vám zakázaný vstup" "Dôvod: %1$s." "Zrušiť žiadosť" "Áno, zrušiť" @@ -11,10 +11,11 @@ "Ste si istí, že chcete odmietnuť pozvanie na vstup do tejto miestnosti? To tiež zabráni tomu, aby vás %1$s kontaktoval/a alebo vás pozval/a do miestností." "Odmietnuť pozvánku a zablokovať" "Odmietnuť a zablokovať" - "Pripojenie do miestnosti zlyhalo." - "Táto miestnosť je buď len pre pozvaných, alebo môžu existovať obmedzenia na prístup na úrovni priestoru." - "Zabudnúť túto miestnosť" - "Potrebujete pozvanie, aby ste sa mohli pripojiť k tejto miestnosti" + "Vstup sa nepodaril" + "Buď musíte byť pozvaní pripojiť sa, alebo môžu existovať obmedzenia prístupu." + "Zabudnúť" + "Potrebujete pozvanie, aby ste sa mohli pripojiť" + "Pozvaný/á používateľom" "Pripojiť sa" "Možno budete musieť byť pozvaní alebo byť členom priestoru, aby ste sa mohli pripojiť." "Zaklopaním sa pripojíte" diff --git a/features/messages/impl/src/main/res/values-sk/translations.xml b/features/messages/impl/src/main/res/values-sk/translations.xml index 6fe6ec73ec..bca6ccfc89 100644 --- a/features/messages/impl/src/main/res/values-sk/translations.xml +++ b/features/messages/impl/src/main/res/values-sk/translations.xml @@ -7,6 +7,7 @@ "Predmety" "Smajlíky a ľudia" "Cestovanie a miesta" + "Nedávne emotikony" "Symboly" "Titulky nemusia byť viditeľné pre ľudí používajúcich staršie aplikácie." "Ťuknutím zmeníte kvalitu nahratého videa" @@ -15,6 +16,7 @@ "Nepodarilo sa nahrať médiá, skúste to prosím znova." "Maximálna povolená veľkosť súboru je %1$s." "Súbor je príliš veľký na nahratie" + "Položka %1$d z %2$d" "Optimalizovať kvalitu obrázku" "Prebieha spracovanie…" "Zablokovať používateľa" diff --git a/features/preferences/impl/src/main/res/values-cs/translations.xml b/features/preferences/impl/src/main/res/values-cs/translations.xml index 9fe8715cc3..0127a98b41 100644 --- a/features/preferences/impl/src/main/res/values-cs/translations.xml +++ b/features/preferences/impl/src/main/res/values-cs/translations.xml @@ -10,6 +10,7 @@ "Neplatné URL, ujistěte se, že jste uvedli protokol (http/https) a správnou adresu." "Skrýt avatary v žádostech o pozvání do místnosti" "Skrýt náhledy médií na časové ose" + "Experimentální funkce" "Rychlejší nahrávání fotografií a videí a snížení spotřeby dat" "Optimalizace kvality médií" "Moderování a bezpečnost" @@ -43,6 +44,11 @@ "Nelze aktualizovat profil" "Upravit profil" "Aktualizace profilu…" + "Povolit odpovědi ve vlákně" + "Aplikace se restartuje, aby se tato změna projevila." + "Vyzkoušejte naše nejnovější nápady, které jsou ve vývoji. Tyto funkce nejsou finalizované; mohou být nestabilní a mohou se změnit." + "Máte chuť experimentovat?" + "Experimentální funkce" "Další nastavení" "Halsové a video hovory" "Neshoda konfigurace" diff --git a/features/preferences/impl/src/main/res/values-sk/translations.xml b/features/preferences/impl/src/main/res/values-sk/translations.xml index f484a1aee0..9968c6d4cb 100644 --- a/features/preferences/impl/src/main/res/values-sk/translations.xml +++ b/features/preferences/impl/src/main/res/values-sk/translations.xml @@ -10,6 +10,7 @@ "Neplatná adresa URL, uistite sa, že ste uviedli protokol (http/https) a správnu adresu." "Skrytie profilové obrázky v žiadostiach o pozvánku do miestnosti" "Skryť ukážky médií na časovej osi" + "Laboratóriá" "Nahrávajte fotografie a videá rýchlejšie a znížte spotrebu dát" "Optimalizovať kvalitu médií" "Moderovanie a bezpečnosť" @@ -43,6 +44,11 @@ "Nepodarilo sa aktualizovať profil" "Upraviť profil" "Aktualizácia profilu…" + "Povoliť odpovede vo vlákne" + "Aplikácia sa reštartuje, aby sa táto zmena prejavila." + "Vyskúšajte naše najnovšie nápady vo vývoji. Tieto funkcie nie sú finalizované; môžu byť nestabilné a môžu sa zmeniť." + "Máte chuť experimentovať?" + "Laboratóriá" "Ďalšie nastavenia" "Audio a video hovory" "Nezhoda konfigurácie" diff --git a/features/rageshake/impl/src/main/res/values-sk/translations.xml b/features/rageshake/impl/src/main/res/values-sk/translations.xml index c46181ad29..9edad566ce 100644 --- a/features/rageshake/impl/src/main/res/values-sk/translations.xml +++ b/features/rageshake/impl/src/main/res/values-sk/translations.xml @@ -14,5 +14,7 @@ "Odoslať snímku obrazovky" "K vašej správe budú priložené záznamy o chybe, aby sme sa uistili, že všetko funguje správne. Ak chcete odoslať správu bez záznamov o chybe, vypnite toto nastavenie." "%1$s zlyhal pri poslednom použití. Chcete zdieľať správu o páde s našim tímom?" + "Ak máte problémy s upozorneniami, nahranie pravidiel pre push upozornenia nám môže pomôcť určiť príčinu. Upozorňujeme, že tieto pravidlá môžu obsahovať súkromné ​​informácie, ako napríklad vaše zobrazované meno alebo kľúčové slová, na ktoré sa majú dostávať upozornenia." + "Nastavenia odosielania upozornení" "Zobraziť záznamy" 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 530455cbf2..ff3dc18103 100644 --- a/features/roomdetails/impl/src/main/res/values-sk/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-sk/translations.xml @@ -50,6 +50,8 @@ "Pri načítaní nastavení oznámení došlo k chybe." "Nepodarilo sa stlmiť túto miestnosť, skúste to prosím znova." "Nepodarilo sa zrušiť stlmenie tejto miestnosti, skúste to prosím znova." + "Nezatvárajte aplikáciu, kým sa neukončí pozývanie." + "Príprava pozvánok…" "Pozvať ľudí" "Opustiť konverzáciu" "Opustiť miestnosť" diff --git a/features/roomdetails/impl/src/main/res/values/localazy.xml b/features/roomdetails/impl/src/main/res/values/localazy.xml index 3f4541dacb..ce8eb3a7b7 100644 --- a/features/roomdetails/impl/src/main/res/values/localazy.xml +++ b/features/roomdetails/impl/src/main/res/values/localazy.xml @@ -75,7 +75,7 @@ "%1$d person" "%1$d people" - "Ban from room" + "Ban user" "Only remove member" "Unban" "They will be able to join this room again if invited." diff --git a/features/roommembermoderation/impl/src/main/res/values/localazy.xml b/features/roommembermoderation/impl/src/main/res/values/localazy.xml index 16b013d537..e3f6071898 100644 --- a/features/roommembermoderation/impl/src/main/res/values/localazy.xml +++ b/features/roommembermoderation/impl/src/main/res/values/localazy.xml @@ -1,20 +1,20 @@ - "Ban from room" + "Ban user" "Ban" - "They won’t be able to join this room again if invited." + "They won’t be able to join again if invited." "Are you sure you want to ban this member?" "Banning %1$s" "Remove" "They will be able to join this room again if invited." "Are you sure you want to remove this member?" "View profile" - "Remove from room" + "Remove user" "Remove member and ban from joining in the future?" "Removing %1$s…" - "Unban from room" + "Unban user" "Unban" - "They would be able to join the room again if invited" + "They would be able to join again if invited" "Are you sure you want to unban this member?" "Unbanning %1$s" diff --git a/features/space/impl/src/main/res/values-cs/translations.xml b/features/space/impl/src/main/res/values-cs/translations.xml index 0c645f0650..d956219e17 100644 --- a/features/space/impl/src/main/res/values-cs/translations.xml +++ b/features/space/impl/src/main/res/values-cs/translations.xml @@ -7,5 +7,8 @@ "Opustit %1$d místností a prostor" "Tím budete také odstraněni ze všech místností v tomto prostoru." + "Než budete moci odejít, musíte pro tento prostor přiřadit jiného správce." + "Z následujících místností nebudete odstraněni, protože jste jediným administrátorem:" "Opustit %1$s?" + "Jste jediným administrátorem pro %1$s" diff --git a/features/space/impl/src/main/res/values-sk/translations.xml b/features/space/impl/src/main/res/values-sk/translations.xml new file mode 100644 index 0000000000..7b61f6a412 --- /dev/null +++ b/features/space/impl/src/main/res/values-sk/translations.xml @@ -0,0 +1,14 @@ + + + "%1$s (Správca)" + + "Opustiť %1$d miestnosť a priestor" + "Opustiť %1$d miestnosti a priestory" + "Opustiť %1$d miestností a priestorov" + + "Vyberte miestnosti, ktoré chcete opustiť a pre ktoré nie ste jediným správcom:" + "Pred odchodom musíte pre tento priestor určiť iného správcu." + "Z nasledujúcich miestností nebudete odstránený/á, pretože ste jediným správcom:" + "Opustiť %1$s?" + "Ste jediným administrátorom pre %1$s" + diff --git a/features/verifysession/impl/src/main/res/values-sk/translations.xml b/features/verifysession/impl/src/main/res/values-sk/translations.xml index 7c4781db77..932b8555fc 100644 --- a/features/verifysession/impl/src/main/res/values-sk/translations.xml +++ b/features/verifysession/impl/src/main/res/values-sk/translations.xml @@ -11,12 +11,12 @@ "Použite iné zariadenie" "Čaká sa na druhom zariadení…" "Zdá sa, že niečo nie je v poriadku. Časový limit žiadosti vypršal alebo bola žiadosť zamietnutá." - "Skontrolujte, či sa emotikony uvedené nižšie zhodujú s emotikonmi zobrazenými vo vašej druhej relácii." + "Potvrďte, že nižšie uvedené emotikony sa zhodujú s emotikonmi zobrazenými na vašom druhom zariadení." "Porovnajte emotikony" "Potvrďte, že emotikony uvedené nižšie zodpovedajú emotikonom zobrazeným na zariadení druhého používateľa." "Skontrolujte, či sa nižšie uvedené čísla zhodujú s číslami zobrazenými na vašej druhej relácii." "Porovnať čísla" - "Vaša nová relácia je teraz overená. Má prístup k vašim zašifrovaným správam a ostatní používatelia ju budú vidieť ako dôveryhodnú." + "Teraz môžete bezpečne čítať alebo odosielať správy na svojom druhom zariadení." "Teraz môžete dôverovať identite tohto používateľa pri odosielaní alebo prijímaní správ." "Zariadenie overené" "Zadajte kľúč na obnovenie" @@ -33,7 +33,7 @@ "Overenie zlyhalo" "Pokračujte iba vtedy, ak ste toto overenie začali." "Overte druhé zariadenie, aby bola vaša história správ zabezpečená." - "Vaša nová relácia je teraz overená. Má prístup k vašim zašifrovaným správam a ostatní používatelia ju budú vidieť ako dôveryhodnú." + "Teraz môžete bezpečne čítať alebo odosielať správy na svojom druhom zariadení." "Zariadenie overené" "Vyžadované overenie" "Nezhodujú sa" diff --git a/libraries/push/impl/src/main/res/values-cs/translations.xml b/libraries/push/impl/src/main/res/values-cs/translations.xml index 002c6d18ac..b93ae49dd7 100644 --- a/libraries/push/impl/src/main/res/values-cs/translations.xml +++ b/libraries/push/impl/src/main/res/values-cs/translations.xml @@ -71,7 +71,10 @@ "Blokovaní uživatelé" "Získat název aktuálního poskytovatele." "Nebyli vybráni žádní push poskytovatelé." + "Aktuální poskytovatel push oznámení: %1$s a současný distributor: %2$s. Ale distributor %3$s nebyl nalezen. Možná byla aplikace odinstalována?" + "Aktuální poskytovatel push oznámení: %1$s , ale nebyli nakonfigurováni žádní distributoři." "Aktuální push poskytovatel: %1$s." + "Aktuální poskytovatel push oznámení: %1$s (%2$s)" "Aktuální push poskytovatel" "Ujistěte se, že aplikace má alespoň jednoho push poskytovatele." "Nebyli nalezeni žádní push poskytovatelé." diff --git a/libraries/push/impl/src/main/res/values-sk/translations.xml b/libraries/push/impl/src/main/res/values-sk/translations.xml index 74ba29d78a..5dd3b8c0f2 100644 --- a/libraries/push/impl/src/main/res/values-sk/translations.xml +++ b/libraries/push/impl/src/main/res/values-sk/translations.xml @@ -60,9 +60,21 @@ "Synchronizácia na pozadí" "Služby Google" "Nenašli sa žiadne platné služby Google Play. Oznámenia nemusia fungovať správne." + "Kontrola blokovaných používateľov" + "Zobraziť blokovaných používateľov" + "Žiadni používatelia nie sú blokovaní." + + "Zablokovali ste %1$d používateľa. Nebudete dostávať oznámenia od tohto používateľa." + "Zablokovali ste %1$d používateľov. Nebudete dostávať oznámenia od týchto používateľov." + "Zablokovali ste %1$d používateľov. Nebudete dostávať oznámenia od týchto používateľov." + + "Blokovaní používatelia" "Získaťe názov aktuálneho poskytovateľa." "Nie sú vybraní žiadni poskytovatelia push." + "Aktuálny poskytovateľ push oznámení: %1$s a súčasný distribútor: %2$s. Ale distribútor %3$s sa nenašiel. Možno bola aplikácia odinštalovaná?" + "Aktuálny poskytovateľ push oznámení: %1$s, ale neboli nakonfigurovaní žiadni distribútori." "Aktuálny poskytovateľ push: %1$s." + "Aktuálny poskytovateľ push oznámení: %1$s (%2$s)" "Aktuálny poskytovateľ push" "Uistite sa, že aplikácia má aspoň jedného poskytovateľa push." "Nenašli sa žiadni poskytovatelia push." diff --git a/libraries/ui-strings/src/main/res/values-cs/translations.xml b/libraries/ui-strings/src/main/res/values-cs/translations.xml index f0e10894b4..8e86f59c3b 100644 --- a/libraries/ui-strings/src/main/res/values-cs/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cs/translations.xml @@ -97,6 +97,7 @@ "Zapomněli jste heslo?" "Přeposlat" "Přejít zpět" + "Přejít do nastavení" "Ignorovat" "Pozvat" "Pozvat přátele" @@ -113,6 +114,7 @@ "Spravovat účet" "Spravovat zařízení" "Zpráva" + "Minimalizovat" "Další" "Ne" "Teď ne" @@ -176,10 +178,12 @@ "Pokročilá nastavení" "obrázek" "Analytika" + "Načítání oznámení…" "Opustili jste místnost" "Byli jste odhlášeni z relace" "Vzhled" "Zvuk" + "Beta" "Blokovaní uživatelé" "Bubliny" "Hovor zahájen" @@ -228,6 +232,7 @@ Důvod: %1$s." "Nainstalovat APK" "Tento Matrix identifikátor nelze najít, takže pozvánka nemusí být přijata." "Opuštění místnosti" + "Opuštění prostoru" "Světlý" "Řádek zkopírován do schránky" "Odkaz zkopírován do schránky" @@ -319,6 +324,7 @@ Důvod: %1$s." "Nastavení" "Sdílet prostor" "Sdílená poloha" + "Sdílený prostor" "Odhlašování" "Něco se nepovedlo" "Narazili jsme na problém. Zkuste to prosím znovu." @@ -421,6 +427,7 @@ Opravdu chcete pokračovat?" "🔐️ Připojte se ke mně na %1$s" "Ahoj, ozvi se mi na %1$s: %2$s" "%1$s Android" + "Vlákno v %1$s" "Zatřeste zařízením pro nahlášení chyby" "Snímek obrazovky" "%1$s: %2$s" @@ -468,6 +475,7 @@ Opravdu chcete pokračovat?" "%1$s • %2$s" "%1$s prostor" "Prostory" + "Zobrazit členy" "Zpráva nebyla odeslána, protože ověřená identita uživatele %1$s se změnila." "Zpráva nebyla odeslána, protože%1$s neověřil(a) všechna zařízení." "Zpráva nebyla odeslána, protože jste neověřili jedno nebo více zařízení." 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 5959066e9b..1885f56f66 100644 --- a/libraries/ui-strings/src/main/res/values-fi/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml @@ -466,6 +466,7 @@ Haluatko varmasti jatkaa?" "%1$s • %2$s" "%1$s tila" "Tilat" + "Näytä jäsenet" "Viestiä ei lähetetty, koska käyttäjän %1$s vahvistettu identiteetti nollattiin." "Viestiä ei lähetetty, koska %1$s ei ole vahvistanut kaikkia laitteitaan." "Viestiä ei lähetetty, koska et ole vahvistanut yhtä tai useampaa laitettasi." 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 baee4b4367..263c1282b5 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -2,6 +2,7 @@ "Pridať reakciu: %1$s" "Obrázok" + "Minimalizovať textové pole správy" "Vymazať" "%1$d zadaná číslica" @@ -11,6 +12,7 @@ "Upraviť obrázok" "Celá adresa bude %1$s" "Podrobnosti o šifrovaní" + "Rozbaliť textové pole správy" "Skryť heslo" "Pripojiť sa k hovoru" "Prejsť na spodok" @@ -42,7 +44,7 @@ "Odstrániť reakciu s %1$s" "Obrázok miestnosti" "Odoslať súbory" - "Vyžaduje sa časovo obmedzená akcia" + "Vyžaduje sa časovo obmedzená akcia, na overenie máte jednu minútu" "Zobraziť heslo" "Začať hovor" "Opustená miestnosť" @@ -80,6 +82,7 @@ "Odmietnuť" "Odmietnuť a zablokovať" "Odstrániť anketu" + "Zrušiť výber všetkých" "Vypnúť" "Zahodiť" "Zamietnuť" @@ -94,6 +97,7 @@ "Zabudnuté heslo?" "Preposlať" "Ísť späť" + "Prejsť na nastavenia" "Ignorovať" "Pozvať" "Pozvať ľudí" @@ -105,10 +109,12 @@ "Opustiť" "Opustiť konverzáciu" "Opustiť miestnosť" + "Opustiť priestor" "Načítať viac" "Spravovať účet" "Spravovať zariadenia" "Poslať správu" + "Minimalizovať" "Ďalej" "Nie" "Teraz nie" @@ -137,6 +143,7 @@ "Opakovať dešifrovanie" "Uložiť" "Hľadať" + "Vybrať všetko" "Odoslať" "Odoslať upravenú správa" "Odoslať správu" @@ -165,14 +172,18 @@ "Aktualizácia je k dispozícii" "O aplikácii" "Zásady prijateľného používania" + "Pridať účet" + "Pridať ďalší účet" "Pridáva sa titulok" "Pokročilé nastavenia" "obrázok" "Analytika" + "Načítavajú sa upozornenia…" "Opustili ste miestnosť" "Boli ste odhlásení zo relácie." "Vzhľad" "Zvuk" + "Beta" "Blokovaní používatelia" "Bubliny" "Hovor sa začal" @@ -182,9 +193,11 @@ "Vytváranie miestnosti…" "Žiadosť bola zrušená" "Opustil/a miestnosť" + "Opustil priestor" "Pozvánka bola odmietnutá" "Tmavý" "Chyba dešifrovania" + "Popis" "Možnosti pre vývojárov" "ID zariadenia" "Priama konverzácia" @@ -219,6 +232,7 @@ Dôvod: %1$s." "Inštalovať APK" "Toto Matrix ID sa nedá nájsť, takže pozvánka nemusí byť prijatá." "Opustenie miestnosti" + "Opúšťanie priestoru" "Svetlý" "Riadok skopírovaný do schránky" "Odkaz bol skopírovaný do schránky" @@ -243,6 +257,7 @@ Dôvod: %1$s." "%1$s (%2$s)" "Žiadne výsledky" "Žiadny názov miestnosti" + "Žiadny názov priestoru" "Nešifrované" "Offline" "Licencie s otvoreným zdrojom" @@ -299,15 +314,19 @@ Dôvod: %1$s." "Výsledky hľadania" "Bezpečnosť" "Videné" + "Vyberte účet" "Odoslať" "Odosiela sa…" "Odoslanie zlyhalo" "Odoslané" ". " "Server nie je podporovaný" + "Server je nedostupný" "URL adresa servera" "Nastavenia" + "Zdieľať priestor" "Zdieľaná poloha" + "Zdieľaný priestor" "Odhlasovanie" "Niečo sa pokazilo" "Vyskytol sa problém. Skúste to prosím znova." @@ -382,6 +401,8 @@ Naozaj chcete pokračovať?" "Maximálna povolená veľkosť súboru je: %1$s" "Vyberte kvalitu videa, ktoré chcete nahrať." "Vyberte kvalitu nahrávania videa" + "Hľadať emotikony" + "Už ste prihlásený/á na tomto zariadení ako %1$s ." "Váš domovský server musí byť aktualizovaný tak, aby podporoval Matrix Authentication Service a vytvorenie účtu." "Nepodarilo sa vytvoriť trvalý odkaz" "%1$s nedokázal načítať mapu. Skúste to prosím neskôr." @@ -408,6 +429,7 @@ Naozaj chcete pokračovať?" "🔐️ Pripojte sa ku mne na %1$s" "Ahoj, porozprávajte sa so mnou na %1$s: %2$s" "%1$s Android" + "Vlákno v %1$s" "Zúrivo potriasť pre nahlásenie chyby" "Snímka obrazovky" "%1$s: %2$s" @@ -453,7 +475,9 @@ Naozaj chcete pokračovať?" "Zdieľajte túto polohu" "Priestory, ktoré ste vytvorili alebo ku ktorým ste sa pripojili." "%1$s • %2$s" + "%1$s priestor" "Priestory" + "Zobraziť členov" "Správa nebola odoslaná, pretože sa zmenila overená totožnosť používateľa %1$s." "Správa nebola odoslaná, pretože %1$s neoveril/a všetky zariadenia." "Správa nebola odoslaná, pretože ste neoverili jedno alebo viac svojich zariadení." diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 9d9059318c..8ca9198cfe 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -176,6 +176,7 @@ "Advanced settings" "an image" "Analytics" + "Fetching notifications…" "You left the room" "You were logged out of the session" "Appearance" @@ -420,6 +421,7 @@ Are you sure you want to continue?" "🔐️ Join me on %1$s" "Hey, talk to me on %1$s: %2$s" "%1$s Android" + "Thread in %1$s" "Rageshake to report bug" "Screenshot" "%1$s: %2$s" diff --git a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png index f8d44dc7ff..04fcabdf4d 100644 --- a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png +++ b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d31cd962cf5a731c94c478c2e7d5e9e67dd1d0976855c25d420e6ac5eca5b17 -size 13046 +oid sha256:cf9acfcae8fa5c62a6d002ea931165e98b0b9389714f2b5a012d59fc607be388 +size 11051 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png deleted file mode 100644 index 146c572073..0000000000 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c47d04c016f10e3aeb4895f2995288af7675d2d9261ce77c56f184ac2e36dc78 -size 25476 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png deleted file mode 100644 index 04f5402083..0000000000 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:27f0ca0688cf49d35c41a03c030c87ed89564f6d7ce7c547c646be6fc7deb6c6 -size 25840 diff --git a/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png b/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png deleted file mode 100644 index 1bb898f053..0000000000 --- a/screenshots/de/features.home.impl.components_DefaultRoomListTopBar_Day_0_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddf75ec06679cc02896e3331cb47cce2fa1f2020791ed1ca1adbb3200df38f31 -size 25573 diff --git a/screenshots/de/features.home.impl.components_HomeTopBarMultiAccount_Day_0_de.png b/screenshots/de/features.home.impl.components_HomeTopBarMultiAccount_Day_0_de.png new file mode 100644 index 0000000000..b40ff588c7 --- /dev/null +++ b/screenshots/de/features.home.impl.components_HomeTopBarMultiAccount_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82d4ec8dfa27a109e3b6e09a989b57540ee24beacc325c32707b3fd2b6310821 +size 21869 diff --git a/screenshots/de/features.home.impl.components_HomeTopBarWithIndicator_Day_0_de.png b/screenshots/de/features.home.impl.components_HomeTopBarWithIndicator_Day_0_de.png new file mode 100644 index 0000000000..81f3d84947 --- /dev/null +++ b/screenshots/de/features.home.impl.components_HomeTopBarWithIndicator_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e1492f5df9092f52dd9ecdc38d03aee7abda581bf7c12401561a6dea5a41f86 +size 22302 diff --git a/screenshots/de/features.home.impl.components_HomeTopBar_Day_0_de.png b/screenshots/de/features.home.impl.components_HomeTopBar_Day_0_de.png new file mode 100644 index 0000000000..f47c2d2770 --- /dev/null +++ b/screenshots/de/features.home.impl.components_HomeTopBar_Day_0_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec8262321fea4ad6cf9b648e262c3359557fa8dcfd127f70e62bc705d7ec5cd4 +size 21962 diff --git a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png index 20b39d8be0..a75fe56c05 100644 --- a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png +++ b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b874872d9249dbd5b4226e1d8e0724bedf9c3e574ee5bbd50c17b4013b4ca05 -size 91117 +oid sha256:14e930dacc7ad385a0401556eb6be4fb59ba7801a5cb3b6f1222cab68938c1c6 +size 90986 diff --git a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png index 80c1682ff5..11761bef37 100644 --- a/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png +++ b/screenshots/de/features.home.impl.spaces_HomeSpacesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:83306e4f31e3533c561dee48b02eddf1859d93025cf230e3bc27bb063168e169 -size 42210 +oid sha256:7a93222cebbc0bc6ba382b10bef1118edf67fdf520b37038d0c47725e3c9e831 +size 42115 diff --git a/screenshots/de/features.home.impl_HomeView_Day_0_de.png b/screenshots/de/features.home.impl_HomeView_Day_0_de.png index 7ed25f79b8..f7a54299c1 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_0_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47c5a06a1134e804c25a66bac4cad1ccfccd37ae96461df3f4c539a86f4d78ff -size 67321 +oid sha256:d24343a46913ad6c047a4395088dd07ca87899563a8e44a92d0393ff62bd72ff +size 63660 diff --git a/screenshots/de/features.home.impl_HomeView_Day_10_de.png b/screenshots/de/features.home.impl_HomeView_Day_10_de.png index 8190e9ccec..069dd23b63 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_10_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_10_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6705e70e07ce0110e659bca9f2ea12a204a9002283f5043833558c9e2dc294b6 -size 36843 +oid sha256:62d1ad64d8d096a34458c7845fb800fa0cd605461f3ef4fe0699d30ca03c7925 +size 33284 diff --git a/screenshots/de/features.home.impl_HomeView_Day_13_de.png b/screenshots/de/features.home.impl_HomeView_Day_13_de.png index 1666edff68..3ff79f211a 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_13_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_13_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3c94d2aef0796f96c4c0991e9fe6683d6e4a70aa352e850b11a95205379569e -size 92172 +oid sha256:cb610fdae1d9e7b90787347487e8c7fe36349b6bbf6026a9132465ada21ac860 +size 95048 diff --git a/screenshots/de/features.home.impl_HomeView_Day_14_de.png b/screenshots/de/features.home.impl_HomeView_Day_14_de.png index 223146b35a..c424e73a0f 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_14_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_14_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ea3ca4aaa17b649e3d0bfe196a0921d2aae9640db7c0561e86450bde8b776e0 -size 90270 +oid sha256:0554ef990f666f6ec3c17bc57fb3fe58a82d966c26fd2b79fff8c1e6b069a193 +size 89633 diff --git a/screenshots/de/features.home.impl_HomeView_Day_15_de.png b/screenshots/de/features.home.impl_HomeView_Day_15_de.png index f63d72f53c..6ac7326cdf 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_15_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_15_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4134daaad23e6f1ecdc4cb4d66df0e3c81d5be0fc67d8eb545f18c011eed98a0 -size 54843 +oid sha256:b7ab0fb505552504a2b069118818f82738f1c364e54f4a7298fecbfcee067f53 +size 55052 diff --git a/screenshots/de/features.home.impl_HomeView_Day_1_de.png b/screenshots/de/features.home.impl_HomeView_Day_1_de.png index cf58b9fc2e..f7a54299c1 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_1_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef1d35d11b933a253afc8b18460b0c25e83a9303a7d88e66440854027a7a6768 -size 68773 +oid sha256:d24343a46913ad6c047a4395088dd07ca87899563a8e44a92d0393ff62bd72ff +size 63660 diff --git a/screenshots/de/features.home.impl_HomeView_Day_2_de.png b/screenshots/de/features.home.impl_HomeView_Day_2_de.png index 7ed25f79b8..f7a54299c1 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_2_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47c5a06a1134e804c25a66bac4cad1ccfccd37ae96461df3f4c539a86f4d78ff -size 67321 +oid sha256:d24343a46913ad6c047a4395088dd07ca87899563a8e44a92d0393ff62bd72ff +size 63660 diff --git a/screenshots/de/features.home.impl_HomeView_Day_3_de.png b/screenshots/de/features.home.impl_HomeView_Day_3_de.png index 1227116b59..0be04e92be 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_3_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56256c66bb8f576f1ed5ccba4979d309ba9be4288c9256f80a9ebc7f8fed4d70 -size 61984 +oid sha256:79c556ec87626ccd24be0af20caa14593e526edd82e64b2a26e504618fbf008e +size 62166 diff --git a/screenshots/de/features.home.impl_HomeView_Day_4_de.png b/screenshots/de/features.home.impl_HomeView_Day_4_de.png index 4551d56a6a..ffba89ca4f 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_4_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5257c993a40d1afce373ed998e0021906e22ada8410a2a6992a4ec0f8c48c183 -size 53553 +oid sha256:8902154fddfa359e605cf95c715e080a5b027a79bac4ff0026464c20dd29311a +size 55725 diff --git a/screenshots/de/features.home.impl_HomeView_Day_5_de.png b/screenshots/de/features.home.impl_HomeView_Day_5_de.png index 7ed25f79b8..f7a54299c1 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_5_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47c5a06a1134e804c25a66bac4cad1ccfccd37ae96461df3f4c539a86f4d78ff -size 67321 +oid sha256:d24343a46913ad6c047a4395088dd07ca87899563a8e44a92d0393ff62bd72ff +size 63660 diff --git a/screenshots/de/features.home.impl_HomeView_Day_6_de.png b/screenshots/de/features.home.impl_HomeView_Day_6_de.png index e14107690d..c0b27ca7bf 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_6_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48e0e5799218907119d54dced764b2d567b4b006cea78f7d9db1bf9d13c37aeb -size 54715 +oid sha256:0d1580df361ba18c688f51fbb60060ccc90699919d4bffd37b0e1bba710d69c7 +size 58347 diff --git a/screenshots/de/features.home.impl_HomeView_Day_7_de.png b/screenshots/de/features.home.impl_HomeView_Day_7_de.png index 88fa35f2f1..33bc050b3f 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_7_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:114140d53208196e38a501beb670b5d8ac1530f60a531f612e1abb353b8ad7b0 -size 54032 +oid sha256:f2cc760e43b919592b11023d054fbd3a2c767940b5990fb21857e9d3efbf84ce +size 57691 diff --git a/screenshots/de/features.home.impl_HomeView_Day_8_de.png b/screenshots/de/features.home.impl_HomeView_Day_8_de.png index 8eb5534872..94e0c7a247 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_8_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bbdd9910a61deffe103a485e64b6174dff161331163d0775985b8f93fd77b49 -size 52265 +oid sha256:11f9e09290a4a4e078087f6eac764ae3cceb4052c9d75ee33f9036c83fdcb8c2 +size 55926 diff --git a/screenshots/de/features.home.impl_HomeView_Day_9_de.png b/screenshots/de/features.home.impl_HomeView_Day_9_de.png index 84ea2b6007..05978a718f 100644 --- a/screenshots/de/features.home.impl_HomeView_Day_9_de.png +++ b/screenshots/de/features.home.impl_HomeView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ffd8451d6682cc6116d178e8584026e39cabcc6e67877791b356aa8fc9c0478 -size 88055 +oid sha256:4cc0259ebbd085fe4c915e999f2fa88413da74211c1d1a5f4ee2e8d0cc18f641 +size 90765 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png deleted file mode 100644 index 0a4d0ee277..0000000000 --- a/screenshots/de/features.messages.impl_MessagesView_Day_10_de.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:33b2ef146d0425a07ad8600732abb79815ea72df3421c31f08cd281e788fbffe -size 53880 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png index 3080fc8437..a6c79b0a59 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb3fb609a6d47c760181886d9d26921ea298a9903387e44628607bbf10440aa7 -size 58023 +oid sha256:48199bc8c630783e0c5cf6d4c9aa26a0955b90f052f745225ae2a11e53b72a6b +size 41824 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png index a6c79b0a59..a5d62de535 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48199bc8c630783e0c5cf6d4c9aa26a0955b90f052f745225ae2a11e53b72a6b -size 41824 +oid sha256:311e90c57d42ddd23c9ba4ba225b12e40a1dac3406d66b21c154052262df2439 +size 61292 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png index a5d62de535..cc94485260 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:311e90c57d42ddd23c9ba4ba225b12e40a1dac3406d66b21c154052262df2439 -size 61292 +oid sha256:1fbad6102fbb30e45eda90fd5eb193df15bbadaaaff1a0caaad0d8b0fd4ee09c +size 57424 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png index cc94485260..944617d227 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1fbad6102fbb30e45eda90fd5eb193df15bbadaaaff1a0caaad0d8b0fd4ee09c -size 57424 +oid sha256:13a9d2ae79c61fc650e089f41ce4397f5845a33ae30beec04439169d144704e5 +size 55332 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png index 944617d227..0a8e3d020c 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13a9d2ae79c61fc650e089f41ce4397f5845a33ae30beec04439169d144704e5 -size 55332 +oid sha256:99cc036c763c411b1946cb4aa9d7b0cd954145bc80cb14707fa4c6a0365df56f +size 61802 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png index 0a8e3d020c..05e168f79c 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99cc036c763c411b1946cb4aa9d7b0cd954145bc80cb14707fa4c6a0365df56f -size 61802 +oid sha256:630a7b5f681c081c52eb17edf8dc0d90cc1e81c0ddf1557592d720025b943e4f +size 49239 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png index 05e168f79c..f39a8180b8 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:630a7b5f681c081c52eb17edf8dc0d90cc1e81c0ddf1557592d720025b943e4f -size 49239 +oid sha256:69b3bae72db55066c0c3b4ae6eb7f75971a9c6a132adc2c2deecd42da3238efe +size 62321 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png index f39a8180b8..7a8454000c 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69b3bae72db55066c0c3b4ae6eb7f75971a9c6a132adc2c2deecd42da3238efe -size 62321 +oid sha256:586f28a39e9f30c5df5e0ea989366911a31fab6d2a3b3d055a830ace203b229e +size 66261 diff --git a/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png b/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png index 7a8454000c..0a4d0ee277 100644 --- a/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png +++ b/screenshots/de/features.messages.impl_MessagesView_Day_9_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:586f28a39e9f30c5df5e0ea989366911a31fab6d2a3b3d055a830ace203b229e -size 66261 +oid sha256:33b2ef146d0425a07ad8600732abb79815ea72df3421c31f08cd281e788fbffe +size 53880 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png index 403eb3fc9c..861476188c 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a39758e98abe92be4c4113942d77377e6ff2a238c581165e8dd352c4ab6968b0 -size 67035 +oid sha256:6481b89945b34754c4cd48be326b507060ad05c8e5717a7a343d699023794ba7 +size 64156 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_de.png new file mode 100644 index 0000000000..9895d0d024 --- /dev/null +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88b7d48638695e10db781414fb6063964ac228d049fdf71bd3e9a9d26eb49dee +size 66345 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png index 83dfd0090e..ab488a6081 100644 --- a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f29618d4e46ad28c8f0aa530379189e0c84a28d872f1d9e6cc10be6a6cc493a -size 69600 +oid sha256:144ecaa780c305dad75b8e0798a90f1fcd0721af888dd563b3fc6e8ae16bb5a1 +size 66552 diff --git a/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_de.png b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_de.png new file mode 100644 index 0000000000..99e60d5701 --- /dev/null +++ b/screenshots/de/features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9960dc7d7a345ddb6e32d2068c9b2421bc9a7e822f6ac8a9ad016693a2a8efca +size 68809 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png index 6f7b768f1f..e79a267816 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b9bab0e775d364ba230c1b9986a0b5eb4898e003a4702586861b477664f0195 -size 65762 +oid sha256:a6b4b1feee6815dab72dc3c48e082dcde654e7c9c611a5ecc8ebe5cbfbbc1ebb +size 65211 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png index 2fd8bbe7ef..45495330f9 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1427ee41abf59a6a4bce3477f04ab30759ec82f97bcef50351e547467a04dff9 -size 66368 +oid sha256:b4fd28760ff4386ea8fbc45ab5d42a5d89881afbd4771c978d45e0a279bb75fc +size 65828 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png index 5d1170fd14..56832f5fa1 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ec9bec68c397768cfb908c9a7ac334654e4d4c50f87b763db59489f4e51c347 -size 16194 +oid sha256:95cf04b7cedb5b2266587935fb3fc2a92b0260963c60115431faca31907c05e0 +size 17548 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png index 8449817714..733a6b5fd5 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73f02bdf09ac430fbb09aa58b88d441d75b53f03852b734346b68536b2fff3de -size 13253 +oid sha256:37d159879b3a4d2d5c9f9465c6499de34c94e81960d6a528628c455c024f42b5 +size 13386 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png index 4ab2503e8f..982e1c0c77 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ea90af0eed671893204e3ba99d53b1400896c4d1a8688300ef39cf0b968a2ec -size 9107 +oid sha256:adbd52c4c086e50126a5dad0317cb8cfa9d47bbbc8e4be8cbfdfd666935d45af +size 9001 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png index 258cc3af28..848e75af76 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c46c8fad57d1e1a0db49a416a4d1164d77a187521b43e066f13320745d951945 -size 24056 +oid sha256:cb274060c32afbbb140c124ee2ec4674883d8e9ef4106930d466d65499235f61 +size 24643 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png index c9ce0a058c..4369dd3160 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9d35464c880321fede8ba2bdcfb4f59e141a57d74018571bb7e922d219261c8 -size 19071 +oid sha256:e4d0aaadc6bb2ed7157af0b843b62c66a49ad531a35e9f46947c6dc2bf428196 +size 19179 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png index 99c80bbc03..b704a287e8 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4425daf08f47f164c26ed7d5cbe94fbfedcf0e29a5096659dd6686a7d2fedfc5 -size 14897 +oid sha256:4c295b1cc75ee1db2796b3b1586f2dbc7b56260ef1452bcf4cae751455a12a57 +size 14825 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png index 40516e770d..048cb4eb18 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_6_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6128f2f811a1cabfa8977cd01412e7d40376c87ab2a93d323fd3cc215a0c305a -size 35271 +oid sha256:3ff635ac9744c957753dcd714d18502073a3bd97900e605290b08d9407531e34 +size 34979 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png index 9ae9291b56..c7123ed2d8 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_7_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f419fb6f6fc352a966e4a5ad4eb1e67514343f3b3d0b539b678532f56b6f31c7 -size 40015 +oid sha256:5b9c6b8bc294d78559eaa9d187ec96891a45d9d930138787e259e3e03285dfd8 +size 39759 diff --git a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png index 7d69ea081a..b7e0334ce2 100644 --- a/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png +++ b/screenshots/de/libraries.matrix.ui.components_SpaceRoomItemView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72be39bee87077790540029d253ef9c7c59a39c1e2e5c5bbf1841e6b276307a9 -size 11408 +oid sha256:b5403c6fc3ca15b7c2099772257b42c2528d78993e8c9d83e0e20ba0f3e64f2e +size 11420 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index b474c8a813..650364a46c 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,80 +1,80 @@ // 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",20378,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20385,], ["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",20378,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20378,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20378,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20378,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20378,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20378,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20378,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20378,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20378,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20378,], -["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20378,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20385,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20385,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20385,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20385,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20385,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20385,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20385,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20385,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20385,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20385,], +["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20385,], ["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,], -["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20378,], -["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20378,], +["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20385,], +["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20385,], ["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",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20378,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20385,], ["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",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20378,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20378,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20378,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20378,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20378,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20378,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20378,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20378,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20378,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20385,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20385,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20385,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20385,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20385,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20385,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20385,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20385,], ["libraries.designsystem.theme.components_AllIcons_Icons_en","",0,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20378,], -["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20378,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20378,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20378,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20378,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20385,], +["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20385,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20385,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20385,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20385,], ["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",20378,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20385,], ["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",20378,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20385,], ["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",20378,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20385,], ["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",20378,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20385,], ["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",20378,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20385,], ["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,], @@ -84,19 +84,19 @@ 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","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20378,], -["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20378,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20385,], ["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",20378,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20385,], ["libraries.designsystem.components.avatar.internal_AvatarCluster_Avatars_en","",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_0_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_0_en",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_1_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_1_en",0,], @@ -123,22 +123,22 @@ export const screenshots = [ ["libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_Day_0_en","libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_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",20378,], +["features.home.impl.components_BatteryOptimizationBanner_Day_0_en","features.home.impl.components_BatteryOptimizationBanner_Night_0_en",20385,], ["libraries.designsystem.atomic.atoms_BetaLabel_Day_0_en","libraries.designsystem.atomic.atoms_BetaLabel_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20378,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20378,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20385,], ["libraries.designsystem.theme.components_BottomSheetDragHandle_Day_0_en","libraries.designsystem.theme.components_BottomSheetDragHandle_Night_0_en",0,], -["features.rageshake.impl.bugreport_BugReportViewDay_0_en","",20381,], -["features.rageshake.impl.bugreport_BugReportViewDay_1_en","",20381,], -["features.rageshake.impl.bugreport_BugReportViewDay_2_en","",20381,], -["features.rageshake.impl.bugreport_BugReportViewDay_3_en","",20381,], -["features.rageshake.impl.bugreport_BugReportViewDay_4_en","",20381,], +["features.rageshake.impl.bugreport_BugReportViewDay_0_en","",20385,], +["features.rageshake.impl.bugreport_BugReportViewDay_1_en","",20385,], +["features.rageshake.impl.bugreport_BugReportViewDay_2_en","",20385,], +["features.rageshake.impl.bugreport_BugReportViewDay_3_en","",20385,], +["features.rageshake.impl.bugreport_BugReportViewDay_4_en","",20385,], ["features.rageshake.impl.bugreport_BugReportViewNight_0_en","",0,], ["features.rageshake.impl.bugreport_BugReportViewNight_1_en","",0,], ["features.rageshake.impl.bugreport_BugReportViewNight_2_en","",0,], @@ -148,128 +148,125 @@ export const screenshots = [ ["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",20378,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20378,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20385,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20385,], ["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",20378,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20378,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20378,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20378,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20378,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20378,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20385,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20385,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20385,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20385,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20385,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20385,], ["features.changeroommemberroles.impl_ChangeRolesView_Day_5_en","features.changeroommemberroles.impl_ChangeRolesView_Night_5_en",0,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20378,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20378,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20378,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20385,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20385,], ["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",20378,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20378,], -["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20378,], -["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20378,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20385,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20385,], +["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20385,], +["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20385,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20378,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20385,], ["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",20378,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20378,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20378,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20378,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20378,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20378,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20378,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20385,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20385,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20385,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20385,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20385,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20385,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20385,], ["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",20378,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20378,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20378,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20385,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20385,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20385,], ["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","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20378,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20378,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20378,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20378,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20378,], -["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20378,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20385,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20385,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20385,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20385,], +["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20385,], ["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,], +["features.networkmonitor.api.ui_ConnectivityIndicator_Day_0_en","features.networkmonitor.api.ui_ConnectivityIndicator_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",20378,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20378,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20378,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20378,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20378,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20378,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20378,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20378,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20378,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20378,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20378,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20378,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20378,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20378,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20378,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20378,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20378,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20378,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20378,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20378,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20385,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20385,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20385,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20385,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20385,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20385,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20385,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20385,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20385,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20385,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20385,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20385,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20385,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20385,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20385,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20385,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20385,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20385,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20385,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20385,], ["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","",20378,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20378,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20378,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20378,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20378,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20378,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20378,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20385,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20385,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20385,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20385,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20385,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20385,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20385,], ["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",20378,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20378,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20378,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20385,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20385,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20385,], ["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",20378,], -["features.home.impl.components_DefaultRoomListTopBarMultiAccount_Day_0_en","features.home.impl.components_DefaultRoomListTopBarMultiAccount_Night_0_en",20378,], -["features.home.impl.components_DefaultRoomListTopBarWithIndicator_Day_0_en","features.home.impl.components_DefaultRoomListTopBarWithIndicator_Night_0_en",20378,], -["features.home.impl.components_DefaultRoomListTopBar_Day_0_en","features.home.impl.components_DefaultRoomListTopBar_Night_0_en",20378,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20385,], ["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",20378,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20378,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20378,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20378,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20378,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20378,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20378,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_3_en","features.preferences.impl.developer_DeveloperSettingsView_Night_3_en",20381,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20385,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20385,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20385,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20385,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20385,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20385,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20385,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_3_en","features.preferences.impl.developer_DeveloperSettingsView_Night_3_en",20385,], ["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,], @@ -284,18 +281,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",20378,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20378,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20378,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20378,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20378,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20378,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20378,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20378,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20378,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20378,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20378,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20378,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20385,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20385,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20385,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20385,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20385,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20385,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20385,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20385,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20385,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20385,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20385,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20385,], ["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,], @@ -306,14 +303,14 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Night_0_en",0,], ["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.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20378,], -["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20378,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20385,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20385,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en",0,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en",0,], ["libraries.ui.common.nodes_EmptyView_Day_0_en","libraries.ui.common.nodes_EmptyView_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20378,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20378,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20378,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20385,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20385,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20385,], ["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,], @@ -332,40 +329,43 @@ 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",20378,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20378,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20378,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20385,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20385,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20385,], ["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",20378,], -["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20378,], +["features.messages.impl.forward_ForwardMessagesView_Day_3_en","features.messages.impl.forward_ForwardMessagesView_Night_3_en",20385,], +["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20385,], ["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.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20378,], -["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20378,], +["features.home.impl.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20385,], +["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20385,], +["features.home.impl.components_HomeTopBarMultiAccount_Day_0_en","features.home.impl.components_HomeTopBarMultiAccount_Night_0_en",20388,], +["features.home.impl.components_HomeTopBarWithIndicator_Day_0_en","features.home.impl.components_HomeTopBarWithIndicator_Night_0_en",20388,], +["features.home.impl.components_HomeTopBar_Day_0_en","features.home.impl.components_HomeTopBar_Night_0_en",20388,], ["features.home.impl_HomeViewA11y_en","",0,], -["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20378,], -["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20378,], +["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20385,], +["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20385,], ["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",20378,], -["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20378,], -["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20378,], -["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20378,], -["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20378,], -["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20378,], -["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20378,], -["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20378,], -["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20378,], -["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20378,], -["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20378,], -["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20378,], +["features.home.impl_HomeView_Day_13_en","features.home.impl_HomeView_Night_13_en",20385,], +["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20385,], +["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20385,], +["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20385,], +["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20385,], +["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20385,], +["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20385,], +["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20385,], +["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20385,], +["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20385,], +["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20385,], +["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20385,], ["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,], @@ -374,18 +374,12 @@ export const screenshots = [ ["libraries.designsystem.atomic.molecules_IconTitlePlaceholdersRowMolecule_Day_0_en","libraries.designsystem.atomic.molecules_IconTitlePlaceholdersRowMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Day_0_en","libraries.designsystem.atomic.molecules_IconTitleSubtitleMolecule_Night_0_en",0,], ["libraries.designsystem.theme.components_IconToggleButton_Toggles_en","",0,], -["appicon.enterprise_Icon_en","",0,], ["appicon.element_Icon_en","",0,], -["libraries.designsystem.icons_IconsCompound_Day_0_en","libraries.designsystem.icons_IconsCompound_Night_0_en",0,], -["libraries.designsystem.icons_IconsCompound_Day_1_en","libraries.designsystem.icons_IconsCompound_Night_1_en",0,], -["libraries.designsystem.icons_IconsCompound_Day_2_en","libraries.designsystem.icons_IconsCompound_Night_2_en",0,], -["libraries.designsystem.icons_IconsCompound_Day_3_en","libraries.designsystem.icons_IconsCompound_Night_3_en",0,], -["libraries.designsystem.icons_IconsCompound_Day_4_en","libraries.designsystem.icons_IconsCompound_Night_4_en",0,], -["libraries.designsystem.icons_IconsCompound_Day_5_en","libraries.designsystem.icons_IconsCompound_Night_5_en",0,], +["appicon.enterprise_Icon_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",20378,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20378,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20385,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20385,], ["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,], @@ -393,110 +387,109 @@ 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",20378,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20385,], ["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",20378,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20385,], ["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",20378,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20385,], ["features.verifysession.impl.incoming_IncomingVerificationViewA11y_en","",0,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20378,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20378,], -["features.networkmonitor.api.ui_Indicator_Day_0_en","features.networkmonitor.api.ui_Indicator_Night_0_en",0,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20385,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], ["libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Day_0_en","libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Night_0_en",0,], -["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20378,], -["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20378,], -["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20378,], +["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20385,], ["features.invitepeople.impl_InvitePeopleView_Day_2_en","features.invitepeople.impl_InvitePeopleView_Night_2_en",0,], ["features.invitepeople.impl_InvitePeopleView_Day_3_en","features.invitepeople.impl_InvitePeopleView_Night_3_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20378,], -["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20378,], -["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20378,], -["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20378,], +["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20385,], ["features.invitepeople.impl_InvitePeopleView_Day_8_en","features.invitepeople.impl_InvitePeopleView_Night_8_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20378,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20378,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20378,], +["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20385,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20385,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20385,], ["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",20378,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20378,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20378,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20378,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20378,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20385,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20385,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20385,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], -["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20378,], -["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20378,], +["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20385,], +["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20385,], ["features.leaveroom.impl_LeaveRoomView_Day_0_en","features.leaveroom.impl_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20378,], -["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20378,], -["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20378,], +["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20385,], +["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20385,], ["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",20378,], +["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20385,], ["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,], @@ -551,37 +544,37 @@ 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",20378,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20378,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20378,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20378,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20385,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20385,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20385,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20385,], ["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",20378,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20378,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20378,], -["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20378,], -["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20378,], -["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20378,], -["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20378,], -["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20378,], -["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20378,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20378,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20378,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20378,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20378,], -["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20378,], -["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20378,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20378,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20378,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20378,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20378,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20378,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20378,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20378,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20378,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20378,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20385,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20385,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20385,], +["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20385,], +["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20385,], +["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20385,], +["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20385,], +["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20385,], +["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20385,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20385,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20385,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20385,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20385,], +["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20385,], +["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20385,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20385,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20385,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20385,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20385,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20385,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20385,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20385,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20385,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20385,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20378,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20385,], ["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,], @@ -594,22 +587,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",20378,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20378,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20385,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20385,], ["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",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20378,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20378,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20385,], ["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,], @@ -617,14 +610,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","",20378,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20378,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20385,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20385,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20378,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20385,], ["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","",20378,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20385,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -638,7 +631,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",20378,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20385,], ["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,], @@ -647,7 +640,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",20378,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20385,], ["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,], @@ -655,138 +648,137 @@ 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.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20378,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20378,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20378,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20378,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20378,], -["features.messages.impl_MessagesView_Day_10_en","features.messages.impl_MessagesView_Night_10_en",20378,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20378,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20378,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20378,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20378,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20378,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20378,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20378,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20378,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20378,], +["features.messages.impl.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20385,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20385,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20385,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20385,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20385,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20385,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20385,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20385,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20385,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20385,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20385,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20385,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20385,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20385,], ["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",20378,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20385,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], -["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20378,], +["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20385,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialog_Day_0_en","libraries.designsystem.components.dialogs_MultipleSelectionDialog_Night_0_en",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_NavigationBar_App_Bars_en","",0,], -["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20378,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20378,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20378,], +["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20385,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20385,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20385,], ["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",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20378,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20378,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20385,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], -["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20378,], +["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20385,], ["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",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20378,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20378,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20385,], ["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",20378,], -["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20378,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20378,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20378,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20378,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20378,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20385,], +["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20385,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20385,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20385,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20385,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20385,], ["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",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20378,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20378,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20385,], ["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",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20378,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20378,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20378,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20378,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20378,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20378,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20385,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20385,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20385,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20385,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20385,], ["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",20378,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20378,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20378,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20378,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20378,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20385,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20385,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20385,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20385,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20385,], ["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",20378,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20378,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20378,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20378,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20378,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20378,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20378,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20378,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20378,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20378,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20378,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20385,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20385,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20385,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20385,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20385,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20385,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20385,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20385,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20385,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20385,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20385,], ["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,], @@ -800,208 +792,208 @@ 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","",20378,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20378,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20378,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20378,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20385,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20385,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20385,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20385,], ["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","",20378,], -["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20378,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20385,], +["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20385,], ["libraries.designsystem.components_ProgressDialogWithTextAndContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithTextAndContent_Night_0_en",0,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20378,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20378,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20378,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20378,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20378,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20378,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20378,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20378,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20378,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20378,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20378,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20378,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20378,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20378,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20378,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20378,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20385,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20385,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20385,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20385,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20385,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20385,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20385,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20385,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20385,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20385,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20385,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20385,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20385,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20385,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20385,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20385,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20378,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20378,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20385,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20378,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20378,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20378,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20378,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20378,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20378,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20385,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20385,], ["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",20378,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20378,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20378,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20378,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20378,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20378,], -["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20378,], -["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20378,], -["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20378,], -["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20378,], -["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20378,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20378,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20378,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20378,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20378,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20378,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20378,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20385,], +["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20385,], +["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20385,], +["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20385,], +["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20385,], +["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20385,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20385,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20385,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20385,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20385,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20385,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20385,], ["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",20378,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20378,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20378,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20378,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20378,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20385,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20385,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20385,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20385,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20385,], ["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",20378,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20378,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_16_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_17_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_18_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_19_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20378,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20378,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20378,], -["features.roomdetails.impl_RoomDetails_0_en","",20378,], -["features.roomdetails.impl_RoomDetails_10_en","",20378,], -["features.roomdetails.impl_RoomDetails_11_en","",20378,], -["features.roomdetails.impl_RoomDetails_12_en","",20378,], -["features.roomdetails.impl_RoomDetails_13_en","",20378,], -["features.roomdetails.impl_RoomDetails_14_en","",20378,], -["features.roomdetails.impl_RoomDetails_15_en","",20378,], -["features.roomdetails.impl_RoomDetails_16_en","",20378,], -["features.roomdetails.impl_RoomDetails_17_en","",20378,], -["features.roomdetails.impl_RoomDetails_18_en","",20378,], -["features.roomdetails.impl_RoomDetails_19_en","",20378,], -["features.roomdetails.impl_RoomDetails_1_en","",20378,], -["features.roomdetails.impl_RoomDetails_2_en","",20378,], -["features.roomdetails.impl_RoomDetails_3_en","",20378,], -["features.roomdetails.impl_RoomDetails_4_en","",20378,], -["features.roomdetails.impl_RoomDetails_5_en","",20378,], -["features.roomdetails.impl_RoomDetails_6_en","",20378,], -["features.roomdetails.impl_RoomDetails_7_en","",20378,], -["features.roomdetails.impl_RoomDetails_8_en","",20378,], -["features.roomdetails.impl_RoomDetails_9_en","",20378,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20378,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20378,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20378,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20378,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20378,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20378,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20378,], -["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20378,], -["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20378,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20385,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20385,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_16_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_17_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_18_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_19_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20385,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20385,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20385,], +["features.roomdetails.impl_RoomDetails_0_en","",20385,], +["features.roomdetails.impl_RoomDetails_10_en","",20385,], +["features.roomdetails.impl_RoomDetails_11_en","",20385,], +["features.roomdetails.impl_RoomDetails_12_en","",20385,], +["features.roomdetails.impl_RoomDetails_13_en","",20385,], +["features.roomdetails.impl_RoomDetails_14_en","",20385,], +["features.roomdetails.impl_RoomDetails_15_en","",20385,], +["features.roomdetails.impl_RoomDetails_16_en","",20385,], +["features.roomdetails.impl_RoomDetails_17_en","",20385,], +["features.roomdetails.impl_RoomDetails_18_en","",20385,], +["features.roomdetails.impl_RoomDetails_19_en","",20385,], +["features.roomdetails.impl_RoomDetails_1_en","",20385,], +["features.roomdetails.impl_RoomDetails_2_en","",20385,], +["features.roomdetails.impl_RoomDetails_3_en","",20385,], +["features.roomdetails.impl_RoomDetails_4_en","",20385,], +["features.roomdetails.impl_RoomDetails_5_en","",20385,], +["features.roomdetails.impl_RoomDetails_6_en","",20385,], +["features.roomdetails.impl_RoomDetails_7_en","",20385,], +["features.roomdetails.impl_RoomDetails_8_en","",20385,], +["features.roomdetails.impl_RoomDetails_9_en","",20385,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20385,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20385,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20385,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20385,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20385,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20385,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20385,], +["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20385,], +["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20385,], ["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",20378,], -["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20378,], -["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20378,], -["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20378,], -["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20378,], -["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20378,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20378,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20378,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20378,], +["features.home.impl.components_RoomListContentView_Day_3_en","features.home.impl.components_RoomListContentView_Night_3_en",20385,], +["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20385,], +["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20385,], +["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20385,], +["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20385,], +["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20385,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20385,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20385,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20385,], ["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",20378,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20378,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20378,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20378,], +["features.home.impl.search_RoomListSearchContent_Day_1_en","features.home.impl.search_RoomListSearchContent_Night_1_en",20385,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20385,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20385,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20385,], ["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",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20378,], -["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20378,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20378,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20378,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20378,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20385,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20385,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20385,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20385,], ["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,], @@ -1024,14 +1016,14 @@ 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",20378,], -["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20378,], -["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20378,], +["features.home.impl.components_RoomSummaryRow_Day_29_en","features.home.impl.components_RoomSummaryRow_Night_29_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20385,], ["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,], @@ -1039,80 +1031,82 @@ 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",20378,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20378,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20378,], -["appicon.element_RoundIcon_en","",0,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20385,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20385,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20385,], ["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",20378,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20378,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20378,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20385,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20385,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20385,], ["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","",20378,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20385,], ["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.startchat.impl.components_SearchMultipleUsersResultItem_en","",20378,], -["features.startchat.impl.components_SearchSingleUserResultItem_en","",20378,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20378,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20378,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20378,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20378,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20378,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20378,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20378,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20378,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20378,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20378,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20378,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20378,], +["features.startchat.impl.components_SearchMultipleUsersResultItem_en","",20385,], +["features.startchat.impl.components_SearchSingleUserResultItem_en","",20385,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20385,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20385,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20385,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20385,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20385,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20385,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20385,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20385,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20385,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20385,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_en","",20388,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20385,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_en","",20388,], ["libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en",0,], @@ -1126,11 +1120,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_1_en","libraries.matrix.ui.components_SelectedUser_Night_1_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",20378,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20378,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20378,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20378,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20378,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20385,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20385,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20385,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20385,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20385,], ["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,], @@ -1140,27 +1134,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",20378,], -["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20378,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20378,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20378,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20378,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20378,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20378,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20378,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20385,], +["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20385,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20385,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20385,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20385,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20385,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20385,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20385,], ["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",20378,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20378,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20378,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20378,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20378,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20378,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20378,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20378,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20378,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20378,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20385,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20385,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20385,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20385,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20385,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20385,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20385,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20385,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20385,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20385,], ["libraries.designsystem.components_SimpleModalBottomSheet_Day_0_en","libraries.designsystem.components_SimpleModalBottomSheet_Night_0_en",0,], ["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,], @@ -1170,98 +1164,98 @@ 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",20378,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20385,], ["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,], ["libraries.designsystem.theme.components_SnackbarWithAction_Snackbar_with_action_Snackbars_en","",0,], ["libraries.designsystem.theme.components_Snackbar_Snackbar_Snackbars_en","",0,], -["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20378,], +["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20385,], ["libraries.designsystem.components.avatar.internal_SpaceAvatar_Avatars_en","",0,], -["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20378,], -["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20378,], -["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20378,], +["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20385,], +["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20385,], +["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20385,], ["libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en","libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en",0,], ["libraries.matrix.ui.components_SpaceMembersView_Day_0_en","libraries.matrix.ui.components_SpaceMembersView_Night_0_en",0,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20378,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en",20378,], -["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20378,], -["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20378,], -["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20378,], -["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20378,], -["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20378,], -["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20378,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en",20385,], +["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20385,], +["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20385,], +["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20385,], +["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20385,], +["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20385,], +["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20385,], ["libraries.designsystem.modifiers_SquareSizeModifierInsideSquare_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], -["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20378,], -["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20378,], -["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20378,], -["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20378,], -["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20378,], -["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20378,], -["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20378,], +["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20385,], +["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20385,], +["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20385,], +["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20385,], +["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20385,], +["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20385,], +["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20385,], ["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",20378,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20385,], ["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",20378,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20385,], ["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",20378,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20378,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20378,], -["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20378,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20378,], -["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20378,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20378,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20378,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20378,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20378,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20378,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20378,], -["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20378,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20378,], -["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20378,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20385,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20385,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20385,], +["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20385,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20385,], +["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20385,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20385,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20385,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20385,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20385,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20385,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20385,], +["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20385,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20385,], +["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20385,], ["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",20378,], -["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20378,], +["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20385,], +["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20385,], ["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,], @@ -1273,16 +1267,16 @@ 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,], -["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20378,], -["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20378,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20378,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20378,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20378,], +["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20385,], +["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20385,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20385,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20385,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20385,], ["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",20378,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20378,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20385,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20385,], ["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,], @@ -1292,18 +1286,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",20378,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20378,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20385,], ["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,], @@ -1311,18 +1305,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",20378,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20378,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20385,], ["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,], @@ -1331,41 +1325,41 @@ 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",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20385,], ["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",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20385,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20378,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20385,], ["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","",20378,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20385,], ["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",20378,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20378,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20385,], ["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",20378,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20378,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20378,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20378,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20385,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20378,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20385,], ["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",20378,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20385,], ["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,], @@ -1374,8 +1368,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",20378,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20378,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20385,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20385,], ["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,], @@ -1390,8 +1384,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",20378,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20378,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20385,], ["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,], @@ -1414,85 +1408,85 @@ 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",20378,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20378,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20385,], ["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",20378,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20378,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20378,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20385,], ["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",20378,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20385,], ["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",20378,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20385,], ["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",20378,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20385,], ["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",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20378,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20378,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20385,], ["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",20378,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20378,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20378,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20378,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20378,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20378,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20385,], ["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","",20378,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20385,], ["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",20378,], -["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20378,], -["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20378,], -["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20378,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20385,], +["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20385,], +["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20385,], +["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20385,], ["features.startchat.impl.components_UserListView_Day_3_en","features.startchat.impl.components_UserListView_Night_3_en",0,], ["features.startchat.impl.components_UserListView_Day_4_en","features.startchat.impl.components_UserListView_Night_4_en",0,], ["features.startchat.impl.components_UserListView_Day_5_en","features.startchat.impl.components_UserListView_Night_5_en",0,], ["features.startchat.impl.components_UserListView_Day_6_en","features.startchat.impl.components_UserListView_Night_6_en",0,], -["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20378,], +["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20385,], ["features.startchat.impl.components_UserListView_Day_8_en","features.startchat.impl.components_UserListView_Night_8_en",0,], -["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20378,], +["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20385,], ["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",20378,], -["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20378,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20378,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20378,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20378,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20378,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20378,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20378,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20378,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20378,], -["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20378,], -["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20378,], +["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20385,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20385,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20385,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20385,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20385,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20385,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20385,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20385,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20385,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20385,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20385,], +["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20385,], ["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,], ["libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en",0,], -["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20378,], -["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20378,], +["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20385,], +["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20385,], ["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",20378,], +["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20385,], ["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,], diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png index 441787f12b..20f1127aec 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:839cdb6ca2bbfdf17caa4a04255dc31f1362f21a9b2fc9e16773a16462ac7067 -size 21079 +oid sha256:1be3ac8e92243baeceeb7349ed767e4c39ebfc4880b253e7f2e46ed9fc75da01 +size 20222 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png index b34e445d49..241888f87a 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0aff129c4f3d08a440d253de20e15a362adf9d32b3ef31ec163b15b8ad9ff40 -size 24081 +oid sha256:4e8c820a8c4966526e7851b4f3152ccaf9072bbf8ebf21737d35d1c87325bf6f +size 22524 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png index 65e7dc7d4f..5f0d9f5308 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd602e1e409c937dd2a3dc9483b3d0a9351bc8e0ecd1cc3e1d1f35e08aed294f -size 24205 +oid sha256:983e163f59ef03f5a7c30cf7073002105a663cec64f8a8d4fc89fa0991bfd730 +size 22646 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en.png index 14d1396ac9..fe4528f99c 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c09808dc63bad05bc97a6d5d5f62a4d0fd3db86c17e4662aa2b56eb50143361a -size 29415 +oid sha256:72ccd513cba258987e43054b269006625b76510efc26e4bc62ec2801f77be662 +size 28093 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png index 8985b69ef1..0920ebc642 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fcf23c5b6a8277c6496ee0e465a707f1abc1eb3eca12e99f8b6ab03caa6c4ffe -size 19712 +oid sha256:e4868e2ce56debe8b175715417190db0037d59d204a28b5c0bc0b0c81a5d91a9 +size 18925 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png index 7f6408be7e..f888174764 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4ddf81180edc9af59ab29c9340523b4629584fc91073608393e678bb617edd3 -size 22673 +oid sha256:a59481d4391dd8d0cb749ff63d3bb34846b450a6713ade11a6dbbe0461bb3650 +size 21257 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png index 33a233982c..d2ee835a9f 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8ca755d7249aafc9e67973da212ae06f8e4dfdebbb631a33546a2c75b046748 -size 22749 +oid sha256:381fbeb4b57f044fb785b65d04b041c4ca5efa89138742b8480a7540ed57b4f0 +size 21335 diff --git a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en.png index 9f70cf870f..1bef3fc7be 100644 --- a/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97d7e385717dd0ebd7beac1fbd5c205e13f7785febabee15bfffa0026b8d530c -size 27616 +oid sha256:28f71f91a53008d73ed1f7cf209c7732b6fe0f4d7f65c2cf3997dff99f27c5e4 +size 26402 From 1b7eb8744117bc9150500760647bb69ae01cb852 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 27 Oct 2025 13:54:33 +0100 Subject: [PATCH 224/898] misc(navigation) : fix and add test on JoinedRoomLoadedFlowNode --- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index a48cf8d62a..f8a18fa24a 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -22,12 +22,14 @@ import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint +import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.childNode import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom +import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.test.FakeAppNavigationStateService import kotlinx.coroutines.test.TestScope @@ -98,16 +100,40 @@ class JoinedRoomLoadedFlowNodeTest { } } + private class FakeSpaceEntryPoint : SpaceEntryPoint { + var nodeId: String? = null + + override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SpaceEntryPoint.NodeBuilder { + return object : SpaceEntryPoint.NodeBuilder { + override fun inputs(inputs: SpaceEntryPoint.Inputs): SpaceEntryPoint.NodeBuilder { + return this + } + + override fun callback(callback: SpaceEntryPoint.Callback): SpaceEntryPoint.NodeBuilder { + return this + } + + override fun build(): Node { + return node(buildContext) {}.also { + nodeId = it.id + } + } + } + } + } + private fun TestScope.createJoinedRoomLoadedFlowNode( plugins: List, messagesEntryPoint: MessagesEntryPoint = FakeMessagesEntryPoint(), roomDetailsEntryPoint: RoomDetailsEntryPoint = FakeRoomDetailsEntryPoint(), + spaceEntryPoint: SpaceEntryPoint = FakeSpaceEntryPoint(), activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), plugins = plugins, messagesEntryPoint = messagesEntryPoint, roomDetailsEntryPoint = roomDetailsEntryPoint, + spaceEntryPoint = spaceEntryPoint, appNavigationStateService = FakeAppNavigationStateService(), sessionCoroutineScope = this, roomGraphFactory = FakeRoomGraphFactory(), @@ -116,9 +142,9 @@ class JoinedRoomLoadedFlowNodeTest { ) @Test - fun `given a room flow node when initialized then it loads messages entry point`() = runTest { + fun `given a room flow node when initialized then it loads messages entry point if room is not space`() = runTest { // GIVEN - val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {})) + val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {}, initialRoomInfo = aRoomInfo(isSpace = false))) val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( @@ -135,6 +161,26 @@ class JoinedRoomLoadedFlowNodeTest { assertThat(messagesNode.id).isEqualTo(fakeMessagesEntryPoint.nodeId) } + @Test + fun `given a room flow node when initialized then it loads space entry point if room is space`() = runTest { + // GIVEN + val room = FakeJoinedRoom(baseRoom = FakeBaseRoom(updateMembersResult = {}, initialRoomInfo = aRoomInfo(isSpace = true))) + val spaceEntryPoint = FakeSpaceEntryPoint() + val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) + val roomFlowNode = createJoinedRoomLoadedFlowNode( + plugins = listOf(inputs), + spaceEntryPoint = spaceEntryPoint, + ) + // WHEN + val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() + + // THEN + assertThat(roomFlowNode.backstack.activeElement).isEqualTo(JoinedRoomLoadedFlowNode.NavTarget.Space) + roomFlowNodeTestHelper.assertChildHasLifecycle(JoinedRoomLoadedFlowNode.NavTarget.Space, Lifecycle.State.CREATED) + val spaceNode = roomFlowNode.childNode(JoinedRoomLoadedFlowNode.NavTarget.Space)!! + assertThat(spaceNode.id).isEqualTo(spaceEntryPoint.nodeId) + } + @Test fun `given a room flow node when callback on room details is triggered then it loads room details entry point`() = runTest { // GIVEN From be6c8637de9eff15902ba665c70945b59bddcbc7 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 27 Oct 2025 14:15:32 +0100 Subject: [PATCH 225/898] misc(navigation) : fix tests on space module --- .../android/features/space/impl/DefaultSpaceEntryPointTest.kt | 1 + .../element/android/features/space/impl/root/SpaceViewTest.kt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 17823ba72b..13e24259dc 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -45,6 +45,7 @@ class DefaultSpaceEntryPointTest { } val callback = object : SpaceEntryPoint.Callback { override fun onOpenRoom(roomId: RoomId, viaParameters: List) = lambdaError() + override fun onOpenDetails() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .inputs(nodeInputs) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt index 2702133780..f8797916e4 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt @@ -139,6 +139,7 @@ private fun AndroidComposeTestRule.setSpace onRoomClick: (SpaceRoom) -> Unit = EnsureNeverCalledWithParam(), onShareSpace: () -> Unit = EnsureNeverCalled(), onLeaveSpaceClick: () -> Unit = EnsureNeverCalled(), + onDetailsClick: () -> Unit = EnsureNeverCalled(), acceptDeclineInviteView: @Composable () -> Unit = {}, ) { setContent { @@ -148,6 +149,7 @@ private fun AndroidComposeTestRule.setSpace onRoomClick = onRoomClick, onShareSpace = onShareSpace, onLeaveSpaceClick = onLeaveSpaceClick, + onDetailsClick = onDetailsClick, acceptDeclineInviteView = acceptDeclineInviteView, ) } From 048467b900712c3c825ebe7fe025755c286eeda1 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 27 Oct 2025 17:25:56 +0100 Subject: [PATCH 226/898] =?UTF-8?q?Revert=20"Make=20sure=20declining=20a?= =?UTF-8?q?=20call=20stops=20observing=20the=20ringing=20call=20state=20(#?= =?UTF-8?q?5=E2=80=A6"=20(#5615)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 10bf5f1c8cfeb4b25ca68b19286718ea588af978. --- .../call/impl/utils/ActiveCallManager.kt | 136 +++++++++--------- .../utils/DefaultActiveCallManagerTest.kt | 45 ------ 2 files changed, 64 insertions(+), 117 deletions(-) diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt index ff1dc20df4..16a8774042 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt @@ -27,9 +27,7 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.MatrixClientProvider -import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder import io.element.android.libraries.push.api.notifications.ForegroundServiceType import io.element.android.libraries.push.api.notifications.NotificationIdProvider @@ -40,17 +38,16 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex @@ -181,7 +178,13 @@ class DefaultActiveCallManager( val previousActiveCall = activeCall.value ?: return val notificationData = (previousActiveCall.callState as? CallState.Ringing)?.notificationData ?: return - removeCurrentCall() + activeCall.value = null + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after timeout") + activeWakeLock.release() + } + + cancelIncomingCallNotification() if (displayMissedCallNotification) { displayMissedCallNotification(notificationData) @@ -206,16 +209,24 @@ class DefaultActiveCallManager( ?.declineCall(notificationData.eventId) } - removeCurrentCall() + cancelIncomingCallNotification() + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after hang up") + activeWakeLock.release() + } + timedOutCallJob?.cancel() + activeCall.value = null } - /** - * Removes the current active call and any associated UI, cancelling the timeouts and wakelocks. - */ override suspend fun joinedCall(callType: CallType) = mutex.withLock { Timber.tag(tag).d("Joined call: $callType") - removeCurrentCall() + cancelIncomingCallNotification() + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after joining call") + activeWakeLock.release() + } + timedOutCallJob?.cancel() activeCall.value = ActiveCall( callType = callType, @@ -223,23 +234,6 @@ class DefaultActiveCallManager( ) } - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) - internal fun removeCurrentCall() { - // Cancel and remove the timeout call job, if any - timedOutCallJob?.cancel() - timedOutCallJob = null - - // Remove the active call and cancel the notification - activeCall.value = null - cancelIncomingCallNotification() - - // Also remove any wake locks that may be held - if (activeWakeLock?.isHeld == true) { - Timber.tag(tag).d("Releasing partial wakelock after call declined from another session") - activeWakeLock.release() - } - } - @SuppressLint("MissingPermission") private suspend fun showIncomingCallNotification(notificationData: CallNotificationData) { Timber.tag(tag).d("Displaying ringing call notification") @@ -285,75 +279,73 @@ class DefaultActiveCallManager( @OptIn(ExperimentalCoroutinesApi::class) private fun observeRingingCall() { - val roomForActiveCallFlow: Flow?> = activeCall.mapLatest { activeCall -> - val callType = activeCall?.callType as? CallType.RoomCall ?: return@mapLatest null - val ringingInfo = activeCall.callState as? CallState.Ringing ?: return@mapLatest null - val client = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull() ?: run { - Timber.tag(tag).d("Couldn't find session for incoming call: $activeCall") - return@mapLatest null - } - val room = client.getRoom(callType.roomId) ?: run { - Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") - return@mapLatest null - } + activeCall + .filterNotNull() + .filter { it.callState is CallState.Ringing && it.callType is CallType.RoomCall } + .flatMapLatest { activeCall -> + val callType = activeCall.callType as CallType.RoomCall + val ringingInfo = activeCall.callState as CallState.Ringing + val client = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull() ?: run { + Timber.tag(tag).d("Couldn't find session for incoming call: $activeCall") + return@flatMapLatest flowOf() + } + val room = client.getRoom(callType.roomId) ?: run { + Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") + return@flatMapLatest flowOf() + } - Timber.tag(tag).d("Found room for ringing call: ${room.roomId}") - - val eventId = ringingInfo.notificationData.eventId - room to eventId - } - - roomForActiveCallFlow - .flatMapLatest { pair -> - val (room, eventId) = pair - // This will cancel the previous iteration of flatMapLatest if the active call is now null - ?: return@flatMapLatest flowOf() + Timber.tag(tag).d("Found room for ringing call: ${room.roomId}") // If we have declined from another phone we want to stop ringing. - room.subscribeToCallDecline(eventId) + room.subscribeToCallDecline(ringingInfo.notificationData.eventId) .filter { decliner -> Timber.tag(tag).d("Call: $activeCall was declined by $decliner") // only want to listen if the call was declined from another of my sessions, // (we are ringing for an incoming call in a DM) - decliner == room.sessionId + decliner == client.sessionId } } .onEach { decliner -> Timber.tag(tag).d("Call: $activeCall was declined by user from another session") - removeCurrentCall() + // Remove the active call and cancel the notification + activeCall.value = null + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after call declined from another session") + activeWakeLock.release() + } + cancelIncomingCallNotification() } .launchIn(coroutineScope) - // This will observe ringing calls and ensure they're terminated if the room call is cancelled or if the user // has joined the call from another session. - roomForActiveCallFlow - .flatMapLatest { pair -> - val (room, _) = pair - // This will cancel the previous iteration of flatMapLatest if the active call is now null - ?: return@flatMapLatest flowOf() - - // We now observe the room info for changes to the active call state and the call participants + activeCall + .filterNotNull() + .filter { it.callState is CallState.Ringing && it.callType is CallType.RoomCall } + .flatMapLatest { activeCall -> + val callType = activeCall.callType as CallType.RoomCall + // Get a flow of updated `hasRoomCall` and `activeRoomCallParticipants` values for the room + val room = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull()?.getRoom(callType.roomId) ?: run { + Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") + return@flatMapLatest flowOf() + } room.roomInfoFlow.map { - val participants = it.activeRoomCallParticipants - Timber.tag(tag).d("Room call status changed for ringing call | hasRoomCall: ${it.hasRoomCall} | participants: $participants") - val userIsInTheCall = room.sessionId in participants - it.hasRoomCall to userIsInTheCall + Timber.tag(tag).d("Has room call status changed for ringing call: ${it.hasRoomCall}") + it.hasRoomCall to (callType.sessionId in it.activeRoomCallParticipants) } } - // Filter out duplicate values + // We only want to check if the room active call status changes .distinctUntilChanged() // Skip the first one, we're not interested in it (if the check below passes, it had to be active anyway) .drop(1) .onEach { (roomHasActiveCall, userIsInTheCall) -> if (!roomHasActiveCall) { - val notificationData = (activeCall.value?.callState as? CallState.Ringing)?.notificationData - removeCurrentCall() - - if (notificationData != null) { - displayMissedCallNotification(notificationData) - } + // The call was cancelled + timedOutCallJob?.cancel() + incomingCallTimedOut(displayMissedCallNotification = true) } else if (userIsInTheCall) { - removeCurrentCall() + // The user joined the call from another session + timedOutCallJob?.cancel() + incomingCallTimedOut(displayMissedCallNotification = false) } } .launchIn(coroutineScope) diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt index d4993cec17..3d1c35df4d 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt @@ -28,7 +28,6 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID_2 import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID_2 import io.element.android.libraries.matrix.test.A_SESSION_ID -import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.room.FakeBaseRoom @@ -47,7 +46,6 @@ import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.plantTestTimber import io.mockk.coVerify import io.mockk.mockk -import io.mockk.spyk import io.mockk.verify import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope @@ -333,49 +331,6 @@ class DefaultActiveCallManagerTest { assertThat(manager.activeCall.value).isNull() } - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun `observeRingingCalls - declining won't do anything if the call was already cancelled`() = runTest { - val room = FakeBaseRoom().apply { - givenRoomInfo(aRoomInfo()) - } - val client = FakeMatrixClient().apply { - givenGetRoomResult(A_ROOM_ID, room) - } - val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(client) }) - val notificationManagerCompat = mockk(relaxed = true) - val manager = spyk( - createActiveCallManager( - matrixClientProvider = matrixClientProvider, - notificationManagerCompat = notificationManagerCompat, - ) - ) - - manager.registerIncomingCall(aCallNotificationData()) - - // Call is active (the other user join the call) - room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) - advanceTimeBy(1) - - // Call is cancelled by us, hanging up - manager.hungUpCall(CallType.RoomCall(A_SESSION_ID, A_ROOM_ID)) - advanceTimeBy(1) - - verify(exactly = 1) { notificationManagerCompat.cancel(any()) } - verify(exactly = 1) { manager.removeCurrentCall() } - assertThat(manager.activeCall.value).isNull() - assertThat(manager.activeWakeLock?.isHeld).isNull() - - // Simulate that another user declined the call - room.givenDecliner(A_USER_ID_2, AN_EVENT_ID) - advanceTimeBy(1) - - // Check everything stays the same, no extra call to cancelling notifications - verify(exactly = 1) { notificationManagerCompat.cancel(any()) } - verify(exactly = 1) { manager.removeCurrentCall() } - assertThat(manager.activeWakeLock?.isHeld).isNull() - } - @OptIn(ExperimentalCoroutinesApi::class) @Test fun `observeRingingCalls - will do nothing if either the session or the room are not found`() = runTest { From 212084866c80212e1d0ed77d4609d2cdc530da72 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 27 Oct 2025 17:46:16 +0100 Subject: [PATCH 227/898] feature(space): add view members entry --- .../room/joined/JoinedRoomLoadedFlowNode.kt | 24 ++++++++++------ .../roomdetails/api/RoomDetailsEntryPoint.kt | 3 ++ .../impl/DefaultRoomDetailsEntryPoint.kt | 1 + .../features/space/api/SpaceEntryPoint.kt | 2 ++ .../features/space/impl/SpaceFlowNode.kt | 4 +++ .../features/space/impl/root/SpaceNode.kt | 5 ++++ .../features/space/impl/root/SpaceView.kt | 28 +++++++++++++++---- .../space/impl/DefaultSpaceEntryPointTest.kt | 1 + .../features/space/impl/root/SpaceViewTest.kt | 2 ++ 9 files changed, 57 insertions(+), 13 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 93e0c64a7f..aab9590a9b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -22,8 +22,6 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget -import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.Inputs -import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.NavTarget import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint @@ -154,6 +152,9 @@ class JoinedRoomLoadedFlowNode( NavTarget.RoomNotificationSettings -> { createRoomDetailsNode(buildContext, RoomDetailsEntryPoint.InitialTarget.RoomNotificationSettings) } + NavTarget.RoomMemberList -> { + createRoomDetailsNode(buildContext, RoomDetailsEntryPoint.InitialTarget.RoomMemberList) + } NavTarget.Space -> { createSpaceNode(buildContext) } @@ -169,6 +170,10 @@ class JoinedRoomLoadedFlowNode( override fun onOpenDetails() { backstack.push(NavTarget.RoomDetails) } + + override fun onOpenMemberList() { + backstack.push(NavTarget.RoomMemberList) + } } return spaceEntryPoint.nodeBuilder(this, buildContext) .inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId)) @@ -216,6 +221,9 @@ class JoinedRoomLoadedFlowNode( @Parcelize data object RoomDetails : NavTarget + @Parcelize + data object RoomMemberList : NavTarget + @Parcelize data class RoomMemberDetails(val userId: UserId) : NavTarget @@ -229,17 +237,17 @@ class JoinedRoomLoadedFlowNode( } } -private fun initialElement(plugins: List): NavTarget { - val input = plugins.filterIsInstance().single() +private fun initialElement(plugins: List): JoinedRoomLoadedFlowNode.NavTarget { + val input = plugins.filterIsInstance().single() return when (input.initialElement) { is RoomNavigationTarget.Root -> { if (input.room.roomInfoFlow.value.isSpace) { - NavTarget.Space + JoinedRoomLoadedFlowNode.NavTarget.Space } else { - NavTarget.Messages(input.initialElement.eventId) + JoinedRoomLoadedFlowNode.NavTarget.Messages(input.initialElement.eventId) } } - RoomNavigationTarget.Details -> NavTarget.RoomDetails - RoomNavigationTarget.NotificationSettings -> NavTarget.RoomNotificationSettings + RoomNavigationTarget.Details -> JoinedRoomLoadedFlowNode.NavTarget.RoomDetails + RoomNavigationTarget.NotificationSettings -> JoinedRoomLoadedFlowNode.NavTarget.RoomNotificationSettings } } diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index 803002d642..0d725938f6 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -23,6 +23,9 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { @Parcelize data object RoomDetails : InitialTarget + @Parcelize + data object RoomMemberList : InitialTarget + @Parcelize data class RoomMemberDetails(val roomMemberId: UserId) : InitialTarget diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 0ae2dc09ea..5679b8c361 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -44,4 +44,5 @@ internal fun InitialTarget.toNavTarget() = when (this) { is InitialTarget.RoomDetails -> NavTarget.RoomDetails is InitialTarget.RoomMemberDetails -> NavTarget.RoomMemberDetails(roomMemberId) is InitialTarget.RoomNotificationSettings -> NavTarget.RoomNotificationSettings(showUserDefinedSettingStyle = true) + InitialTarget.RoomMemberList -> NavTarget.RoomMemberList } diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index a5f1134bf3..9dd61c6dff 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -33,5 +33,7 @@ interface SpaceEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) fun onOpenDetails() + + fun onOpenMemberList() } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 833186958b..f73a3d31ff 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -88,6 +88,10 @@ class SpaceFlowNode( callback.onOpenDetails() } + override fun onOpenMemberList() { + callback.onOpenMemberList() + } + override fun onLeaveSpace() { backstack.push(NavTarget.Leave) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 5266ba9f46..f02107dad2 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -42,6 +42,8 @@ class SpaceNode( interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) fun onOpenDetails() + + fun onOpenMemberList() fun onLeaveSpace() } @@ -83,6 +85,9 @@ class SpaceNode( onShareSpace = { onShareRoom(context) }, + onViewMembersClick = { + callback.onOpenMemberList() + }, acceptDeclineInviteView = { acceptDeclineInviteView.Render( state = state.acceptDeclineInviteState, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index b32f9b73e1..f4c415b718 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -78,6 +78,7 @@ fun SpaceView( onShareSpace: () -> Unit, onLeaveSpaceClick: () -> Unit, onDetailsClick: () -> Unit, + onViewMembersClick: () -> Unit, modifier: Modifier = Modifier, acceptDeclineInviteView: @Composable () -> Unit, ) { @@ -89,7 +90,8 @@ fun SpaceView( onBackClick = onBackClick, onLeaveSpaceClick = onLeaveSpaceClick, onShareSpace = onShareSpace, - onDetailsClick = onDetailsClick + onDetailsClick = onDetailsClick, + onViewMembersClick = onViewMembersClick, ) }, content = { padding -> @@ -256,6 +258,7 @@ private fun SpaceViewTopBar( onLeaveSpaceClick: () -> Unit, onDetailsClick: () -> Unit, onShareSpace: () -> Unit, + onViewMembersClick: () -> Unit, modifier: Modifier = Modifier, ) { TopAppBar( @@ -304,6 +307,20 @@ private fun SpaceViewTopBar( ) } ) + DropdownMenuItem( + onClick = { + showMenu = false + onViewMembersClick() + }, + text = { Text(stringResource(id = CommonStrings.screen_space_menu_action_members)) }, + leadingIcon = { + Icon( + imageVector = CompoundIcons.User(), + tint = ElementTheme.colors.iconSecondary, + contentDescription = null, + ) + } + ) DropdownMenuItem( onClick = { showMenu = false @@ -344,10 +361,10 @@ private fun SpaceAvatarAndNameRow( ) Text( modifier = Modifier - .padding(horizontal = 8.dp) - .semantics { - heading() - }, + .padding(horizontal = 8.dp) + .semantics { + heading() + }, text = name ?: stringResource(CommonStrings.common_no_space_name), style = ElementTheme.typography.fontBodyLgMedium, fontStyle = FontStyle.Italic.takeIf { name == null }, @@ -403,6 +420,7 @@ internal fun SpaceViewPreview( onLeaveSpaceClick = {}, acceptDeclineInviteView = {}, onDetailsClick = {}, + onViewMembersClick = {}, onBackClick = {}, ) } diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 13e24259dc..2d43ef0d39 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -46,6 +46,7 @@ class DefaultSpaceEntryPointTest { val callback = object : SpaceEntryPoint.Callback { override fun onOpenRoom(roomId: RoomId, viaParameters: List) = lambdaError() override fun onOpenDetails() = lambdaError() + override fun onOpenMemberList() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .inputs(nodeInputs) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt index f8797916e4..44a06d378f 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpaceViewTest.kt @@ -140,6 +140,7 @@ private fun AndroidComposeTestRule.setSpace onShareSpace: () -> Unit = EnsureNeverCalled(), onLeaveSpaceClick: () -> Unit = EnsureNeverCalled(), onDetailsClick: () -> Unit = EnsureNeverCalled(), + onViewMembersClick: () -> Unit = EnsureNeverCalled(), acceptDeclineInviteView: @Composable () -> Unit = {}, ) { setContent { @@ -150,6 +151,7 @@ private fun AndroidComposeTestRule.setSpace onShareSpace = onShareSpace, onLeaveSpaceClick = onLeaveSpaceClick, onDetailsClick = onDetailsClick, + onViewMembersClick = onViewMembersClick, acceptDeclineInviteView = acceptDeclineInviteView, ) } From e9cfce915ad9e9b9d9cf0c2228f5fbd62fb25d40 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 13:28:39 +0100 Subject: [PATCH 228/898] Extract code for forwarding Event to its own modules. --- features/forward/api/build.gradle.kts | 19 ++++++ .../features/forward/api/ForwardEntryPoint.kt | 36 ++++++++++ features/forward/impl/build.gradle.kts | 38 +++++++++++ .../forward/impl/DefaultForwardEntryPoint.kt | 42 ++++++++++++ .../forward/impl}/ForwardMessagesEvents.kt | 2 +- .../forward/impl}/ForwardMessagesNode.kt | 9 +-- .../forward/impl}/ForwardMessagesPresenter.kt | 4 +- .../forward/impl}/ForwardMessagesState.kt | 2 +- .../impl}/ForwardMessagesStateProvider.kt | 2 +- .../forward/impl}/ForwardMessagesView.kt | 2 +- .../impl/DefaultForwardEntryPointTest.kt | 68 +++++++++++++++++++ .../impl}/ForwardMessagesPresenterTest.kt | 26 +++---- .../forward/impl}/ForwardMessagesViewTest.kt | 2 +- features/messages/impl/build.gradle.kts | 1 + .../messages/impl/MessagesFlowNode.kt | 12 ++-- .../impl/DefaultMessagesEntryPointTest.kt | 4 ++ .../test/timeline/FakeTimelineProvider.kt | 24 +++++++ 17 files changed, 263 insertions(+), 30 deletions(-) create mode 100644 features/forward/api/build.gradle.kts create mode 100644 features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt create mode 100644 features/forward/impl/build.gradle.kts create mode 100644 features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesEvents.kt (83%) rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesNode.kt (94%) rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesPresenter.kt (97%) rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesState.kt (88%) rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesStateProvider.kt (95%) rename features/{messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/main/kotlin/io/element/android/features/forward/impl}/ForwardMessagesView.kt (95%) create mode 100644 features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt rename features/{messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/test/kotlin/io/element/android/features/forward/impl}/ForwardMessagesPresenterTest.kt (86%) rename features/{messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward => forward/impl/src/test/kotlin/io/element/android/features/forward/impl}/ForwardMessagesViewTest.kt (97%) create mode 100644 libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimelineProvider.kt diff --git a/features/forward/api/build.gradle.kts b/features/forward/api/build.gradle.kts new file mode 100644 index 0000000000..b5c73539d7 --- /dev/null +++ b/features/forward/api/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.forward.api" +} + +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) +} diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt new file mode 100644 index 0000000000..f0deaffa95 --- /dev/null +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.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.forward.api + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import com.bumble.appyx.core.plugin.Plugin +import io.element.android.libraries.architecture.FeatureEntryPoint +import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.timeline.TimelineProvider + +interface ForwardEntryPoint : FeatureEntryPoint { + interface NodeBuilder { + fun params(params: Params): NodeBuilder + fun callback(callback: Callback): NodeBuilder + fun build(): Node + } + + interface Callback : Plugin { + fun onForwardedToSingleRoom(roomId: RoomId) + } + + data class Params( + val eventId: EventId, + val timelineProvider: TimelineProvider, + ) : NodeInputs + + fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder +} diff --git a/features/forward/impl/build.gradle.kts b/features/forward/impl/build.gradle.kts new file mode 100644 index 0000000000..32da0ed7a2 --- /dev/null +++ b/features/forward/impl/build.gradle.kts @@ -0,0 +1,38 @@ +import extension.setupDependencyInjection +import extension.testCommonDependencies + +/* + * 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.forward.impl" + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } +} + +setupDependencyInjection() + +dependencies { + api(projects.features.forward.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.designsystem) + implementation(projects.libraries.matrix.api) + implementation(projects.libraries.roomselect.api) + + testCommonDependencies(libs, true) + testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.testtags) +} diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt new file mode 100644 index 0000000000..bdb10c38a3 --- /dev/null +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt @@ -0,0 +1,42 @@ +/* + * 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.forward.impl + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import com.bumble.appyx.core.plugin.Plugin +import dev.zacsweers.metro.ContributesBinding +import io.element.android.features.forward.api.ForwardEntryPoint +import io.element.android.libraries.architecture.createNode +import io.element.android.libraries.di.RoomScope + +@ContributesBinding(RoomScope::class) +class DefaultForwardEntryPoint : ForwardEntryPoint { + override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ForwardEntryPoint.NodeBuilder { + val plugins = ArrayList() + + return object : ForwardEntryPoint.NodeBuilder { + override fun params(params: ForwardEntryPoint.Params): ForwardEntryPoint.NodeBuilder { + plugins += ForwardMessagesNode.Inputs( + eventId = params.eventId, + timelineProvider = params.timelineProvider, + ) + return this + } + + override fun callback(callback: ForwardEntryPoint.Callback): ForwardEntryPoint.NodeBuilder { + plugins += callback + return this + } + + override fun build(): Node { + return parentNode.createNode(buildContext, plugins) + } + } + } +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesEvents.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesEvents.kt similarity index 83% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesEvents.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesEvents.kt index 05a77b61a7..06495cfc24 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesEvents.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesEvents.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl sealed interface ForwardMessagesEvents { data object ClearError : ForwardMessagesEvents diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt similarity index 94% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index 2cf0c6e1e7..ba4e2f2cc6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import android.os.Parcelable import androidx.compose.foundation.layout.Box @@ -20,6 +20,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.RoomScope @@ -48,10 +49,6 @@ class ForwardMessagesNode( @Parcelize object NavTarget : Parcelable - interface Callback : Plugin { - fun onForwardedToSingleRoom(roomId: RoomId) - } - data class Inputs( val eventId: EventId, val timelineProvider: TimelineProvider, @@ -59,7 +56,7 @@ class ForwardMessagesNode( private val inputs = inputs() private val presenter = presenterFactory.create(inputs.eventId.value, inputs.timelineProvider) - private val callbacks = plugins.filterIsInstance() + private val callbacks = plugins.filterIsInstance() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { val callback = object : RoomSelectEntryPoint.Callback { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt similarity index 97% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt index 3e3860db3e..d7ffd9b398 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenter.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState @@ -36,7 +36,7 @@ class ForwardMessagesPresenter( private val eventId: EventId = EventId(eventId) @AssistedFactory - interface Factory { + fun interface Factory { fun create(eventId: String, timelineProvider: TimelineProvider): ForwardMessagesPresenter } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesState.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesState.kt similarity index 88% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesState.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesState.kt index a1de911c72..a6d93f39da 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesState.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesState.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.core.RoomId diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesStateProvider.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesStateProvider.kt similarity index 95% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesStateProvider.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesStateProvider.kt index b1728f4657..f5789549c5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesStateProvider.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesStateProvider.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesView.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt similarity index 95% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesView.kt rename to features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt index 9ea76d754f..214c795851 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesView.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.PreviewParameter diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt new file mode 100644 index 0000000000..c6bc78dbe8 --- /dev/null +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.forward.impl + +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import com.bumble.appyx.testing.junit4.util.MainDispatcherRule +import com.google.common.truth.Truth.assertThat +import io.element.android.features.forward.api.ForwardEntryPoint +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.timeline.FakeTimelineProvider +import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.tests.testutils.node.TestParentNode +import kotlinx.coroutines.test.runTest +import org.junit.Rule +import org.junit.Test + +class DefaultForwardEntryPointTest { + @get:Rule + val instantTaskExecutorRule = InstantTaskExecutorRule() + + @get:Rule + val mainDispatcherRule = MainDispatcherRule() + + @Test + fun `test node builder`() = runTest { + val entryPoint = DefaultForwardEntryPoint() + val parentNode = TestParentNode.create { buildContext, plugins -> + ForwardMessagesNode( + buildContext = buildContext, + plugins = plugins, + presenterFactory = { _, _ -> createForwardMessagesPresenter() }, + roomSelectEntryPoint = object : RoomSelectEntryPoint { + override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { + lambdaError() + } + } + ) + } + val callback = object : ForwardEntryPoint.Callback { + override fun onForwardedToSingleRoom(roomId: RoomId) = lambdaError() + } + val params = ForwardEntryPoint.Params( + eventId = AN_EVENT_ID, + timelineProvider = FakeTimelineProvider(), + ) + val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) + .params(params) + .callback(callback) + .build() + assertThat(result).isInstanceOf(ForwardMessagesNode::class.java) + assertThat(result.plugins).contains( + ForwardMessagesNode.Inputs( + eventId = params.eventId, + timelineProvider = params.timelineProvider, + ) + ) + assertThat(result.plugins).contains(callback) + } +} diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenterTest.kt similarity index 86% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt rename to features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenterTest.kt index 757e682592..6850a5ef07 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesPresenterTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -32,7 +32,7 @@ class ForwardMessagesPresenterTest { @Test fun `present - initial state`() = runTest { - val presenter = aForwardMessagesPresenter() + val presenter = createForwardMessagesPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -50,7 +50,7 @@ class ForwardMessagesPresenterTest { this.forwardEventLambda = forwardEventLambda } val room = FakeJoinedRoom(liveTimeline = timeline) - val presenter = aForwardMessagesPresenter(fakeRoom = room) + val presenter = createForwardMessagesPresenter(fakeRoom = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -74,7 +74,7 @@ class ForwardMessagesPresenterTest { this.forwardEventLambda = forwardEventLambda } val room = FakeJoinedRoom(liveTimeline = timeline) - val presenter = aForwardMessagesPresenter(fakeRoom = room) + val presenter = createForwardMessagesPresenter(fakeRoom = room) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -90,13 +90,13 @@ class ForwardMessagesPresenterTest { forwardEventLambda.assertions().isCalledOnce() } } - - private fun TestScope.aForwardMessagesPresenter( - eventId: EventId = AN_EVENT_ID, - fakeRoom: FakeJoinedRoom = FakeJoinedRoom(), - ) = ForwardMessagesPresenter( - eventId = eventId.value, - timelineProvider = LiveTimelineProvider(fakeRoom), - sessionCoroutineScope = this, - ) } + +fun TestScope.createForwardMessagesPresenter( + eventId: EventId = AN_EVENT_ID, + fakeRoom: FakeJoinedRoom = FakeJoinedRoom(), +) = ForwardMessagesPresenter( + eventId = eventId.value, + timelineProvider = LiveTimelineProvider(fakeRoom), + sessionCoroutineScope = this, +) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesViewTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesViewTest.kt similarity index 97% rename from features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesViewTest.kt rename to features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesViewTest.kt index 0912fcc75c..9cecda6973 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/forward/ForwardMessagesViewTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/ForwardMessagesViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.messages.impl.forward +package io.element.android.features.forward.impl import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index 43efad9da0..ee2d7f48b0 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -29,6 +29,7 @@ dependencies { implementation(projects.appconfig) implementation(projects.features.call.api) implementation(projects.features.enterprise.api) + implementation(projects.features.forward.api) implementation(projects.features.location.api) implementation(projects.features.poll.api) implementation(projects.features.roomcall.api) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 82aafcf545..f08afd7d9d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -25,6 +25,7 @@ import im.vector.app.features.analytics.plan.Interaction import io.element.android.annotations.ContributesNode import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint +import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint import io.element.android.features.location.api.Location import io.element.android.features.location.api.LocationService @@ -33,7 +34,6 @@ import io.element.android.features.location.api.ShowLocationEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewNode -import io.element.android.features.messages.impl.forward.ForwardMessagesNode import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider import io.element.android.features.messages.impl.pinned.list.PinnedMessagesListNode import io.element.android.features.messages.impl.report.ReportMessageNode @@ -103,6 +103,7 @@ class MessagesFlowNode( private val createPollEntryPoint: CreatePollEntryPoint, private val elementCallEntryPoint: ElementCallEntryPoint, private val mediaViewerEntryPoint: MediaViewerEntryPoint, + private val forwardEntryPoint: ForwardEntryPoint, private val analyticsService: AnalyticsService, private val locationService: LocationService, private val room: BaseRoom, @@ -333,13 +334,16 @@ class MessagesFlowNode( } else { timelineController } - val inputs = ForwardMessagesNode.Inputs(navTarget.eventId, timelineProvider) - val callback = object : ForwardMessagesNode.Callback { + val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) + val callback = object : ForwardEntryPoint.Callback { override fun onForwardedToSingleRoom(roomId: RoomId) { callbacks.forEach { it.onForwardedToSingleRoom(roomId) } } } - createNode(buildContext, listOf(inputs, callback)) + forwardEntryPoint.nodeBuilder(this, buildContext) + .params(params) + .callback(callback) + .build() } is NavTarget.ReportMessage -> { val inputs = ReportMessageNode.Inputs(navTarget.eventId, navTarget.senderId) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 2de761ad69..fed52f7840 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -15,6 +15,7 @@ import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.call.api.CallType import io.element.android.features.call.api.ElementCallEntryPoint +import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint import io.element.android.features.location.api.SendLocationEntryPoint import io.element.android.features.location.api.ShowLocationEntryPoint @@ -90,6 +91,9 @@ class DefaultMessagesEntryPointTest { mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() }, + forwardEntryPoint = object : ForwardEntryPoint { + override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + }, analyticsService = FakeAnalyticsService(), locationService = FakeLocationService(), room = FakeBaseRoom(), diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimelineProvider.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimelineProvider.kt new file mode 100644 index 0000000000..519789c003 --- /dev/null +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimelineProvider.kt @@ -0,0 +1,24 @@ +/* + * 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.test.timeline + +import io.element.android.libraries.matrix.api.timeline.Timeline +import io.element.android.libraries.matrix.api.timeline.TimelineProvider +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow + +class FakeTimelineProvider( + initialTimeline: Timeline? = null, +) : TimelineProvider { + private val timelineFlow = MutableStateFlow(initialTimeline) + + override fun activeTimelineFlow(): StateFlow { + return timelineFlow.asStateFlow() + } +} From 63d4f7322e4aad3a0e491f411292eca45794c0d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:49:23 +0000 Subject: [PATCH 229/898] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.28 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70d8307266..dcd8b6a8b5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -171,7 +171,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.13" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.28" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } From 003af22c3170a60b70785c28ceccf50901bafa92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Tue, 28 Oct 2025 17:12:40 +0100 Subject: [PATCH 230/898] Fix api breaks: - `ComposerDraft` now takes a list of media attachments. - `HumanQrLoginException` has a couple of new cases. - `Client.loginWithQrCode` now returns a `LoginWithQrCodeHandle`, which we need to call using `scan` to have the same behaviour as before. --- .../matrix/api/auth/qrlogin/QrLoginException.kt | 2 ++ .../impl/auth/RustMatrixAuthenticationService.kt | 9 ++++++--- .../matrix/impl/auth/qrlogin/QrErrorMapper.kt | 2 ++ .../matrix/impl/room/draft/ComposerDraftMapper.kt | 4 +++- settings.gradle.kts | 13 +++++++------ 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt index ab278abd56..6a2871dc56 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt @@ -17,4 +17,6 @@ sealed class QrLoginException : Exception() { data object SlidingSyncNotAvailable : QrLoginException() data object OtherDeviceNotSignedIn : QrLoginException() data object Unknown : QrLoginException() + data object CheckCodeAlreadySent : QrLoginException() + data object CheckCodeCannotBeSent : QrLoginException() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 6342721593..408af2eb0a 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -289,10 +289,13 @@ class RustMatrixAuthenticationService( qrCodeData = sdkQrCodeLoginData, ) client.loginWithQrCode( - qrCodeData = qrCodeData.rustQrCodeData, oidcConfiguration = oidcConfiguration, - progressListener = progressListener, - ) + ).use { + it.scan( + qrCodeData = qrCodeData.rustQrCodeData, + progressListener = progressListener, + ) + } // Ensure that the user is not already logged in with the same account ensureNotAlreadyLoggedIn(client) val sessionData = client.session() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrErrorMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrErrorMapper.kt index 7b1c614bec..9b7a19aea4 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrErrorMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/QrErrorMapper.kt @@ -42,5 +42,7 @@ object QrErrorMapper { is RustHumanQrLoginException.Unknown -> QrLoginException.Unknown is RustHumanQrLoginException.OidcMetadataInvalid -> QrLoginException.OidcMetadataInvalid is RustHumanQrLoginException.SlidingSyncNotAvailable -> QrLoginException.SlidingSyncNotAvailable + is RustHumanQrLoginException.CheckCodeAlreadySent -> QrLoginException.CheckCodeAlreadySent + is RustHumanQrLoginException.CheckCodeCannotBeSent -> QrLoginException.CheckCodeCannotBeSent } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/draft/ComposerDraftMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/draft/ComposerDraftMapper.kt index 1bdadb96fc..d4435b24a1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/draft/ComposerDraftMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/draft/ComposerDraftMapper.kt @@ -17,7 +17,9 @@ internal fun ComposerDraft.into(): RustComposerDraft { return RustComposerDraft( plainText = plainText, htmlText = htmlText, - draftType = draftType.into() + draftType = draftType.into(), + // TODO add media attachments to the draft + attachments = emptyList(), ) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 9245034508..16f24f3a10 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,11 +5,9 @@ * Please see LICENSE files in the repository root for full details. */ -import java.net.URI - pluginManagement { repositories { - includeBuild("plugins") + includeBuild("plugins") gradlePluginPortal() google() mavenCentral() @@ -18,14 +16,17 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { - google() - mavenCentral() maven { - url = URI("https://www.jitpack.io") + url = uri("https://www.jitpack.io") content { includeModule("com.github.matrix-org", "matrix-analytics-events") } } + google() + mavenCentral() + maven { + url = uri("https://repo1.maven.org/maven2/") + } flatDir { dirs("libraries/matrix/libs") } From 21bae4aee2c0a6b9656dfb59a1d3b27eaf9fcfe2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 16:02:37 +0100 Subject: [PATCH 231/898] Add Forward action to MediaDetailsBottomSheet. Closes #5454 Improve API of Callback when forwarding Event. --- .../android/appnav/LoggedInFlowNode.kt | 4 -- .../room/joined/JoinedRoomLoadedFlowNode.kt | 37 ++++++++++++++++--- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 13 +++++++ .../features/forward/api/ForwardEntryPoint.kt | 2 +- .../forward/impl/DefaultForwardEntryPoint.kt | 4 +- .../forward/impl/ForwardMessagesNode.kt | 16 +++----- .../impl/DefaultForwardEntryPointTest.kt | 2 +- .../messages/api/MessagesEntryPoint.kt | 3 +- .../messages/impl/MessagesFlowNode.kt | 22 +++++++++-- .../impl/DefaultMessagesEntryPointTest.kt | 3 +- .../roomdetails/api/RoomDetailsEntryPoint.kt | 3 +- .../roomdetails/impl/RoomDetailsFlowNode.kt | 16 +++++++- .../impl/DefaultRoomDetailsEntryPointTest.kt | 2 +- .../userprofile/impl/UserProfileFlowNode.kt | 4 ++ .../matrix/api/timeline/TimelineProvider.kt | 2 +- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 1 + .../mediaviewer/api/MediaViewerEntryPoint.kt | 1 + libraries/mediaviewer/impl/build.gradle.kts | 1 + .../impl/details/MediaDetailsBottomSheet.kt | 10 +++++ .../impl/gallery/MediaGalleryEvents.kt | 1 + .../impl/gallery/MediaGalleryNavigator.kt | 1 + .../impl/gallery/MediaGalleryNode.kt | 7 ++++ .../impl/gallery/MediaGalleryPresenter.kt | 4 ++ .../impl/gallery/MediaGalleryView.kt | 3 ++ .../impl/gallery/root/MediaGalleryFlowNode.kt | 17 ++++++++- .../impl/viewer/MediaViewerEvents.kt | 1 + .../impl/viewer/MediaViewerNavigator.kt | 1 + .../impl/viewer/MediaViewerNode.kt | 6 +++ .../impl/viewer/MediaViewerPresenter.kt | 4 ++ .../impl/viewer/MediaViewerView.kt | 3 ++ .../impl/DefaultMediaGalleryEntryPointTest.kt | 3 +- .../impl/DefaultMediaViewerEntryPointTest.kt | 2 + .../details/MediaDetailsBottomSheetTest.kt | 15 ++++++++ .../impl/gallery/FakeMediaGalleryNavigator.kt | 7 +++- .../impl/viewer/FakeMediaViewerNavigator.kt | 5 +++ 35 files changed, 190 insertions(+), 36 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index eb1df5643e..22328d3980 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -342,10 +342,6 @@ class LoggedInFlowNode( backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), serverNames)) } - override fun onForwardedToSingleRoom(roomId: RoomId) { - sessionCoroutineScope.launch { attachRoom(roomId.toRoomIdOrAlias(), clearBackstack = false) } - } - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { when (data) { is PermalinkData.UserLink -> { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 93e0c64a7f..f7140804c8 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -16,6 +16,7 @@ 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 dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject @@ -24,6 +25,7 @@ import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.Inputs import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.NavTarget +import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint @@ -43,6 +45,8 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize import timber.log.Timber @@ -55,6 +59,7 @@ class JoinedRoomLoadedFlowNode( private val messagesEntryPoint: MessagesEntryPoint, private val roomDetailsEntryPoint: RoomDetailsEntryPoint, private val spaceEntryPoint: SpaceEntryPoint, + private val forwardEntryPoint: ForwardEntryPoint, private val appNavigationStateService: AppNavigationStateService, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, @@ -72,7 +77,6 @@ class JoinedRoomLoadedFlowNode( interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, serverNames: List) fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun onForwardedToSingleRoom(roomId: RoomId) fun onOpenGlobalNotificationSettings() } @@ -130,8 +134,8 @@ class JoinedRoomLoadedFlowNode( callbacks.forEach { it.onPermalinkClick(data, pushToBackstack) } } - override fun onForwardedToSingleRoom(roomId: RoomId) { - callbacks.forEach { it.onForwardedToSingleRoom(roomId) } + override fun forwardEvent(eventId: EventId) { + backstack.push(NavTarget.ForwardEvent(eventId)) } } return roomDetailsEntryPoint.nodeBuilder(this, buildContext) @@ -157,6 +161,22 @@ class JoinedRoomLoadedFlowNode( NavTarget.Space -> { createSpaceNode(buildContext) } + is NavTarget.ForwardEvent -> { + val timelineProvider = { MutableStateFlow(inputs.room.liveTimeline).asStateFlow() } + val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) + val callback = object : ForwardEntryPoint.Callback { + override fun onForwardDone(roomIds: List) { + backstack.pop() + roomIds.singleOrNull()?.let { roomId -> + callbacks.forEach { it.onOpenRoom(roomId, emptyList()) } + } + } + } + forwardEntryPoint.nodeBuilder(this, buildContext) + .params(params) + .callback(callback) + .build() + } } } @@ -193,8 +213,12 @@ class JoinedRoomLoadedFlowNode( callbacks.forEach { it.onPermalinkClick(data, pushToBackstack) } } - override fun onForwardedToSingleRoom(roomId: RoomId) { - callbacks.forEach { it.onForwardedToSingleRoom(roomId) } + override fun forwardEvent(eventId: EventId) { + backstack.push(NavTarget.ForwardEvent(eventId)) + } + + override fun openRoom(roomId: RoomId) { + callbacks.forEach { it.onOpenRoom(roomId, emptyList()) } } } val params = MessagesEntryPoint.Params( @@ -219,6 +243,9 @@ class JoinedRoomLoadedFlowNode( @Parcelize data class RoomMemberDetails(val userId: UserId) : NavTarget + @Parcelize + data class ForwardEvent(val eventId: EventId) : NavTarget + @Parcelize data object RoomNotificationSettings : NavTarget } diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index f8a18fa24a..8e73165cb6 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -20,6 +20,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode +import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint @@ -122,11 +123,22 @@ class JoinedRoomLoadedFlowNodeTest { } } + private class FakeForwardEntryPoint : ForwardEntryPoint { + override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ForwardEntryPoint.NodeBuilder { + return object : ForwardEntryPoint.NodeBuilder { + override fun params(params: ForwardEntryPoint.Params) = this + override fun callback(callback: ForwardEntryPoint.Callback) = this + override fun build() = node(buildContext) {} + } + } + } + private fun TestScope.createJoinedRoomLoadedFlowNode( plugins: List, messagesEntryPoint: MessagesEntryPoint = FakeMessagesEntryPoint(), roomDetailsEntryPoint: RoomDetailsEntryPoint = FakeRoomDetailsEntryPoint(), spaceEntryPoint: SpaceEntryPoint = FakeSpaceEntryPoint(), + forwardEntryPoint: ForwardEntryPoint = FakeForwardEntryPoint(), activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), @@ -134,6 +146,7 @@ class JoinedRoomLoadedFlowNodeTest { messagesEntryPoint = messagesEntryPoint, roomDetailsEntryPoint = roomDetailsEntryPoint, spaceEntryPoint = spaceEntryPoint, + forwardEntryPoint = forwardEntryPoint, appNavigationStateService = FakeAppNavigationStateService(), sessionCoroutineScope = this, roomGraphFactory = FakeRoomGraphFactory(), diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt index f0deaffa95..e0632ca20c 100644 --- a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt @@ -24,7 +24,7 @@ interface ForwardEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onForwardedToSingleRoom(roomId: RoomId) + fun onForwardDone(roomIds: List) } data class Params( diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt index bdb10c38a3..55eede7b57 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt @@ -13,9 +13,9 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.architecture.createNode -import io.element.android.libraries.di.RoomScope +import io.element.android.libraries.di.SessionScope -@ContributesBinding(RoomScope::class) +@ContributesBinding(SessionScope::class) class DefaultForwardEntryPoint : ForwardEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ForwardEntryPoint.NodeBuilder { val plugins = ArrayList() diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index ba4e2f2cc6..3bab03ff65 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -23,7 +23,7 @@ import io.element.android.annotations.ContributesNode import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.inputs -import io.element.android.libraries.di.RoomScope +import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.timeline.TimelineProvider @@ -31,7 +31,7 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint import io.element.android.libraries.roomselect.api.RoomSelectMode import kotlinx.parcelize.Parcelize -@ContributesNode(RoomScope::class) +@ContributesNode(SessionScope::class) @AssistedInject class ForwardMessagesNode( @Assisted buildContext: BuildContext, @@ -65,7 +65,7 @@ class ForwardMessagesNode( } override fun onCancel() { - navigateUp() + onForwardDone(emptyList()) } } @@ -86,16 +86,12 @@ class ForwardMessagesNode( val state = presenter.present() ForwardMessagesView( state = state, - onForwardSuccess = ::onForwardSuccess, + onForwardSuccess = ::onForwardDone, ) } } - private fun onForwardSuccess(roomIds: List) { - navigateUp() - if (roomIds.size == 1) { - val targetRoomId = roomIds.first() - callbacks.forEach { it.onForwardedToSingleRoom(targetRoomId) } - } + private fun onForwardDone(roomIds: List) { + callbacks.forEach { it.onForwardDone(roomIds) } } } diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index c6bc78dbe8..9af564f50d 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -46,7 +46,7 @@ class DefaultForwardEntryPointTest { ) } val callback = object : ForwardEntryPoint.Callback { - override fun onForwardedToSingleRoom(roomId: RoomId) = lambdaError() + override fun onForwardDone(roomIds: List) = lambdaError() } val params = ForwardEntryPoint.Params( eventId = AN_EVENT_ID, diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 706e292dbb..8478a57940 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -38,7 +38,8 @@ interface MessagesEntryPoint : FeatureEntryPoint { fun onRoomDetailsClick() fun onUserDataClick(userId: UserId) fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun onForwardedToSingleRoom(roomId: RoomId) + fun forwardEvent(eventId: EventId) + fun openRoom(roomId: RoomId) } data class Params(val initialTarget: InitialTarget) : NodeInputs diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index f08afd7d9d..e9cec2b652 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -18,6 +18,7 @@ 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 dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject @@ -150,7 +151,10 @@ class MessagesFlowNode( data class EventDebugInfo(val eventId: EventId?, val debugInfo: TimelineItemDebugInfo) : NavTarget @Parcelize - data class ForwardEvent(val eventId: EventId, val fromPinnedEvents: Boolean) : NavTarget + data class ForwardEvent( + val eventId: EventId, + val fromPinnedEvents: Boolean, + ) : NavTarget @Parcelize data class ReportMessage(val eventId: EventId, val senderId: UserId) : NavTarget @@ -306,6 +310,11 @@ class MessagesFlowNode( override fun onViewInTimeline(eventId: EventId) { viewInTimeline(eventId) } + + override fun onForwardEvent(eventId: EventId) { + // Need to go to the parent because of the overlay + forwardEvent(eventId) + } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) .params(params) @@ -336,8 +345,11 @@ class MessagesFlowNode( } val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) val callback = object : ForwardEntryPoint.Callback { - override fun onForwardedToSingleRoom(roomId: RoomId) { - callbacks.forEach { it.onForwardedToSingleRoom(roomId) } + override fun onForwardDone(roomIds: List) { + backstack.pop() + roomIds.singleOrNull()?.let { roomId -> + callbacks.forEach { it.openRoom(roomId) } + } } } forwardEntryPoint.nodeBuilder(this, buildContext) @@ -489,6 +501,10 @@ class MessagesFlowNode( callbacks.forEach { it.onPermalinkClick(permalinkData, pushToBackstack = false) } } + private fun forwardEvent(eventId: EventId) { + callbacks.forEach { it.forwardEvent(eventId) } + } + private fun processEventClick( timelineMode: Timeline.Mode, event: TimelineItem.Event, diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index fed52f7840..dc7e5ad5d4 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -119,7 +119,8 @@ class DefaultMessagesEntryPointTest { override fun onRoomDetailsClick() = lambdaError() override fun onUserDataClick(userId: UserId) = lambdaError() override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() - override fun onForwardedToSingleRoom(roomId: RoomId) = lambdaError() + override fun forwardEvent(eventId: EventId) = lambdaError() + override fun openRoom(roomId: RoomId) = lambdaError() } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) val params = MessagesEntryPoint.Params(initialTarget) diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index 803002d642..d68cb0f5e8 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -13,6 +13,7 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData @@ -36,7 +37,7 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { fun onOpenGlobalNotificationSettings() fun onOpenRoom(roomId: RoomId, serverNames: List) fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun onForwardedToSingleRoom(roomId: RoomId) + fun forwardEvent(eventId: EventId) } interface NodeBuilder { 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 2b4bf10d67..a72f0394b4 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 @@ -294,6 +294,10 @@ class RoomDetailsFlowNode( override fun onViewInTimeline(eventId: EventId) { // Cannot happen } + + override fun onForwardEvent(eventId: EventId) { + // Cannot happen + } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) .avatar( @@ -321,6 +325,10 @@ class RoomDetailsFlowNode( it.onPermalinkClick(permalinkData, pushToBackstack = false) } } + + override fun forwardEvent(eventId: EventId) { + plugins().forEach { it.forwardEvent(eventId) } + } } mediaGalleryEntryPoint.nodeBuilder(this, buildContext) .callback(callback) @@ -343,8 +351,12 @@ class RoomDetailsFlowNode( plugins().forEach { it.onPermalinkClick(data, pushToBackstack) } } - override fun onForwardedToSingleRoom(roomId: RoomId) { - plugins().forEach { it.onForwardedToSingleRoom(roomId) } + override fun forwardEvent(eventId: EventId) { + plugins().forEach { it.forwardEvent(eventId) } + } + + override fun openRoom(roomId: RoomId) { + plugins().forEach { it.onOpenRoom(roomId, emptyList()) } } } return messagesEntryPoint.nodeBuilder(this, buildContext) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index f2412e616b..a9d528ace5 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -97,7 +97,7 @@ class DefaultRoomDetailsEntryPointTest { override fun onOpenGlobalNotificationSettings() = lambdaError() override fun onOpenRoom(roomId: RoomId, serverNames: List) = lambdaError() override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() - override fun onForwardedToSingleRoom(roomId: RoomId) = lambdaError() + override fun forwardEvent(eventId: EventId) = lambdaError() } val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index 5828d60c25..da3adef973 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -101,6 +101,10 @@ class UserProfileFlowNode( override fun onViewInTimeline(eventId: EventId) { // Cannot happen } + + override fun onForwardEvent(eventId: EventId) { + // Cannot happen + } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) .avatar( diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/TimelineProvider.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/TimelineProvider.kt index acc18ee1a0..592b5ab3ba 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/TimelineProvider.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/TimelineProvider.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.flow.first * It could be the live timeline, a pinned timeline or a detached timeline. * By default, the active timeline is the live timeline. */ -interface TimelineProvider { +fun interface TimelineProvider { fun activeTimelineFlow(): StateFlow } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index 841e82f195..119c1002c8 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -24,5 +24,6 @@ interface MediaGalleryEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onBackClick() fun onViewInTimeline(eventId: EventId) + fun forwardEvent(eventId: EventId) } } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index 906283c457..b16de69b98 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -31,6 +31,7 @@ interface MediaViewerEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onDone() fun onViewInTimeline(eventId: EventId) + fun onForwardEvent(eventId: EventId) } data class Params( diff --git a/libraries/mediaviewer/impl/build.gradle.kts b/libraries/mediaviewer/impl/build.gradle.kts index ea435433f4..eb49387372 100644 --- a/libraries/mediaviewer/impl/build.gradle.kts +++ b/libraries/mediaviewer/impl/build.gradle.kts @@ -33,6 +33,7 @@ dependencies { implementation(libs.telephoto.flick) implementation(projects.features.enterprise.api) + implementation(projects.features.forward.api) implementation(projects.features.viewfolder.api) implementation(projects.libraries.androidutils) implementation(projects.libraries.architecture) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheet.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheet.kt index 22c29c590b..35d5a3e518 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheet.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheet.kt @@ -49,6 +49,7 @@ fun MediaDetailsBottomSheet( state: MediaBottomSheetState.MediaDetailsBottomSheetState, onViewInTimeline: (EventId) -> Unit, onShare: (EventId) -> Unit, + onForward: (EventId) -> Unit, onDownload: (EventId) -> Unit, onDelete: (EventId) -> Unit, onDismiss: () -> Unit, @@ -102,6 +103,14 @@ fun MediaDetailsBottomSheet( onShare(state.eventId) } ) + ListItem( + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Forward())), + headlineContent = { Text(stringResource(CommonStrings.action_forward)) }, + style = ListItemStyle.Primary, + onClick = { + onForward(state.eventId) + } + ) ListItem( leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Download())), headlineContent = { Text(stringResource(CommonStrings.action_save)) }, @@ -216,6 +225,7 @@ internal fun MediaDetailsBottomSheetPreview() = ElementPreview { state = aMediaDetailsBottomSheetState(), onViewInTimeline = {}, onShare = {}, + onForward = {}, onDownload = {}, onDelete = {}, onDismiss = {}, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt index df7d82c7b2..f7a03020c5 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt @@ -17,6 +17,7 @@ sealed interface MediaGalleryEvents { data class ChangeMode(val mode: MediaGalleryMode) : MediaGalleryEvents data class LoadMore(val direction: Timeline.PaginationDirection) : MediaGalleryEvents data class Share(val eventId: EventId?) : MediaGalleryEvents + data class Forward(val eventId: EventId) : MediaGalleryEvents data class SaveOnDisk(val eventId: EventId?) : MediaGalleryEvents data class OpenInfo(val mediaItem: MediaItem.Event) : MediaGalleryEvents data class ViewInTimeline(val eventId: EventId) : MediaGalleryEvents diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNavigator.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNavigator.kt index 0195e7f39c..8ce4860c53 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNavigator.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNavigator.kt @@ -11,4 +11,5 @@ import io.element.android.libraries.matrix.api.core.EventId interface MediaGalleryNavigator { fun onViewInTimelineClick(eventId: EventId) + fun onForwardClick(eventId: EventId) } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt index 06a3c6a58f..6ee31c6520 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt @@ -40,6 +40,7 @@ class MediaGalleryNode( fun onBackClick() fun onItemClick(item: MediaItem.Event) fun onViewInTimeline(eventId: EventId) + fun onForward(eventId: EventId) } private fun onBackClick() { @@ -54,6 +55,12 @@ class MediaGalleryNode( } } + override fun onForwardClick(eventId: EventId) { + plugins().forEach { + it.onForward(eventId) + } + } + private fun onItemClick(item: MediaItem.Event) { plugins().forEach { it.onItemClick(item) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt index ba3d4d5e1f..3f8a31cc26 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt @@ -105,6 +105,10 @@ class MediaGalleryPresenter( share(it) } } + is MediaGalleryEvents.Forward -> { + mediaBottomSheetState = MediaBottomSheetState.Hidden + navigator.onForwardClick(event.eventId) + } is MediaGalleryEvents.ViewInTimeline -> { mediaBottomSheetState = MediaBottomSheetState.Hidden navigator.onViewInTimelineClick(event.eventId) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt index a48ff93d71..50a7fe9aad 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt @@ -166,6 +166,9 @@ fun MediaGalleryView( onShare = { eventId -> state.eventSink(MediaGalleryEvents.Share(eventId)) }, + onForward = { eventId -> + state.eventSink(MediaGalleryEvents.Forward(eventId)) + }, onDownload = { eventId -> state.eventSink(MediaGalleryEvents.SaveOnDisk(eventId)) }, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index e617829ad0..76f025006f 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -44,7 +44,7 @@ import kotlinx.parcelize.Parcelize class MediaGalleryFlowNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, - private val mediaViewerEntryPoint: MediaViewerEntryPoint + private val mediaViewerEntryPoint: MediaViewerEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = NavTarget.Root, @@ -82,6 +82,12 @@ class MediaGalleryFlowNode( } } + private fun forwardEvent(eventId: EventId) { + plugins().forEach { + it.forwardEvent(eventId) + } + } + override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Root -> { @@ -94,6 +100,10 @@ class MediaGalleryFlowNode( this@MediaGalleryFlowNode.onViewInTimeline(eventId) } + override fun onForward(eventId: EventId) { + forwardEvent(eventId) + } + override fun onItemClick(item: MediaItem.Event) { val mode = when (item) { is MediaItem.Audio, @@ -124,6 +134,11 @@ class MediaGalleryFlowNode( override fun onViewInTimeline(eventId: EventId) { this@MediaGalleryFlowNode.onViewInTimeline(eventId) } + + override fun onForwardEvent(eventId: EventId) { + // Need to go to the parent because of the overlay + forwardEvent(eventId) + } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) .params( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerEvents.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerEvents.kt index 708c423d36..519100b610 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerEvents.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerEvents.kt @@ -17,6 +17,7 @@ sealed interface MediaViewerEvents { data class OpenWith(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents data class ClearLoadingError(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents data class ViewInTimeline(val eventId: EventId) : MediaViewerEvents + data class Forward(val eventId: EventId) : MediaViewerEvents data class OpenInfo(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents data class ConfirmDelete( val eventId: EventId, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt index c75db00afe..77e253dfa5 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt @@ -11,5 +11,6 @@ import io.element.android.libraries.matrix.api.core.EventId interface MediaViewerNavigator { fun onViewInTimelineClick(eventId: EventId) + fun onForwardClick(eventId: EventId) fun onItemDeleted() } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index 6599411411..ee874156cd 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -71,6 +71,12 @@ class MediaViewerNode( } } + override fun onForwardClick(eventId: EventId) { + plugins().forEach { + it.onForwardEvent(eventId) + } + } + override fun onItemDeleted() { onDone() } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt index c7b93a227f..726e9989ce 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt @@ -117,6 +117,10 @@ class MediaViewerPresenter( mediaBottomSheetState = MediaBottomSheetState.Hidden navigator.onViewInTimelineClick(event.eventId) } + is MediaViewerEvents.Forward -> { + mediaBottomSheetState = MediaBottomSheetState.Hidden + navigator.onForwardClick(event.eventId) + } is MediaViewerEvents.OpenInfo -> coroutineScope.launch { mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState( eventId = event.data.eventId, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt index 110054eb20..791bd1bc8e 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt @@ -247,6 +247,9 @@ fun MediaViewerView( state.eventSink(MediaViewerEvents.Share(currentData)) } }, + onForward = { + state.eventSink(MediaViewerEvents.Forward(it)) + }, onDownload = { (currentData as? MediaViewerPageData.MediaViewerData)?.let { state.eventSink(MediaViewerEvents.SaveOnDisk(currentData)) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 0f8b0fedfb..38040426e1 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -37,12 +37,13 @@ class DefaultMediaGalleryEntryPointTest { plugins = plugins, mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() - } + }, ) } val callback = object : MediaGalleryEntryPoint.Callback { override fun onBackClick() = lambdaError() override fun onViewInTimeline(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index ddc04fc6ce..a1f60cc124 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -72,6 +72,7 @@ class DefaultMediaViewerEntryPointTest { val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() override fun onViewInTimeline(eventId: EventId) = lambdaError() + override fun onForwardEvent(eventId: EventId) = lambdaError() } val params = createMediaViewerEntryPointParams() val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) @@ -115,6 +116,7 @@ class DefaultMediaViewerEntryPointTest { val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() override fun onViewInTimeline(eventId: EventId) = lambdaError() + override fun onForwardEvent(eventId: EventId) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .avatar( diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheetTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheetTest.kt index bd4373a420..3177ed0774 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheetTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/details/MediaDetailsBottomSheetTest.kt @@ -56,6 +56,19 @@ class MediaDetailsBottomSheetTest { } } + @Test + @Config(qualifiers = "h1024dp") + fun `clicking on Forward invokes expected callback`() { + val state = aMediaDetailsBottomSheetState() + ensureCalledOnceWithParam(state.eventId) { callback -> + rule.setMediaDetailsBottomSheet( + state = state, + onForward = callback, + ) + rule.clickOn(CommonStrings.action_forward) + } + } + @Test @Config(qualifiers = "h1024dp") fun `clicking on Save invokes expected callback`() { @@ -100,6 +113,7 @@ private fun AndroidComposeTestRule.setMedia state: MediaBottomSheetState.MediaDetailsBottomSheetState, onViewInTimeline: (EventId) -> Unit = EnsureNeverCalledWithParam(), onShare: (EventId) -> Unit = EnsureNeverCalledWithParam(), + onForward: (EventId) -> Unit = EnsureNeverCalledWithParam(), onDownload: (EventId) -> Unit = EnsureNeverCalledWithParam(), onDelete: (EventId) -> Unit = EnsureNeverCalledWithParam(), onDismiss: () -> Unit = EnsureNeverCalled(), @@ -109,6 +123,7 @@ private fun AndroidComposeTestRule.setMedia state = state, onViewInTimeline = onViewInTimeline, onShare = onShare, + onForward = onForward, onDownload = onDownload, onDelete = onDelete, onDismiss = onDismiss, diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/FakeMediaGalleryNavigator.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/FakeMediaGalleryNavigator.kt index 2566ef91a4..8727335e6d 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/FakeMediaGalleryNavigator.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/FakeMediaGalleryNavigator.kt @@ -11,9 +11,14 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.tests.testutils.lambda.lambdaError class FakeMediaGalleryNavigator( - private val onViewInTimelineClickLambda: (EventId) -> Unit = { lambdaError() } + private val onViewInTimelineClickLambda: (EventId) -> Unit = { lambdaError() }, + private val onForwardClickLambda: (EventId) -> Unit = { lambdaError() }, ) : MediaGalleryNavigator { override fun onViewInTimelineClick(eventId: EventId) { onViewInTimelineClickLambda(eventId) } + + override fun onForwardClick(eventId: EventId) { + onForwardClickLambda(eventId) + } } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt index 6c0148b124..791527445b 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt @@ -12,12 +12,17 @@ import io.element.android.tests.testutils.lambda.lambdaError class FakeMediaViewerNavigator( private val onViewInTimelineClickLambda: (EventId) -> Unit = { lambdaError() }, + private val onForwardClickLambda: (EventId) -> Unit = { lambdaError() }, private val onItemDeletedLambda: () -> Unit = { lambdaError() }, ) : MediaViewerNavigator { override fun onViewInTimelineClick(eventId: EventId) { onViewInTimelineClickLambda(eventId) } + override fun onForwardClick(eventId: EventId) { + onForwardClickLambda(eventId) + } + override fun onItemDeleted() { onItemDeletedLambda() } From 700362a26642b2ed7d1d8b5bc69d820d66584ecc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 18:15:25 +0100 Subject: [PATCH 232/898] EventId cannot be null here. --- .../libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt index f7a03020c5..1a5bf70170 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryEvents.kt @@ -16,9 +16,9 @@ import io.element.android.libraries.mediaviewer.impl.model.MediaItem sealed interface MediaGalleryEvents { data class ChangeMode(val mode: MediaGalleryMode) : MediaGalleryEvents data class LoadMore(val direction: Timeline.PaginationDirection) : MediaGalleryEvents - data class Share(val eventId: EventId?) : MediaGalleryEvents + data class Share(val eventId: EventId) : MediaGalleryEvents data class Forward(val eventId: EventId) : MediaGalleryEvents - data class SaveOnDisk(val eventId: EventId?) : MediaGalleryEvents + data class SaveOnDisk(val eventId: EventId) : MediaGalleryEvents data class OpenInfo(val mediaItem: MediaItem.Event) : MediaGalleryEvents data class ViewInTimeline(val eventId: EventId) : MediaGalleryEvents From 2fe3bfb3bca9871401f94f61dac07c018198de10 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 18:21:06 +0100 Subject: [PATCH 233/898] Simplify the presenter --- .../features/forward/impl/ForwardMessagesPresenter.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt index d7ffd9b398..63fbb0bc7c 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt @@ -21,8 +21,6 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.timeline.TimelineProvider import io.element.android.libraries.matrix.api.timeline.getActiveTimeline -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -43,7 +41,7 @@ class ForwardMessagesPresenter( private val forwardingActionState: MutableState>> = mutableStateOf(AsyncAction.Uninitialized) fun onRoomSelected(roomIds: List) { - sessionCoroutineScope.forwardEvent(eventId, roomIds.toImmutableList(), forwardingActionState) + sessionCoroutineScope.forwardEvent(eventId, roomIds) } @Composable @@ -62,12 +60,11 @@ class ForwardMessagesPresenter( private fun CoroutineScope.forwardEvent( eventId: EventId, - roomIds: ImmutableList, - isForwardMessagesState: MutableState>>, + roomIds: List, ) = launch { suspend { timelineProvider.getActiveTimeline().forwardEvent(eventId, roomIds).getOrThrow() roomIds - }.runCatchingUpdatingState(isForwardMessagesState) + }.runCatchingUpdatingState(forwardingActionState) } } From 08f75dda4c8cdd8a34a740093aa7695dbbfbe1a6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 18:25:51 +0100 Subject: [PATCH 234/898] Confirm exit without saving change in room details edit screen (#5618) * Room details edit screen: add confirmation dialog when leaving without saving pending changes. * Improve preview coverage. * Update screenshots * Introduce AsyncAction.ConfirmingCancellation and use it for leaving room edition without saving change. * Fix issue in comment * Use new `ConfirmingCancellation` object in Change Roles screen --------- Co-authored-by: ElementBot --- .../impl/ChangeRolesEvent.kt | 4 +- .../impl/ChangeRolesPresenter.kt | 42 +++---- .../impl/ChangeRolesState.kt | 11 +- .../impl/ChangeRolesStateProvider.kt | 8 +- .../impl/ChangeRolesView.kt | 103 +++++++++--------- .../impl/ChangeRolesPresenterTest.kt | 37 +++---- .../impl/ChangeRolesViewTest.kt | 10 +- .../impl/edit/RoomDetailsEditEvents.kt | 3 +- .../impl/edit/RoomDetailsEditNode.kt | 3 +- .../impl/edit/RoomDetailsEditPresenter.kt | 8 +- .../impl/edit/RoomDetailsEditStateProvider.kt | 1 + .../impl/edit/RoomDetailsEditView.kt | 36 ++++-- .../members/RoomMemberListStateProvider.kt | 3 +- .../impl/edit/RoomDetailsEditPresenterTest.kt | 79 +++++++++++++- .../impl/edit/RoomDetailsEditViewTest.kt | 56 +++++++--- .../libraries/architecture/AsyncAction.kt | 5 + ...impl.edit_RoomDetailsEditView_Day_8_en.png | 3 + ...pl.edit_RoomDetailsEditView_Night_8_en.png | 3 + ...pl.members_RoomMemberListView_Day_1_en.png | 4 +- ....members_RoomMemberListView_Night_1_en.png | 4 +- 20 files changed, 270 insertions(+), 153 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_8_en.png diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt index ab8dbc8f22..56e1c50bcc 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt @@ -15,7 +15,5 @@ sealed interface ChangeRolesEvent { data class UserSelectionToggled(val matrixUser: MatrixUser) : ChangeRolesEvent data object Save : ChangeRolesEvent data object Exit : ChangeRolesEvent - data object CancelExit : ChangeRolesEvent - data object ClearError : ChangeRolesEvent - data object CancelSave : ChangeRolesEvent + data object CloseDialog : ChangeRolesEvent } diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt index 632d93f0e0..b6d865a66a 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt @@ -69,20 +69,19 @@ class ChangeRolesPresenter( val selectedUsers = remember { mutableStateOf>(persistentListOf()) } - val exitState: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - val saveState: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } + val saveState: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val usersWithRole = produceState>(initialValue = persistentListOf()) { room.usersWithRole(role).map { members -> members.map { it.toMatrixUser() } } - .onEach { users -> - val previous = value - value = users.toImmutableList() - // Users who were selected but didn't have the role, so their role change was pending - val toAdd = selectedUsers.value.filter { user -> users.none { it.userId == user.userId } && previous.none { it.userId == user.userId } } - // Users who no longer have the role - val toRemove = previous.filter { user -> users.none { it.userId == user.userId } }.toSet() - selectedUsers.value = (users + toAdd - toRemove).toImmutableList() - } - .launchIn(this) + .onEach { users -> + val previous = value + value = users.toImmutableList() + // Users who were selected but didn't have the role, so their role change was pending + val toAdd = selectedUsers.value.filter { user -> users.none { it.userId == user.userId } && previous.none { it.userId == user.userId } } + // Users who no longer have the role + val toRemove = previous.filter { user -> users.none { it.userId == user.userId } }.toSet() + selectedUsers.value = (users + toAdd - toRemove).toImmutableList() + } + .launchIn(this) } val roomMemberState by room.membersStateFlow.collectAsState() @@ -147,22 +146,16 @@ class ChangeRolesPresenter( } } } - is ChangeRolesEvent.ClearError -> { - saveState.value = AsyncAction.Uninitialized - } is ChangeRolesEvent.Exit -> { - exitState.value = if (exitState.value.isUninitialized() && hasPendingChanges) { + saveState.value = if (saveState.value.isUninitialized() && hasPendingChanges) { // Has pending changes, confirm exit - AsyncAction.ConfirmingNoParams + AsyncAction.ConfirmingCancellation } else { // No pending changes, exit immediately - AsyncAction.Success(Unit) + AsyncAction.Success(false) } } - is ChangeRolesEvent.CancelExit -> { - exitState.value = AsyncAction.Uninitialized - } - is ChangeRolesEvent.CancelSave -> { + is ChangeRolesEvent.CloseDialog -> { saveState.value = AsyncAction.Uninitialized } } @@ -174,7 +167,6 @@ class ChangeRolesPresenter( searchResults = searchResults, selectedUsers = selectedUsers.value, hasPendingChanges = hasPendingChanges, - exitState = exitState.value, savingState = saveState.value, canChangeMemberRole = ::canChangeMemberRole, eventSink = ::handleEvent, @@ -198,7 +190,7 @@ class ChangeRolesPresenter( private fun CoroutineScope.save( usersWithRole: ImmutableList, selectedUsers: MutableState>, - saveState: MutableState>, + saveState: MutableState>, ) = launch { saveState.value = AsyncAction.Loading @@ -221,7 +213,7 @@ class ChangeRolesPresenter( saveState.value = AsyncAction.Failure(it) } .onSuccess { - saveState.value = AsyncAction.Success(Unit) + saveState.value = AsyncAction.Success(true) // Asynchronously reload the room members launch { room.updateMembers() } } diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt index 027ef76e69..e0b3e68a9e 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt @@ -23,8 +23,7 @@ data class ChangeRolesState( val searchResults: SearchBarResultState, val selectedUsers: ImmutableList, val hasPendingChanges: Boolean, - val exitState: AsyncAction, - val savingState: AsyncAction, + val savingState: AsyncAction, val canChangeMemberRole: (UserId) -> Boolean, val eventSink: (ChangeRolesEvent) -> Unit, ) @@ -36,10 +35,10 @@ data class MembersByRole( val members: ImmutableList, ) { constructor(members: List) : this( - owners = members.filter { it.role is RoomMember.Role.Owner }.sorted(), - admins = members.filter { it.role == RoomMember.Role.Admin }.sorted(), - moderators = members.filter { it.role == RoomMember.Role.Moderator }.sorted(), - members = members.filter { it.role == RoomMember.Role.User }.sorted(), + owners = members.filter { it.role is RoomMember.Role.Owner }.sorted(), + admins = members.filter { it.role == RoomMember.Role.Admin }.sorted(), + moderators = members.filter { it.role == RoomMember.Role.Moderator }.sorted(), + members = members.filter { it.role == RoomMember.Role.User }.sorted(), ) fun isEmpty() = owners.isEmpty() && admins.isEmpty() && moderators.isEmpty() && members.isEmpty() diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt index 2041c0f447..b54347f73f 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt @@ -38,10 +38,10 @@ class ChangeRolesStateProvider : PreviewParameterProvider { searchResults = SearchBarResultState.Results(MembersByRole(aRoomMemberList().take(1).toImmutableList())), selectedUsers = aMatrixUserList().take(1).toImmutableList(), ), - aChangeRolesStateWithSelectedUsers().copy(exitState = AsyncAction.ConfirmingNoParams), + aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.ConfirmingCancellation), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.ConfirmingNoParams), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading), - aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(Unit)), + aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(true)), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))), aChangeRolesStateWithOwners(), aChangeRolesStateWithOwners().copy(role = RoomMember.Role.Owner(isCreator = false)), @@ -55,8 +55,7 @@ internal fun aChangeRolesState( searchResults: SearchBarResultState = SearchBarResultState.NoResultsFound(), selectedUsers: ImmutableList = persistentListOf(), hasPendingChanges: Boolean = false, - exitState: AsyncAction = AsyncAction.Uninitialized, - savingState: AsyncAction = AsyncAction.Uninitialized, + savingState: AsyncAction = AsyncAction.Uninitialized, canRemoveMember: (UserId) -> Boolean = { true }, eventSink: (ChangeRolesEvent) -> Unit = {}, ) = ChangeRolesState( @@ -66,7 +65,6 @@ internal fun aChangeRolesState( searchResults = searchResults, selectedUsers = selectedUsers, hasPendingChanges = hasPendingChanges, - exitState = exitState, savingState = savingState, canChangeMemberRole = canRemoveMember, eventSink = eventSink, diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt index c6b70a82f4..f9ebd75ca2 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt @@ -29,7 +29,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Alignment @@ -41,7 +40,6 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.architecture.AsyncAction -import io.element.android.libraries.designsystem.components.ProgressDialog import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncIndicator import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost @@ -52,7 +50,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.components.button.BackButton 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.designsystem.theme.components.Checkbox @@ -172,61 +169,59 @@ fun ChangeRolesView( AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState) AsyncActionView( - async = state.exitState, - onSuccess = { latestNavigateUp() }, - confirmationDialog = { - ConfirmationDialog( - title = stringResource(CommonStrings.dialog_unsaved_changes_title), - content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), - onSubmitClick = { state.eventSink(ChangeRolesEvent.Exit) }, - onDismiss = { state.eventSink(ChangeRolesEvent.CancelExit) } - ) - }, - onErrorDismiss = { /* Cannot happen */ }, - ) - - when (state.savingState) { - is AsyncAction.Confirming -> { - 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 -> { - ProgressDialog() - } - is AsyncAction.Failure -> { - ErrorDialog( - content = stringResource(CommonStrings.error_unknown), - onSubmit = { state.eventSink(ChangeRolesEvent.ClearError) } - ) - } - is AsyncAction.Success -> { - LaunchedEffect(state.savingState) { + async = state.savingState, + onSuccess = { changeSaved -> + if (changeSaved) { asyncIndicatorState.enqueue(durationMs = AsyncIndicator.DURATION_SHORT) { AsyncIndicator.Custom(text = stringResource(CommonStrings.common_saved_changes)) } + } else { + latestNavigateUp() } - } - else -> Unit - } + }, + confirmationDialog = { confirming -> + when (confirming) { + is AsyncAction.ConfirmingCancellation -> { + ConfirmationDialog( + title = stringResource(CommonStrings.dialog_unsaved_changes_title), + content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), + onSubmitClick = { state.eventSink(ChangeRolesEvent.Exit) }, + onDismiss = { state.eventSink(ChangeRolesEvent.CloseDialog) } + ) + } + else -> { + 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.CloseDialog) }, + 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.CloseDialog) } + ) + } + // No confirmation needed for Moderator or User roles + else -> Unit + } + } + } + }, + errorMessage = { + stringResource(CommonStrings.error_unknown) + }, + onErrorDismiss = { + state.eventSink(ChangeRolesEvent.CloseDialog) + }, + ) } } diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt index 41b6acd60c..a5e4cfaccb 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt @@ -52,7 +52,6 @@ class ChangeRolesPresenterTest { assertThat(searchResults).isInstanceOf(SearchBarResultState.Initial::class.java) assertThat(selectedUsers).isEmpty() assertThat(hasPendingChanges).isFalse() - assertThat(exitState).isEqualTo(AsyncAction.Uninitialized) assertThat(savingState).isEqualTo(AsyncAction.Uninitialized) } cancelAndIgnoreRemainingEvents() @@ -266,7 +265,7 @@ class ChangeRolesPresenterTest { } @Test - fun `present - Exit will display success if no pending changes`() = runTest { + fun `present - Exit will display success false if no pending changes`() = runTest { val room = FakeJoinedRoom().apply { givenRoomMembersState(RoomMembersState.Ready(aRoomMemberList())) givenRoomInfo(aRoomInfo(roomPowerLevels = roomPowerLevelsWithRole(RoomMember.Role.Admin))) @@ -278,15 +277,15 @@ class ChangeRolesPresenterTest { skipItems(1) val initialState = awaitItem() assertThat(initialState.hasPendingChanges).isFalse() - assertThat(initialState.exitState).isEqualTo(AsyncAction.Uninitialized) + assertThat(initialState.savingState).isEqualTo(AsyncAction.Uninitialized) initialState.eventSink(ChangeRolesEvent.Exit) - assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Success(Unit)) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(false)) } } @Test - fun `present - CancelExit will remove exit confirmation`() = runTest { + fun `present - CloseDialog will remove exit confirmation`() = runTest { val room = FakeJoinedRoom().apply { givenRoomMembersState(RoomMembersState.Ready(aRoomMemberList())) givenRoomInfo(aRoomInfo(roomPowerLevels = roomPowerLevelsWithRole(RoomMember.Role.Admin))) @@ -298,16 +297,16 @@ class ChangeRolesPresenterTest { skipItems(1) val initialState = awaitItem() assertThat(initialState.hasPendingChanges).isFalse() - assertThat(initialState.exitState).isEqualTo(AsyncAction.Uninitialized) + assertThat(initialState.savingState).isEqualTo(AsyncAction.Uninitialized) initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2))) awaitItem().eventSink(ChangeRolesEvent.Exit) val confirmingState = awaitItem() - assertThat(confirmingState.exitState).isEqualTo(AsyncAction.ConfirmingNoParams) + assertThat(confirmingState.savingState).isEqualTo(AsyncAction.ConfirmingCancellation) - confirmingState.eventSink(ChangeRolesEvent.CancelExit) - assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Uninitialized) + confirmingState.eventSink(ChangeRolesEvent.CloseDialog) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Uninitialized) } } @@ -324,7 +323,7 @@ class ChangeRolesPresenterTest { skipItems(1) val initialState = awaitItem() assertThat(initialState.hasPendingChanges).isFalse() - assertThat(initialState.exitState).isEqualTo(AsyncAction.Uninitialized) + assertThat(initialState.savingState).isEqualTo(AsyncAction.Uninitialized) initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2))) val updatedState = awaitItem() @@ -332,10 +331,10 @@ class ChangeRolesPresenterTest { skipItems(1) updatedState.eventSink(ChangeRolesEvent.Exit) - assertThat(awaitItem().exitState).isEqualTo(AsyncAction.ConfirmingNoParams) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.ConfirmingCancellation) updatedState.eventSink(ChangeRolesEvent.Exit) - assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Success(Unit)) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(false)) } } @@ -367,12 +366,12 @@ class ChangeRolesPresenterTest { assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) skipItems(1) - assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(Unit)) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) } } @Test - fun `present - CancelSave will remove the confirmation dialog`() = runTest { + fun `present - CloseDialog will remove the confirmation dialog`() = runTest { val room = FakeJoinedRoom().apply { givenRoomMembersState(RoomMembersState.Ready(aRoomMemberList())) givenRoomInfo(aRoomInfo(roomPowerLevels = roomPowerLevelsWithRole(RoomMember.Role.Admin))) @@ -391,7 +390,7 @@ class ChangeRolesPresenterTest { val confirmingState = awaitItem() assertThat(confirmingState.savingState).isEqualTo(AsyncAction.ConfirmingNoParams) - confirmingState.eventSink(ChangeRolesEvent.CancelSave) + confirmingState.eventSink(ChangeRolesEvent.CloseDialog) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Uninitialized) } } @@ -426,7 +425,7 @@ class ChangeRolesPresenterTest { assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) skipItems(1) - assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(Unit)) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) assertThat(analyticsService.capturedEvents.last()).isEqualTo(RoomModeration(RoomModeration.Action.ChangeMemberRole, RoomModeration.Role.Moderator)) } } @@ -504,13 +503,13 @@ class ChangeRolesPresenterTest { assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) skipItems(1) - assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(Unit)) + assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) assertThat(analyticsService.capturedEvents.last()).isEqualTo(RoomModeration(RoomModeration.Action.ChangeMemberRole, RoomModeration.Role.User)) } } @Test - fun `present - Save can handle failures and ClearError clears them`() = runTest { + fun `present - Save can handle failures and CloseDialog clears them`() = runTest { val room = FakeJoinedRoom( updateUserRoleResult = { Result.failure(IllegalStateException("Failed")) } ).apply { @@ -534,7 +533,7 @@ class ChangeRolesPresenterTest { val failedState = awaitItem() assertThat(failedState.savingState).isInstanceOf(AsyncAction.Failure::class.java) - failedState.eventSink(ChangeRolesEvent.ClearError) + failedState.eventSink(ChangeRolesEvent.CloseDialog) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Uninitialized) } } diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt index fb1dc38aae..19d9cadfa8 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt @@ -135,7 +135,7 @@ class ChangeRolesViewTest { rule.setChangeRolesContent( state = aChangeRolesState( isSearchActive = true, - exitState = AsyncAction.ConfirmingNoParams, + savingState = AsyncAction.ConfirmingCancellation, eventSink = eventsRecorder, ), ) @@ -151,14 +151,14 @@ class ChangeRolesViewTest { rule.setChangeRolesContent( state = aChangeRolesState( isSearchActive = true, - exitState = AsyncAction.ConfirmingNoParams, + savingState = AsyncAction.ConfirmingCancellation, eventSink = eventsRecorder, ), ) rule.clickOn(CommonStrings.action_cancel) - eventsRecorder.assertSingle(ChangeRolesEvent.CancelExit) + eventsRecorder.assertSingle(ChangeRolesEvent.CloseDialog) } @Test @@ -209,7 +209,7 @@ class ChangeRolesViewTest { rule.clickOn(CommonStrings.action_cancel) - eventsRecorder.assertSingle(ChangeRolesEvent.ClearError) + eventsRecorder.assertSingle(ChangeRolesEvent.CloseDialog) } @Test @@ -225,7 +225,7 @@ class ChangeRolesViewTest { rule.clickOn(CommonStrings.action_ok) - eventsRecorder.assertSingle(ChangeRolesEvent.ClearError) + eventsRecorder.assertSingle(ChangeRolesEvent.CloseDialog) } @Test diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt index 1becbe9e5c..a892de1498 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditEvents.kt @@ -13,6 +13,7 @@ sealed interface RoomDetailsEditEvents { data class HandleAvatarAction(val action: AvatarAction) : RoomDetailsEditEvents data class UpdateRoomName(val name: String) : RoomDetailsEditEvents data class UpdateRoomTopic(val topic: String) : RoomDetailsEditEvents + data object OnBackPress : RoomDetailsEditEvents data object Save : RoomDetailsEditEvents - data object CancelSaveChanges : RoomDetailsEditEvents + data object CloseDialog : RoomDetailsEditEvents } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt index 8143f1848f..37fcfce53b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditNode.kt @@ -41,8 +41,7 @@ class RoomDetailsEditNode( val state = presenter.present() RoomDetailsEditView( state = state, - onBackClick = ::navigateUp, - onRoomEditSuccess = ::navigateUp, + onDone = ::navigateUp, modifier = modifier, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt index 6e318d5f45..cc207d8b24 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt @@ -169,7 +169,13 @@ class RoomDetailsEditPresenter( is RoomDetailsEditEvents.UpdateRoomName -> roomRawNameEdited = event.name is RoomDetailsEditEvents.UpdateRoomTopic -> roomTopicEdited = event.topic - RoomDetailsEditEvents.CancelSaveChanges -> saveAction.value = AsyncAction.Uninitialized + RoomDetailsEditEvents.CloseDialog -> saveAction.value = AsyncAction.Uninitialized + RoomDetailsEditEvents.OnBackPress -> if (saveButtonEnabled.not() || saveAction.value == AsyncAction.ConfirmingCancellation) { + // No changes to save or already confirming exit without saving + saveAction.value = AsyncAction.Success(Unit) + } else { + saveAction.value = AsyncAction.ConfirmingCancellation + } } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt index f1dcc2463d..3f58e40b98 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt @@ -26,6 +26,7 @@ open class RoomDetailsEditStateProvider : PreviewParameterProvider Unit, - onRoomEditSuccess: () -> Unit, + onDone: () -> Unit, modifier: Modifier = Modifier, ) { val focusManager = LocalFocusManager.current @@ -62,12 +64,21 @@ fun RoomDetailsEditView( isAvatarActionsSheetVisible.value = true } + BackHandler { + state.eventSink(RoomDetailsEditEvents.OnBackPress) + } Scaffold( modifier = modifier.clearFocusOnTap(focusManager), topBar = { TopAppBar( titleStr = stringResource(id = R.string.screen_room_details_edit_room_title), - navigationIcon = { BackButton(onClick = onBackClick) }, + navigationIcon = { + BackButton( + onClick = { + state.eventSink(RoomDetailsEditEvents.OnBackPress) + } + ) + }, actions = { TextButton( text = stringResource(CommonStrings.action_save), @@ -126,14 +137,12 @@ fun RoomDetailsEditView( ) } } - AvatarActionBottomSheet( actions = state.avatarActions, isVisible = isAvatarActionsSheetVisible.value, onDismiss = { isAvatarActionsSheetVisible.value = false }, onSelectAction = { state.eventSink(RoomDetailsEditEvents.HandleAvatarAction(it)) } ) - AsyncActionView( async = state.saveAction, progressDialog = { @@ -141,9 +150,19 @@ fun RoomDetailsEditView( progressText = stringResource(R.string.screen_room_details_updating_room), ) }, - onSuccess = { onRoomEditSuccess() }, + confirmationDialog = { + if (state.saveAction == AsyncAction.ConfirmingCancellation) { + ConfirmationDialog( + title = stringResource(CommonStrings.dialog_unsaved_changes_title), + content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), + onSubmitClick = { state.eventSink(RoomDetailsEditEvents.OnBackPress) }, + onDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) } + ) + } + }, + onSuccess = { onDone() }, errorMessage = { stringResource(R.string.screen_room_details_edition_error) }, - onErrorDismiss = { state.eventSink(RoomDetailsEditEvents.CancelSaveChanges) } + onErrorDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) } ) PermissionsView( @@ -156,7 +175,6 @@ fun RoomDetailsEditView( internal fun RoomDetailsEditViewPreview(@PreviewParameter(RoomDetailsEditStateProvider::class) state: RoomDetailsEditState) = ElementPreview { RoomDetailsEditView( state = state, - onBackClick = {}, - onRoomEditSuccess = {}, + onDone = {}, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt index a1cc9c3b92..74e1b8548a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListStateProvider.kt @@ -41,7 +41,8 @@ internal class RoomMemberListStateProvider : PreviewParameterProvider Result.success(true) } + ) + val deleteCallback = lambdaRecorder {} + val presenter = createRoomDetailsEditPresenter( + room = room, + temporaryUriDeleter = FakeTemporaryUriDeleter(deleteCallback), + ) + presenter.test { + val initialState = awaitFirstItem() + assertThat(initialState.saveButtonEnabled).isFalse() + // Once a change is made, the save button is enabled + initialState.eventSink(RoomDetailsEditEvents.UpdateRoomName("Name edited")) + awaitItem().apply { + assertThat(saveButtonEnabled).isTrue() + eventSink(RoomDetailsEditEvents.OnBackPress) + } + awaitItem().apply { + assertThat(saveAction).isEqualTo(AsyncAction.ConfirmingCancellation) + eventSink(RoomDetailsEditEvents.CloseDialog) + } + awaitItem().apply { + assertThat(saveAction).isEqualTo(AsyncAction.Uninitialized) + } + } + } + + @Test + fun `present - leave no changes, no confirmation`() = runTest { + val room = aJoinedRoom( + displayName = "Name", + canSendStateResult = { _, _ -> Result.success(true) } + ) + val presenter = createRoomDetailsEditPresenter( + room = room, + temporaryUriDeleter = FakeTemporaryUriDeleter {}, + ) + presenter.test { + val initialState = awaitFirstItem() + assertThat(initialState.saveButtonEnabled).isFalse() + initialState.eventSink(RoomDetailsEditEvents.OnBackPress) + assertThat(awaitItem().saveAction).isEqualTo(AsyncAction.Success(Unit)) + } + } + + @Test + fun `present - leave without saving - confirm`() = runTest { + val room = aJoinedRoom( + displayName = "Name", + canSendStateResult = { _, _ -> Result.success(true) } + ) + val presenter = createRoomDetailsEditPresenter( + room = room, + temporaryUriDeleter = FakeTemporaryUriDeleter({}), + ) + presenter.test { + val initialState = awaitFirstItem() + assertThat(initialState.saveButtonEnabled).isFalse() + // Once a change is made, the save button is enabled + initialState.eventSink(RoomDetailsEditEvents.UpdateRoomName("Name edited")) + awaitItem().apply { + assertThat(saveButtonEnabled).isTrue() + eventSink(RoomDetailsEditEvents.OnBackPress) + } + awaitItem().apply { + assertThat(saveAction).isEqualTo(AsyncAction.ConfirmingCancellation) + eventSink(RoomDetailsEditEvents.OnBackPress) + } + awaitItem().apply { + assertThat(saveAction).isEqualTo(AsyncAction.Success(Unit)) + } + } + } + private suspend fun saveAndAssertFailure( room: JoinedRoom, event: RoomDetailsEditEvents, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt index 2ac3d4397c..bfd3b5e7cc 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditViewTest.kt @@ -38,17 +38,41 @@ class RoomDetailsEditViewTest { @get:Rule val rule = createAndroidComposeRule() @Test - fun `clicking on back invoke back callback`() { - val eventsRecorder = EventsRecorder(expectEvents = false) - ensureCalledOnce { callback -> - rule.setRoomDetailsEditView( - aRoomDetailsEditState( - eventSink = eventsRecorder - ), - onBackClick = callback, - ) - rule.pressBack() - } + fun `clicking on back emits the expected Event`() { + val eventsRecorder = EventsRecorder() + rule.setRoomDetailsEditView( + aRoomDetailsEditState( + eventSink = eventsRecorder + ), + ) + rule.pressBack() + eventsRecorder.assertSingle(RoomDetailsEditEvents.OnBackPress) + } + + @Test + fun `clicking on OK when confirming exit emits the expected Event`() { + val eventsRecorder = EventsRecorder() + rule.setRoomDetailsEditView( + aRoomDetailsEditState( + saveAction = AsyncAction.ConfirmingCancellation, + eventSink = eventsRecorder, + ), + ) + rule.clickOn(CommonStrings.action_ok) + eventsRecorder.assertSingle(RoomDetailsEditEvents.OnBackPress) + } + + @Test + fun `clicking on cancel when confirming exit emits the expected Event`() { + val eventsRecorder = EventsRecorder() + rule.setRoomDetailsEditView( + aRoomDetailsEditState( + saveAction = AsyncAction.ConfirmingCancellation, + eventSink = eventsRecorder, + ), + ) + rule.clickOn(CommonStrings.action_cancel) + eventsRecorder.assertSingle(RoomDetailsEditEvents.CloseDialog) } @Test @@ -60,7 +84,7 @@ class RoomDetailsEditViewTest { eventSink = eventsRecorder, saveAction = AsyncAction.Success(Unit) ), - onRoomEdited = callback, + onDone = callback, ) } } @@ -209,20 +233,18 @@ class RoomDetailsEditViewTest { ), ) rule.clickOn(CommonStrings.action_ok) - eventsRecorder.assertSingle(RoomDetailsEditEvents.CancelSaveChanges) + eventsRecorder.assertSingle(RoomDetailsEditEvents.CloseDialog) } } private fun AndroidComposeTestRule.setRoomDetailsEditView( state: RoomDetailsEditState, - onBackClick: () -> Unit = EnsureNeverCalled(), - onRoomEdited: () -> Unit = EnsureNeverCalled(), + onDone: () -> Unit = EnsureNeverCalled(), ) { setContent { RoomDetailsEditView( state = state, - onBackClick = onBackClick, - onRoomEditSuccess = onRoomEdited, + onDone = onDone, ) } } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt index c02c64135d..88fa4079f5 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/AsyncAction.kt @@ -32,6 +32,11 @@ sealed interface AsyncAction { data object ConfirmingNoParams : Confirming + /** + * User cancels the action, use this object to ask for confirmation. + */ + data object ConfirmingCancellation : Confirming + /** * Represents an operation that is currently ongoing. */ diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_en.png new file mode 100644 index 0000000000..3064144e10 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cd78ece31258d6ee07eabc282f935e6228893d52d24e00e0bbd129138ed8c31 +size 30836 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_8_en.png new file mode 100644 index 0000000000..7888efbfa8 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.edit_RoomDetailsEditView_Night_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bf7bc223f5d481ec8bd1f2a6711751a3bb82ac8f0d856cb5f6c8f4ee7ef50e1 +size 28891 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png index 459b225859..842147e3f0 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37940d14ca14d65256ea220cfd7f0685ba2d100425f65af4d4cffe35be4b69fb -size 45485 +oid sha256:0cd12c68415f61b198696a9f9d8b19da5e6ced287e015071a8a850100238862b +size 49992 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png index b063a6d741..ad5b94c86d 100644 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.members_RoomMemberListView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c45c582fb6698e70b376f832b9564946a2271a6b3532886239dfd75d8bb9755 -size 45409 +oid sha256:be897269967951ea0ddb0cc209005d07d4904531a8ab9d865b6e622c9ba98e18 +size 49747 From 14ff37ec8388e3efc239577b2e62ce1719e5b201 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Tue, 28 Oct 2025 17:47:27 +0000 Subject: [PATCH 235/898] Update screenshots --- ...=> features.forward.impl_ForwardMessagesView_Day_0_en.png} | 0 ...=> features.forward.impl_ForwardMessagesView_Day_1_en.png} | 0 ...=> features.forward.impl_ForwardMessagesView_Day_2_en.png} | 0 ...=> features.forward.impl_ForwardMessagesView_Day_3_en.png} | 0 ... features.forward.impl_ForwardMessagesView_Night_0_en.png} | 0 ... features.forward.impl_ForwardMessagesView_Night_1_en.png} | 0 ... features.forward.impl_ForwardMessagesView_Night_2_en.png} | 0 ... features.forward.impl_ForwardMessagesView_Night_3_en.png} | 0 ...iaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png | 4 ++-- ...viewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png | 4 ++-- ...ies.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png | 4 ++-- ...s.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png | 4 ++-- ...ibraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png | 4 ++-- 13 files changed, 10 insertions(+), 10 deletions(-) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Day_0_en.png => features.forward.impl_ForwardMessagesView_Day_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Day_1_en.png => features.forward.impl_ForwardMessagesView_Day_1_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Day_2_en.png => features.forward.impl_ForwardMessagesView_Day_2_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Day_3_en.png => features.forward.impl_ForwardMessagesView_Day_3_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Night_0_en.png => features.forward.impl_ForwardMessagesView_Night_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Night_1_en.png => features.forward.impl_ForwardMessagesView_Night_1_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Night_2_en.png => features.forward.impl_ForwardMessagesView_Night_2_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.messages.impl.forward_ForwardMessagesView_Night_3_en.png => features.forward.impl_ForwardMessagesView_Night_3_en.png} (100%) diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_0_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_1_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_1_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_1_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_2_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_2_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_2_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Day_3_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_0_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_1_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_1_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_1_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_2_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_2_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_2_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.messages.impl.forward_ForwardMessagesView_Night_3_en.png rename to tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png index 2ecb6f0e65..9ebcafa2e0 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:964bac6ba83961f303f2309438a81fb4a09a87a0bc269df1f644b97b52044192 -size 38109 +oid sha256:81bdd5170870d3ea5874960b12d9548c36b105a95dcb018f648182b9206f17d6 +size 40196 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png index ebed9fbaea..03f88988e5 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e423c47cee8f2c69b31d418a7a8db850542ee2b0040c99775c85a4260b286235 -size 36787 +oid sha256:51594e2535dbe22f9085ff3443fa89ab7fc39c22beab5f592b1a4953bab3a1c9 +size 38931 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png index a2ec7507ed..2f643f7ffd 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:090412a4d7df8699d54070a04f5514580d46adc497cdbc1b354631506eeeda3b -size 40872 +oid sha256:0309be2e3e391a852cb00d5490c92b45255b64d088fd1ae8a5b8472a47ce9f88 +size 40129 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png index bf10c81b0b..9248804599 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7bba63c8d4018b9bba182e78397e94e85040f8a50596d1c528895278e219ea1 -size 39333 +oid sha256:add239fbe0f1047435c7ad5df8b62ba765098eb0c5b9703192a7276b6c4e0ccc +size 38692 diff --git a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png index b094052a00..df4212be1e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.mediaviewer.impl.viewer_MediaViewerView_11_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f47067ff716b6ada901650d138a7f1f88e1f1cb29d9a919d4d5af5d834b571ab -size 38045 +oid sha256:d004bb0bb2e6dec6e5bc28038cfb2bddbd68f0c430b9bf3bc1c08de1d90a3301 +size 38738 From f5b17d4ddb78788edc592dc913a8aecbd7def011 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 18:40:09 +0100 Subject: [PATCH 236/898] Remove unused dependency --- libraries/mediaviewer/impl/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/mediaviewer/impl/build.gradle.kts b/libraries/mediaviewer/impl/build.gradle.kts index eb49387372..ea435433f4 100644 --- a/libraries/mediaviewer/impl/build.gradle.kts +++ b/libraries/mediaviewer/impl/build.gradle.kts @@ -33,7 +33,6 @@ dependencies { implementation(libs.telephoto.flick) implementation(projects.features.enterprise.api) - implementation(projects.features.forward.api) implementation(projects.features.viewfolder.api) implementation(projects.libraries.androidutils) implementation(projects.libraries.architecture) From 6ae0d67e69992a4a6344194f4c3774a714fb2eb5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 28 Oct 2025 20:28:37 +0100 Subject: [PATCH 237/898] Add missing tests. --- .../impl/gallery/MediaGalleryPresenterTest.kt | 47 ++++++++++++++++++- .../impl/viewer/MediaViewerPresenterTest.kt | 27 ++++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt index f126dab2b5..b09aae5d26 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenterTest.kt @@ -345,7 +345,7 @@ class MediaGalleryPresenterTest { } @Test - fun `present - view in timeline invokes the navigator`() = runTest { + fun `present - view in timeline closes the bottom sheet and invokes the navigator`() = runTest { val onViewInTimelineClickLambda = lambdaRecorder { } val navigator = FakeMediaGalleryNavigator( onViewInTimelineClickLambda = onViewInTimelineClickLambda, @@ -353,16 +353,59 @@ class MediaGalleryPresenterTest { val presenter = createMediaGalleryPresenter( room = FakeJoinedRoom( createTimelineResult = { Result.success(FakeTimeline()) }, + baseRoom = FakeBaseRoom( + canRedactOwnResult = { Result.success(true) }, + ), ), navigator = navigator, ) presenter.test { val initialState = awaitFirstItem() - initialState.eventSink(MediaGalleryEvents.ViewInTimeline(AN_EVENT_ID)) + val item = aMediaItemImage( + eventId = AN_EVENT_ID, + senderId = A_USER_ID, + ) + initialState.eventSink(MediaGalleryEvents.OpenInfo(item)) + val withBottomSheetState = awaitItem() + assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java) + withBottomSheetState.eventSink(MediaGalleryEvents.ViewInTimeline(AN_EVENT_ID)) + val finalState = awaitItem() + assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden) onViewInTimelineClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID)) } } + @Test + fun `present - forward closes the bottom sheet and invokes the navigator`() = runTest { + val onForwardClickLambda = lambdaRecorder { } + val navigator = FakeMediaGalleryNavigator( + onForwardClickLambda = onForwardClickLambda, + ) + val presenter = createMediaGalleryPresenter( + room = FakeJoinedRoom( + createTimelineResult = { Result.success(FakeTimeline()) }, + baseRoom = FakeBaseRoom( + canRedactOwnResult = { Result.success(true) }, + ), + ), + navigator = navigator, + ) + presenter.test { + val initialState = awaitFirstItem() + val item = aMediaItemImage( + eventId = AN_EVENT_ID, + senderId = A_USER_ID, + ) + initialState.eventSink(MediaGalleryEvents.OpenInfo(item)) + val withBottomSheetState = awaitItem() + assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java) + withBottomSheetState.eventSink(MediaGalleryEvents.Forward(AN_EVENT_ID)) + val finalState = awaitItem() + assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden) + onForwardClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID)) + } + } + @Test fun `present - load more`() = runTest { val loadMoreLambda = lambdaRecorder { } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt index b9964d8d3d..359eda7a5e 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt @@ -759,7 +759,7 @@ class MediaViewerPresenterTest { } @Test - fun `present - view in timeline hide the bottom sheet and invokes the navigator`() = runTest { + fun `present - view in timeline hides the bottom sheet and invokes the navigator`() = runTest { val onViewInTimelineClickLambda = lambdaRecorder { } val navigator = FakeMediaViewerNavigator( onViewInTimelineClickLambda = onViewInTimelineClickLambda, @@ -783,6 +783,31 @@ class MediaViewerPresenterTest { } } + @Test + fun `present - forward hides the bottom sheet and invokes the navigator`() = runTest { + val onForwardClickLambda = lambdaRecorder { } + val navigator = FakeMediaViewerNavigator( + onForwardClickLambda = onForwardClickLambda, + ) + val presenter = createMediaViewerPresenter( + localMediaFactory = localMediaFactory, + mediaViewerNavigator = navigator, + room = FakeJoinedRoom( + baseRoom = FakeBaseRoom(canRedactOwnResult = { Result.success(true) }), + ), + ) + presenter.test { + val initialState = awaitItem() + initialState.eventSink(MediaViewerEvents.OpenInfo(aMediaViewerPageData())) + val withBottomSheetState = awaitItem() + assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java) + initialState.eventSink(MediaViewerEvents.Forward(AN_EVENT_ID)) + val finalState = awaitItem() + assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden) + onForwardClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID)) + } + } + private suspend fun ReceiveTurbine.awaitFirstItem(): T { return awaitItem() } From 7ed888af83a70e62538b479d11638f4b9bb8f306 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Tue, 28 Oct 2025 21:06:57 +0100 Subject: [PATCH 238/898] Fix issues with WorkManager on Android 12 and below (#5606) * Add `getForegroundInfo` implementation to try to fix issues with WorkManager on Android 12 and below This may be a MIUI-only issue as I couldn't reproduce it with several emulators on Android 11, 12 and 13. * Use `setExpedited` only on Android 13 or higher, it's not needed on older versions * Use an actual string resource, fix tests * Fix review comments * Fix broken test with Element Pro: Instead of using Robolectric with API < 33 (since Pro uses minSdk 33) use a `BuildVersionSdkIntProvider` * Remove `getForegroundInfo` and the associated permission, as we expect it to be dead code * Fix lint issues * Cleanup NotificationIdProvider --------- Co-authored-by: Benoit Marty --- .../notifications/NotificationIdProvider.kt | 5 ---- .../push/impl/src/main/AndroidManifest.xml | 1 - .../NotificationResolverQueue.kt | 3 ++ .../workmanager/FetchNotificationsWorker.kt | 5 +++- .../SyncNotificationWorkManagerRequest.kt | 12 +++++++- .../push/impl/push/DefaultPushHandlerTest.kt | 2 ++ .../FetchNotificationWorkerTest.kt | 2 ++ .../SyncNotificationWorkManagerRequestTest.kt | 30 +++++++++++++++++-- 8 files changed, 49 insertions(+), 11 deletions(-) diff --git a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationIdProvider.kt b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationIdProvider.kt index 83ab37682b..390932bb79 100644 --- a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationIdProvider.kt +++ b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationIdProvider.kt @@ -31,10 +31,6 @@ object NotificationIdProvider { return getOffset(sessionId) + FALLBACK_NOTIFICATION_ID } - fun getCallNotificationId(sessionId: SessionId): Int { - return getOffset(sessionId) + ROOM_CALL_NOTIFICATION_ID - } - fun getForegroundServiceNotificationId(type: ForegroundServiceType): Int { return type.id * 10 + FOREGROUND_SERVICE_NOTIFICATION_ID } @@ -49,7 +45,6 @@ object NotificationIdProvider { private const val ROOM_MESSAGES_NOTIFICATION_ID = 1 private const val ROOM_EVENT_NOTIFICATION_ID = 2 private const val ROOM_INVITATION_NOTIFICATION_ID = 3 - private const val ROOM_CALL_NOTIFICATION_ID = 3 private const val FOREGROUND_SERVICE_NOTIFICATION_ID = 4 } diff --git a/libraries/push/impl/src/main/AndroidManifest.xml b/libraries/push/impl/src/main/AndroidManifest.xml index c08c16ed5f..ecdb3faaa2 100644 --- a/libraries/push/impl/src/main/AndroidManifest.xml +++ b/libraries/push/impl/src/main/AndroidManifest.xml @@ -7,7 +7,6 @@ - diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt index bbdd241c24..156c925202 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationResolverQueue.kt @@ -18,6 +18,7 @@ import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEv import io.element.android.libraries.push.impl.workmanager.SyncNotificationWorkManagerRequest import io.element.android.libraries.push.impl.workmanager.WorkerDataConverter import io.element.android.libraries.workmanager.api.WorkManagerScheduler +import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job @@ -49,6 +50,7 @@ class DefaultNotificationResolverQueue( private val workManagerScheduler: WorkManagerScheduler, private val featureFlagService: FeatureFlagService, private val workerDataConverter: WorkerDataConverter, + private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider, ) : NotificationResolverQueue { companion object { private const val BATCH_WINDOW_MS = 250L @@ -100,6 +102,7 @@ class DefaultNotificationResolverQueue( sessionId = sessionId, notificationEventRequests = requests, workerDataConverter = workerDataConverter, + buildVersionSdkIntProvider = buildVersionSdkIntProvider, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt index 6904b2f833..b661560cf5 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationsWorker.kt @@ -29,6 +29,7 @@ import io.element.android.libraries.push.impl.notifications.NotificationResolver import io.element.android.libraries.workmanager.api.WorkManagerScheduler import io.element.android.libraries.workmanager.api.di.MetroWorkerFactory import io.element.android.libraries.workmanager.api.di.WorkerKey +import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext @@ -39,7 +40,7 @@ import kotlin.time.Duration.Companion.seconds @AssistedInject class FetchNotificationsWorker( @Assisted workerParams: WorkerParameters, - @ApplicationContext context: Context, + @ApplicationContext private val context: Context, private val networkMonitor: NetworkMonitor, private val eventResolver: NotifiableEventResolver, private val queue: NotificationResolverQueue, @@ -47,6 +48,7 @@ class FetchNotificationsWorker( private val syncOnNotifiableEvent: SyncOnNotifiableEvent, private val coroutineDispatchers: CoroutineDispatchers, private val workerDataConverter: WorkerDataConverter, + private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider, ) : CoroutineWorker(context, workerParams) { override suspend fun doWork(): Result = withContext(coroutineDispatchers.io) { Timber.d("FetchNotificationsWorker started") @@ -88,6 +90,7 @@ class FetchNotificationsWorker( sessionId = failedSessionId, notificationEventRequests = requestsToRetry, workerDataConverter = workerDataConverter, + buildVersionSdkIntProvider = buildVersionSdkIntProvider, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt index b0aabe1cc7..f11aabe469 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequest.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.push.impl.workmanager +import android.os.Build import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy import androidx.work.WorkRequest @@ -15,6 +16,7 @@ import io.element.android.libraries.push.api.push.NotificationEventRequest import io.element.android.libraries.workmanager.api.WorkManagerRequest import io.element.android.libraries.workmanager.api.WorkManagerRequestType import io.element.android.libraries.workmanager.api.workManagerTag +import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import timber.log.Timber @@ -24,6 +26,7 @@ class SyncNotificationWorkManagerRequest( private val sessionId: SessionId, private val notificationEventRequests: List, private val workerDataConverter: WorkerDataConverter, + private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider, ) : WorkManagerRequest { override fun build(): Result { if (notificationEventRequests.isEmpty()) { @@ -36,7 +39,14 @@ class SyncNotificationWorkManagerRequest( return Result.success( OneTimeWorkRequestBuilder() .setInputData(data) - .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) + .apply { + // Expedited workers aren't needed on Android 12 or lower: + // They force displaying a foreground sync notification for no good reason, since they sync almost immediately anyway + // See https://developer.android.com/develop/background-work/background-tasks/persistent/getting-started/define-work#backwards-compat + if (buildVersionSdkIntProvider.isAtLeast(Build.VERSION_CODES.TIRAMISU)) { + setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) + } + } .setTraceTag(workManagerTag(sessionId, WorkManagerRequestType.NOTIFICATION_SYNC)) // TODO investigate using this instead of the resolver queue // .setInputMerger() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt index 870b9e1e1a..4576051be6 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandlerTest.kt @@ -55,6 +55,7 @@ import io.element.android.libraries.pushstore.test.userpushstore.FakeUserPushSto import io.element.android.libraries.pushstore.test.userpushstore.clientsecret.FakePushClientSecret import io.element.android.libraries.workmanager.api.WorkManagerRequest import io.element.android.libraries.workmanager.test.FakeWorkManagerScheduler +import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.services.toolbox.test.systemclock.FakeSystemClock import io.element.android.tests.testutils.lambda.any @@ -717,6 +718,7 @@ class DefaultPushHandlerTest { workManagerScheduler = workManagerScheduler, featureFlagService = featureFlagService, workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), + buildVersionSdkIntProvider = FakeBuildVersionSdkIntProvider(33), ), appCoroutineScope = backgroundScope, fallbackNotificationFactory = FallbackNotificationFactory( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt index 74241fecd8..c20cfbe61e 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/FetchNotificationWorkerTest.kt @@ -28,6 +28,7 @@ import io.element.android.libraries.push.test.notifications.FakeNotificationReso import io.element.android.libraries.workmanager.api.WorkManagerRequest import io.element.android.libraries.workmanager.api.di.MetroWorkerFactory import io.element.android.libraries.workmanager.test.FakeWorkManagerScheduler +import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -176,6 +177,7 @@ class FetchNotificationWorkerTest { syncOnNotifiableEvent = syncOnNotifiableEvent, coroutineDispatchers = testCoroutineDispatchers(), workerDataConverter = WorkerDataConverter(DefaultJsonProvider()), + buildVersionSdkIntProvider = FakeBuildVersionSdkIntProvider(33), ) private fun TestScope.createWorkerParams( diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt index ebbe4eb865..34738854ac 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/workmanager/SyncNotificationWorkManagerRequestTest.kt @@ -17,15 +17,17 @@ import io.element.android.libraries.push.api.push.NotificationEventRequest import io.element.android.libraries.push.impl.notifications.fixtures.aNotificationEventRequest import io.element.android.libraries.workmanager.api.WorkManagerRequestType import io.element.android.libraries.workmanager.api.workManagerTag +import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider import kotlinx.coroutines.test.runTest import org.junit.Test class SyncNotificationWorkManagerRequestTest { @Test - fun `build - success`() = runTest { + fun `build - success API 33`() = runTest { val request = createSyncNotificationWorkManagerRequest( sessionId = A_SESSION_ID, - notificationEventRequests = listOf(aNotificationEventRequest()) + notificationEventRequests = listOf(aNotificationEventRequest()), + sdkVersion = 33, ) val result = request.build() @@ -33,11 +35,31 @@ class SyncNotificationWorkManagerRequestTest { result.getOrNull()!!.run { assertThat(this).isInstanceOf(OneTimeWorkRequest::class.java) assertThat(workSpec.input.hasKeyWithValueOfType("requests")).isTrue() + // True in API 33+ assertThat(workSpec.expedited).isTrue() assertThat(workSpec.traceTag).isEqualTo(workManagerTag(A_SESSION_ID, WorkManagerRequestType.NOTIFICATION_SYNC)) } } + @Test + fun `build - success API 32 and lower`() = runTest { + val request = createSyncNotificationWorkManagerRequest( + sessionId = A_SESSION_ID, + notificationEventRequests = listOf(aNotificationEventRequest()), + sdkVersion = 32, + ) + + val result = request.build() + assertThat(result.isSuccess).isTrue() + result.getOrNull()!!.run { + assertThat(this).isInstanceOf(OneTimeWorkRequest::class.java) + assertThat(workSpec.input.hasKeyWithValueOfType("requests")).isTrue() + // False before API 33 + assertThat(workSpec.expedited).isFalse() + assertThat(workSpec.traceTag).isEqualTo(workManagerTag(A_SESSION_ID, WorkManagerRequestType.NOTIFICATION_SYNC)) + } + } + @Test fun `build - empty list of requests fails`() = runTest { val request = createSyncNotificationWorkManagerRequest( @@ -64,9 +86,11 @@ class SyncNotificationWorkManagerRequestTest { private fun createSyncNotificationWorkManagerRequest( sessionId: SessionId, notificationEventRequests: List, - workerDataConverter: WorkerDataConverter = WorkerDataConverter(DefaultJsonProvider()) + workerDataConverter: WorkerDataConverter = WorkerDataConverter(DefaultJsonProvider()), + sdkVersion: Int = 33, ) = SyncNotificationWorkManagerRequest( sessionId = sessionId, notificationEventRequests = notificationEventRequests, workerDataConverter = workerDataConverter, + buildVersionSdkIntProvider = FakeBuildVersionSdkIntProvider(sdkVersion), ) From 93b1c9e597b0d66cd1c98285bbc186d2209e9033 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 29 Oct 2025 09:00:07 +0100 Subject: [PATCH 239/898] Improve code on ShareNode --- .../kotlin/io/element/android/appnav/LoggedInFlowNode.kt | 5 ++--- .../io/element/android/features/share/impl/ShareNode.kt | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 22328d3980..da09add2dc 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -469,9 +469,8 @@ class LoggedInFlowNode( .callback(object : ShareEntryPoint.Callback { override fun onDone(roomIds: List) { navigateUp() - if (roomIds.size == 1) { - val targetRoomId = roomIds.first() - backstack.push(NavTarget.Room(targetRoomId.toRoomIdOrAlias())) + roomIds.singleOrNull()?.let { roomId -> + backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias())) } } }) diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt index e268419920..12d2f5bff5 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt @@ -61,7 +61,7 @@ class ShareNode( } override fun onCancel() { - navigateUp() + onShareDone(emptyList()) } } @@ -82,12 +82,12 @@ class ShareNode( val state = presenter.present() ShareView( state = state, - onShareSuccess = ::onShareSuccess, + onShareSuccess = ::onShareDone, ) } } - private fun onShareSuccess(roomIds: List) { + private fun onShareDone(roomIds: List) { callbacks.forEach { it.onDone(roomIds) } } } From 725e6c9855d7bba9200490e24db64d9233f9894a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 29 Oct 2025 09:04:58 +0100 Subject: [PATCH 240/898] Rename fun. --- .../android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt | 2 +- .../element/android/features/forward/api/ForwardEntryPoint.kt | 2 +- .../android/features/forward/impl/ForwardMessagesNode.kt | 2 +- .../features/forward/impl/DefaultForwardEntryPointTest.kt | 2 +- .../element/android/features/messages/impl/MessagesFlowNode.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index f7140804c8..f09113afa0 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -165,7 +165,7 @@ class JoinedRoomLoadedFlowNode( val timelineProvider = { MutableStateFlow(inputs.room.liveTimeline).asStateFlow() } val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) val callback = object : ForwardEntryPoint.Callback { - override fun onForwardDone(roomIds: List) { + override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> callbacks.forEach { it.onOpenRoom(roomId, emptyList()) } diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt index e0632ca20c..d822c0adb8 100644 --- a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt @@ -24,7 +24,7 @@ interface ForwardEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onForwardDone(roomIds: List) + fun onDone(roomIds: List) } data class Params( diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index 3bab03ff65..27e95898d2 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -92,6 +92,6 @@ class ForwardMessagesNode( } private fun onForwardDone(roomIds: List) { - callbacks.forEach { it.onForwardDone(roomIds) } + callbacks.forEach { it.onDone(roomIds) } } } diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index 9af564f50d..dabb8af4a1 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -46,7 +46,7 @@ class DefaultForwardEntryPointTest { ) } val callback = object : ForwardEntryPoint.Callback { - override fun onForwardDone(roomIds: List) = lambdaError() + override fun onDone(roomIds: List) = lambdaError() } val params = ForwardEntryPoint.Params( eventId = AN_EVENT_ID, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index e9cec2b652..8807dd77cb 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -345,7 +345,7 @@ class MessagesFlowNode( } val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) val callback = object : ForwardEntryPoint.Callback { - override fun onForwardDone(roomIds: List) { + override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> callbacks.forEach { it.openRoom(roomId) } From f1cce0f817bacdc2f5edc995f78bcd86f451941f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 09:18:39 +0100 Subject: [PATCH 241/898] fix(deps): update dependency com.github.matrix-org:matrix-analytics-events to v0.29.2 (#5621) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7f139e8abe..26046986cb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -213,7 +213,7 @@ color_picker = "io.mhssn:colorpicker:1.0.0" posthog = "com.posthog:posthog-android:3.25.0" sentry = "io.sentry:sentry-android:8.24.0" # main branch can be tested replacing the version with main-SNAPSHOT -matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.28.0" +matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.29.2" # Emojibase matrix_emojibase_bindings = "io.element.android:emojibase-bindings:1.4.3" From 0bc71acd8a57ae023083116c519d75e7152e4e4c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:56:32 +0100 Subject: [PATCH 242/898] fix(deps): update dependencyanalysis to v3.4.0 (#5624) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 26046986cb..802455adff 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,7 +50,7 @@ telephoto = "0.18.0" haze = "1.6.10" # Dependency analysis -dependencyAnalysis = "3.3.0" +dependencyAnalysis = "3.4.0" # DI metro = "0.7.2" From 988815217a88f96d405cd15dd45edf047a7b6dc2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 22:56:03 +0100 Subject: [PATCH 243/898] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.29 (#5625) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.29 * Rename `NoPointer` to `NoHandle` for the Rust FFI fakes * `@Ignore` tests broken by FFI direct mapping --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín --- gradle/libs.versions.toml | 2 +- .../matrix/impl/RustMatrixClientFactoryTest.kt | 2 ++ .../libraries/matrix/impl/RustMatrixClientTest.kt | 2 ++ .../matrix/impl/auth/HomeserverDetailsKtTest.kt | 2 ++ .../auth/RustMatrixAuthenticationServiceTest.kt | 2 ++ .../impl/auth/qrlogin/SdkQrCodeLoginDataTest.kt | 2 ++ .../matrix/impl/fixtures/fakes/FakeFfiClient.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiClientBuilder.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiEncryption.kt | 4 ++-- .../fixtures/fakes/FakeFfiHomeserverLoginDetails.kt | 4 ++-- .../fakes/FakeFfiLazyTimelineItemProvider.kt | 4 ++-- .../fixtures/fakes/FakeFfiNotificationClient.kt | 4 ++-- .../fixtures/fakes/FakeFfiNotificationSettings.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiQrCodeData.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiRoom.kt | 4 ++-- .../fixtures/fakes/FakeFfiRoomDirectorySearch.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiRoomList.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiRoomListService.kt | 4 ++-- .../fixtures/fakes/FakeFfiRoomMembersIterator.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiRoomPowerLevels.kt | 4 ++-- .../fakes/FakeFfiSessionVerificationController.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiSpaceRoomList.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiSpaceService.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiSyncService.kt | 4 ++-- .../fixtures/fakes/FakeFfiSyncServiceBuilder.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiTaskHandle.kt | 4 ++-- .../matrix/impl/fixtures/fakes/FakeFfiTimeline.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiTimelineEvent.kt | 4 ++-- .../fakes/FakeFfiTimelineEventTypeFilter.kt | 4 ++-- .../impl/fixtures/fakes/FakeFfiTimelineItem.kt | 4 ++-- .../notification/RustNotificationServiceTest.kt | 5 +++++ .../RustNotificationSettingsServiceTest.kt | 2 ++ .../matrix/impl/pushers/RustPushersServiceTest.kt | 2 ++ .../libraries/matrix/impl/room/RoomInfoExtTest.kt | 2 ++ .../matrix/impl/room/RoomInfoMapperTest.kt | 2 ++ .../libraries/matrix/impl/room/RustBaseRoomTest.kt | 2 ++ .../matrix/impl/room/join/DefaultJoinRoomTest.kt | 2 ++ .../impl/room/member/RoomMemberListFetcherTest.kt | 2 ++ .../roomdirectory/RustBaseRoomDirectoryListTest.kt | 2 ++ .../RustBaseRoomDirectoryServiceTest.kt | 2 ++ .../matrix/impl/roomlist/RoomListFactoryTest.kt | 2 ++ .../impl/roomlist/RoomSummaryListProcessorTest.kt | 12 ++++++++++++ .../impl/roomlist/RustBaseRoomListServiceTest.kt | 2 ++ .../impl/spaces/RoomSummaryListProcessorTest.kt | 13 +++++++++++++ .../matrix/impl/spaces/RustSpaceRoomListTest.kt | 4 ++++ .../timeline/MatrixTimelineDiffProcessorTest.kt | 12 ++++++++++++ .../matrix/impl/timeline/RustTimelineTest.kt | 2 ++ .../impl/timeline/TimelineItemsSubscriberTest.kt | 5 +++++ 48 files changed, 134 insertions(+), 49 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 802455adff..671a98c0a8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -171,7 +171,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.28" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.29" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactoryTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactoryTest.kt index 92f9438322..5d842e7fb7 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactoryTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactoryTest.kt @@ -22,9 +22,11 @@ import io.element.android.services.toolbox.test.systemclock.FakeSystemClock import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import java.io.File +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RustMatrixClientFactoryTest { @Test fun test() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt index dec0f4cd4f..f9f948e488 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt @@ -29,11 +29,13 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.UserProfile import java.io.File +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RustMatrixClientTest { @Test fun `ensure that sessionId and deviceId can be retrieved from the client`() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/HomeserverDetailsKtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/HomeserverDetailsKtTest.kt index eb3ac75cf6..3c3ec7b173 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/HomeserverDetailsKtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/HomeserverDetailsKtTest.kt @@ -10,8 +10,10 @@ package io.element.android.libraries.matrix.impl.auth import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiHomeserverLoginDetails +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class HomeserverDetailsKtTest { @Test fun `map should be correct`() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt index 490c921aa9..6cb6a032e0 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt @@ -22,10 +22,12 @@ import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import java.io.File class RustMatrixAuthenticationServiceTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `setHomeserver is successful`() = runTest { val sut = createRustMatrixAuthenticationService( diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/SdkQrCodeLoginDataTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/SdkQrCodeLoginDataTest.kt index 1ba998fc41..918c7178fe 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/SdkQrCodeLoginDataTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/qrlogin/SdkQrCodeLoginDataTest.kt @@ -10,8 +10,10 @@ package io.element.android.libraries.matrix.impl.auth.qrlogin import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiQrCodeData import io.element.android.libraries.matrix.test.A_HOMESERVER_URL +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class SdkQrCodeLoginDataTest { @Test fun `getServer reads the value from the Rust side, null case`() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClient.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClient.kt index 3f53d9d5e2..7d544daf98 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClient.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClient.kt @@ -17,7 +17,7 @@ import org.matrix.rustcomponents.sdk.ClientDelegate import org.matrix.rustcomponents.sdk.Encryption import org.matrix.rustcomponents.sdk.HomeserverLoginDetails import org.matrix.rustcomponents.sdk.IgnoredUsersListener -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.NotificationProcessSetup import org.matrix.rustcomponents.sdk.NotificationSettings @@ -45,7 +45,7 @@ class FakeFfiClient( private val getProfileResult: (String) -> UserProfile = { UserProfile(userId = userId, displayName = null, avatarUrl = null) }, private val homeserverLoginDetailsResult: () -> HomeserverLoginDetails = { lambdaError() }, private val closeResult: () -> Unit = {}, -) : Client(NoPointer) { +) : Client(NoHandle) { override fun userId(): String = userId override fun deviceId(): String = deviceId override suspend fun notificationClient(processSetup: NotificationProcessSetup) = notificationClient diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt index d2dce3816c..6cff38f21a 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.ClientSessionDelegate -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RequestConfig import org.matrix.rustcomponents.sdk.SlidingSyncVersionBuilder import uniffi.matrix_sdk.BackupDownloadStrategy @@ -19,7 +19,7 @@ import uniffi.matrix_sdk_crypto.DecryptionSettings class FakeFfiClientBuilder( val buildResult: () -> Client = { FakeFfiClient(withUtdHook = {}) } -) : ClientBuilder(NoPointer) { +) : ClientBuilder(NoHandle) { override fun addRootCertificates(certificates: List) = this override fun autoEnableBackups(autoEnableBackups: Boolean) = this override fun autoEnableCrossSigning(autoEnableCrossSigning: Boolean) = this diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiEncryption.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiEncryption.kt index 177ab5b251..f932b44b7f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiEncryption.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiEncryption.kt @@ -11,13 +11,13 @@ import io.element.android.tests.testutils.simulateLongTask import org.matrix.rustcomponents.sdk.BackupState import org.matrix.rustcomponents.sdk.BackupStateListener import org.matrix.rustcomponents.sdk.Encryption -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RecoveryState import org.matrix.rustcomponents.sdk.RecoveryStateListener import org.matrix.rustcomponents.sdk.TaskHandle import org.matrix.rustcomponents.sdk.VerificationStateListener -class FakeFfiEncryption : Encryption(NoPointer) { +class FakeFfiEncryption : Encryption(NoHandle) { override fun verificationStateListener(listener: VerificationStateListener): TaskHandle { return FakeFfiTaskHandle() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt index 8977470365..85328a2d4d 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt @@ -8,13 +8,13 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import org.matrix.rustcomponents.sdk.HomeserverLoginDetails -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle class FakeFfiHomeserverLoginDetails( private val url: String = "https://example.org", private val supportsPasswordLogin: Boolean = true, private val supportsOidcLogin: Boolean = false -) : HomeserverLoginDetails(NoPointer) { +) : HomeserverLoginDetails(NoHandle) { override fun url(): String = url override fun supportsOidcLogin(): Boolean = supportsOidcLogin override fun supportsPasswordLogin(): Boolean = supportsPasswordLogin diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiLazyTimelineItemProvider.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiLazyTimelineItemProvider.kt index 6149a9164d..6e9b1072e9 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiLazyTimelineItemProvider.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiLazyTimelineItemProvider.kt @@ -10,14 +10,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.libraries.matrix.impl.fixtures.factories.anEventTimelineItemDebugInfo import org.matrix.rustcomponents.sdk.EventTimelineItemDebugInfo import org.matrix.rustcomponents.sdk.LazyTimelineItemProvider -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.SendHandle import org.matrix.rustcomponents.sdk.ShieldState class FakeFfiLazyTimelineItemProvider( private val debugInfo: EventTimelineItemDebugInfo = anEventTimelineItemDebugInfo(), private val shieldsState: ShieldState? = null, -) : LazyTimelineItemProvider(NoPointer) { +) : LazyTimelineItemProvider(NoHandle) { override fun getShields(strict: Boolean) = shieldsState override fun debugInfo() = debugInfo override fun getSendHandle(): SendHandle? = null diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationClient.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationClient.kt index d17f4f949c..d3bb7e261d 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationClient.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationClient.kt @@ -8,14 +8,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import org.matrix.rustcomponents.sdk.BatchNotificationResult -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.NotificationItemsRequest class FakeFfiNotificationClient( var notificationItemResult: Map = emptyMap(), val closeResult: () -> Unit = { } -) : NotificationClient(NoPointer) { +) : NotificationClient(NoHandle) { override suspend fun getNotifications(requests: List): Map { return notificationItemResult } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationSettings.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationSettings.kt index 7a65b8d2cd..28a3e2baac 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationSettings.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiNotificationSettings.kt @@ -8,14 +8,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomNotificationSettings -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.NotificationSettings import org.matrix.rustcomponents.sdk.NotificationSettingsDelegate import org.matrix.rustcomponents.sdk.RoomNotificationSettings class FakeFfiNotificationSettings( private val roomNotificationSettings: RoomNotificationSettings = aRustRoomNotificationSettings(), -) : NotificationSettings(NoPointer) { +) : NotificationSettings(NoHandle) { private var delegate: NotificationSettingsDelegate? = null override fun setDelegate(delegate: NotificationSettingsDelegate?) { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiQrCodeData.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiQrCodeData.kt index 1be8b87a66..67792d65ea 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiQrCodeData.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiQrCodeData.kt @@ -8,12 +8,12 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.tests.testutils.lambda.lambdaError -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.QrCodeData class FakeFfiQrCodeData( private val serverNameResult: () -> String? = { lambdaError() }, -) : QrCodeData(NoPointer) { +) : QrCodeData(NoHandle) { override fun serverName(): String? { return serverNameResult() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoom.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoom.kt index 41a0424991..85630176b1 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoom.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoom.kt @@ -12,7 +12,7 @@ import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomInfo import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.tests.testutils.lambda.lambdaError import org.matrix.rustcomponents.sdk.EventTimelineItem -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.Room import org.matrix.rustcomponents.sdk.RoomInfo import org.matrix.rustcomponents.sdk.RoomMembersIterator @@ -26,7 +26,7 @@ class FakeFfiRoom( private val latestEventLambda: () -> EventTimelineItem? = { lambdaError() }, private val suggestedRoleForUserLambda: (String) -> RoomMemberRole = { lambdaError() }, private val roomInfo: RoomInfo = aRustRoomInfo(id = roomId.value), -) : Room(NoPointer) { +) : Room(NoHandle) { override fun id(): String { return roomId.value } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomDirectorySearch.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomDirectorySearch.kt index b090262e31..f9302923a3 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomDirectorySearch.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomDirectorySearch.kt @@ -8,7 +8,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.tests.testutils.simulateLongTask -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomDirectorySearch import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntriesListener import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntryUpdate @@ -16,7 +16,7 @@ import org.matrix.rustcomponents.sdk.TaskHandle class FakeFfiRoomDirectorySearch( var isAtLastPage: Boolean = false, -) : RoomDirectorySearch(NoPointer) { +) : RoomDirectorySearch(NoHandle) { override suspend fun isAtLastPage(): Boolean { return isAtLastPage } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomList.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomList.kt index d51a742368..789f743485 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomList.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomList.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomList -class FakeFfiRoomList : RoomList(NoPointer) +class FakeFfiRoomList : RoomList(NoHandle) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomListService.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomListService.kt index 604f5289a0..0c72bd4459 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomListService.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomListService.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomList import org.matrix.rustcomponents.sdk.RoomListService import org.matrix.rustcomponents.sdk.RoomListServiceStateListener @@ -15,7 +15,7 @@ import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicator import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicatorListener import org.matrix.rustcomponents.sdk.TaskHandle -class FakeFfiRoomListService : RoomListService(NoPointer) { +class FakeFfiRoomListService : RoomListService(NoHandle) { override suspend fun allRooms(): RoomList { return FakeFfiRoomList() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomMembersIterator.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomMembersIterator.kt index 28ee4791e5..915d89d989 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomMembersIterator.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomMembersIterator.kt @@ -7,13 +7,13 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomMember import org.matrix.rustcomponents.sdk.RoomMembersIterator class FakeFfiRoomMembersIterator( private var members: List? = null -) : RoomMembersIterator(NoPointer) { +) : RoomMembersIterator(NoHandle) { override fun len(): UInt { return members?.size?.toUInt() ?: 0u } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomPowerLevels.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomPowerLevels.kt index 32e7dc891d..2b6961e48d 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomPowerLevels.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiRoomPowerLevels.kt @@ -7,14 +7,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomPowerLevels import org.matrix.rustcomponents.sdk.RoomPowerLevelsValues class FakeFfiRoomPowerLevels( private val values: RoomPowerLevelsValues = defaultFfiRoomPowerLevelValues(), private val users: Map = emptyMap(), -) : RoomPowerLevels(NoPointer) { +) : RoomPowerLevels(NoHandle) { override fun values(): RoomPowerLevelsValues = values override fun userPowerLevels(): Map = users } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSessionVerificationController.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSessionVerificationController.kt index 2ff1e1d6ac..b5403c15ce 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSessionVerificationController.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSessionVerificationController.kt @@ -7,10 +7,10 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.SessionVerificationController import org.matrix.rustcomponents.sdk.SessionVerificationControllerDelegate -class FakeFfiSessionVerificationController : SessionVerificationController(NoPointer) { +class FakeFfiSessionVerificationController : SessionVerificationController(NoHandle) { override fun setDelegate(delegate: SessionVerificationControllerDelegate?) {} } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt index 171afd49fc..1d9266cb9d 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceRoomList.kt @@ -9,7 +9,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.simulateLongTask -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.SpaceListUpdate import org.matrix.rustcomponents.sdk.SpaceRoom import org.matrix.rustcomponents.sdk.SpaceRoomList @@ -22,7 +22,7 @@ class FakeFfiSpaceRoomList( private val paginateResult: () -> Unit = { lambdaError() }, private val paginationStateResult: () -> SpaceRoomListPaginationState = { lambdaError() }, private val roomsResult: () -> List = { lambdaError() }, -) : SpaceRoomList(NoPointer) { +) : SpaceRoomList(NoHandle) { private var spaceRoomListPaginationStateListener: SpaceRoomListPaginationStateListener? = null private var spaceRoomListEntriesListener: SpaceRoomListEntriesListener? = null diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceService.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceService.kt index 3dae78ae1b..3bd15b543f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceService.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSpaceService.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.SpaceService -class FakeFfiSpaceService : SpaceService(NoPointer) +class FakeFfiSpaceService : SpaceService(NoHandle) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncService.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncService.kt index 5d32139c8e..2e19b26eb3 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncService.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncService.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RoomListService import org.matrix.rustcomponents.sdk.SyncService import org.matrix.rustcomponents.sdk.SyncServiceStateObserver @@ -15,7 +15,7 @@ import org.matrix.rustcomponents.sdk.TaskHandle class FakeFfiSyncService( private val roomListService: RoomListService = FakeFfiRoomListService(), -) : SyncService(NoPointer) { +) : SyncService(NoHandle) { override fun roomListService(): RoomListService = roomListService override fun state(listener: SyncServiceStateObserver): TaskHandle { return FakeFfiTaskHandle() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt index f423d0295b..a16e75d3d8 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiSyncServiceBuilder.kt @@ -7,11 +7,11 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.SyncService import org.matrix.rustcomponents.sdk.SyncServiceBuilder -class FakeFfiSyncServiceBuilder : SyncServiceBuilder(NoPointer) { +class FakeFfiSyncServiceBuilder : SyncServiceBuilder(NoHandle) { override fun withOfflineMode(): SyncServiceBuilder = this override fun withSharePos(enable: Boolean): SyncServiceBuilder = this override suspend fun finish(): SyncService = FakeFfiSyncService() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTaskHandle.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTaskHandle.kt index 66c51017df..3a05c88975 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTaskHandle.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTaskHandle.kt @@ -7,10 +7,10 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.TaskHandle -class FakeFfiTaskHandle : TaskHandle(NoPointer) { +class FakeFfiTaskHandle : TaskHandle(NoHandle) { override fun cancel() = Unit override fun destroy() = Unit } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimeline.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimeline.kt index 09d79f8790..e9b80ef3ad 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimeline.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimeline.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.PaginationStatusListener import org.matrix.rustcomponents.sdk.TaskHandle import org.matrix.rustcomponents.sdk.Timeline @@ -15,7 +15,7 @@ import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineListener import uniffi.matrix_sdk.RoomPaginationStatus -class FakeFfiTimeline : Timeline(NoPointer) { +class FakeFfiTimeline : Timeline(NoHandle) { private var listener: TimelineListener? = null override suspend fun addListener(listener: TimelineListener): TaskHandle { this.listener = listener diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEvent.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEvent.kt index 41eb9c798e..7869e8b65c 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEvent.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEvent.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import io.element.android.libraries.matrix.impl.fixtures.factories.aRustTimelineEventTypeMessageLike import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.services.toolbox.test.systemclock.A_FAKE_TIMESTAMP -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.TimelineEvent import org.matrix.rustcomponents.sdk.TimelineEventType @@ -18,7 +18,7 @@ open class FakeFfiTimelineEvent( val timestamp: ULong = A_FAKE_TIMESTAMP.toULong(), val timelineEventType: TimelineEventType = aRustTimelineEventTypeMessageLike(), val senderId: String = A_USER_ID_2.value, -) : TimelineEvent(NoPointer) { +) : TimelineEvent(NoHandle) { override fun timestamp(): ULong = timestamp override fun eventType(): TimelineEventType = timelineEventType override fun senderId(): String = senderId diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventTypeFilter.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventTypeFilter.kt index dcab0bba6e..f3a7fb7aa0 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventTypeFilter.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineEventTypeFilter.kt @@ -7,7 +7,7 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter -class FakeFfiTimelineEventTypeFilter : TimelineEventTypeFilter(NoPointer) +class FakeFfiTimelineEventTypeFilter : TimelineEventTypeFilter(NoHandle) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineItem.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineItem.kt index a3f7a18c21..c2988aba2f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineItem.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiTimelineItem.kt @@ -8,14 +8,14 @@ package io.element.android.libraries.matrix.impl.fixtures.fakes import org.matrix.rustcomponents.sdk.EventTimelineItem -import org.matrix.rustcomponents.sdk.NoPointer +import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.TimelineItem import org.matrix.rustcomponents.sdk.TimelineUniqueId import org.matrix.rustcomponents.sdk.VirtualTimelineItem class FakeFfiTimelineItem( private val asEventResult: EventTimelineItem? = null, -) : TimelineItem(NoPointer) { +) : TimelineItem(NoHandle) { override fun asEvent(): EventTimelineItem? = asEventResult override fun asVirtual(): VirtualTimelineItem? = null override fun fmtDebug(): String = "fmtDebug" diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt index 2b6717910b..ce773a3a22 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notification/RustNotificationServiceTest.kt @@ -28,12 +28,14 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.NotificationClient import org.matrix.rustcomponents.sdk.NotificationStatus import org.matrix.rustcomponents.sdk.TimelineEventType class RustNotificationServiceTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun test() = runTest { val notificationClient = FakeFfiNotificationClient( @@ -55,6 +57,7 @@ class RustNotificationServiceTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `test mapping invalid item only drops that item`() = runTest { val error = IllegalStateException("This event type is not supported") @@ -82,6 +85,7 @@ class RustNotificationServiceTest { assertThat(successfulResult?.isSuccess).isTrue() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `test unable to resolve event`() = runTest { val notificationClient = FakeFfiNotificationClient( @@ -94,6 +98,7 @@ class RustNotificationServiceTest { assertThat(exception).isInstanceOf(NotificationResolverException::class.java) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `close should invoke the close method of the service`() = runTest { val closeResult = lambdaRecorder { } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsServiceTest.kt index d2dd425132..15b6b586a8 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/notificationsettings/RustNotificationSettingsServiceTest.kt @@ -15,10 +15,12 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.NotificationSettings class RustNotificationSettingsServiceTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun test() = runTest { val sut = createRustNotificationSettingsService() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersServiceTest.kt index 22e015a27c..ed40558ba4 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/pushers/RustPushersServiceTest.kt @@ -12,8 +12,10 @@ import io.element.android.libraries.matrix.api.pusher.UnsetHttpPusherData import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClient import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RustPushersServiceTest { @Test fun `setPusher should invoke the client method`() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoExtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoExtTest.kt index b52959712d..4bf2e312cb 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoExtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoExtTest.kt @@ -13,8 +13,10 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomHero import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomInfo import io.element.android.libraries.matrix.test.A_USER_ID +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RoomInfoExtTest { @Test fun `get non empty element Heroes`() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt index a95720baef..87888697eb 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RoomInfoMapperTest.kt @@ -31,6 +31,7 @@ import io.element.android.libraries.matrix.test.room.defaultRoomPowerLevelValues import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.toImmutableList +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.Membership import uniffi.matrix_sdk_base.EncryptionState @@ -38,6 +39,7 @@ import org.matrix.rustcomponents.sdk.JoinRule as RustJoinRule import org.matrix.rustcomponents.sdk.RoomHistoryVisibility as RustRoomHistoryVisibility import org.matrix.rustcomponents.sdk.RoomNotificationMode as RustRoomNotificationMode +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RoomInfoMapperTest { @Test fun `mapping of RustRoomInfo should map all the fields`() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt index 50d6c348b5..45227c7e27 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoomTest.kt @@ -30,9 +30,11 @@ import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.isActive import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import uniffi.matrix_sdk.RoomMemberRole +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RustBaseRoomTest { @Test fun `RustBaseRoom should cancel the room coroutine scope when it is destroyed`() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoomTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoomTest.kt index d33148931e..201ce64809 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoomTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/join/DefaultJoinRoomTest.kt @@ -24,8 +24,10 @@ import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class DefaultJoinRoomTest { @Test fun `when using roomId and there is no server names, the classic join room API is used`() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcherTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcherTest.kt index b11a3a6cd5..5ad51e0aa6 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcherTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcherTest.kt @@ -23,8 +23,10 @@ import io.element.android.libraries.matrix.test.A_USER_ID_3 import io.element.android.libraries.matrix.test.A_USER_ID_4 import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RoomMemberListFetcherTest { @Test fun `fetchRoomMembers with CACHE source - emits cached members, if any`() = runTest { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt index 89b16e6ff5..d92bc4414e 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryListTest.kt @@ -18,10 +18,12 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.RoomDirectorySearch import org.matrix.rustcomponents.sdk.RoomDirectorySearchEntryUpdate +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") @OptIn(ExperimentalCoroutinesApi::class) class RustBaseRoomDirectoryListTest { @Test diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryServiceTest.kt index cc39e00c9f..55ed0c87ee 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomdirectory/RustBaseRoomDirectoryServiceTest.kt @@ -10,9 +10,11 @@ package io.element.android.libraries.matrix.impl.roomdirectory import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClient import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test class RustBaseRoomDirectoryServiceTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun test() = runTest { val client = FakeFfiClient() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactoryTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactoryTest.kt index 2d97f2c589..b77b97e89d 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactoryTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFactoryTest.kt @@ -10,10 +10,12 @@ package io.element.android.libraries.matrix.impl.roomlist import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiRoomList import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiRoomListService import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import kotlin.coroutines.EmptyCoroutineContext class RoomListFactoryTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `createRoomList should work`() = runTest { val sut = RoomListFactory( diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt index 2b54463dea..683fda4a21 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomSummaryListProcessorTest.kt @@ -20,12 +20,14 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.RoomListEntriesUpdate class RoomSummaryListProcessorTest { private val summaries = MutableStateFlow>(emptyList()) + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Append adds new entries at the end of the list`() = runTest { summaries.value = listOf(aRoomSummary()) @@ -38,6 +40,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value.subList(1, 4).all { it.roomId == A_ROOM_ID_2 }).isTrue() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushBack adds a new entry at the end of the list`() = runTest { summaries.value = listOf(aRoomSummary()) @@ -48,6 +51,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value.last().roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushFront inserts a new entry at the start of the list`() = runTest { summaries.value = listOf(aRoomSummary()) @@ -58,6 +62,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value.first().roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Set replaces an entry at some index`() = runTest { summaries.value = listOf(aRoomSummary()) @@ -70,6 +75,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Insert inserts a new entry at the provided index`() = runTest { summaries.value = listOf(aRoomSummary()) @@ -82,6 +88,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Remove removes an entry at some index`() = runTest { summaries.value = listOf( @@ -97,6 +104,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopBack removes an entry at the end of the list`() = runTest { summaries.value = listOf( @@ -112,6 +120,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopFront removes an entry at the start of the list`() = runTest { summaries.value = listOf( @@ -127,6 +136,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Clear removes all the entries`() = runTest { summaries.value = listOf( @@ -140,6 +150,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value).isEmpty() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Truncate removes all entries after the provided length`() = runTest { summaries.value = listOf( @@ -155,6 +166,7 @@ class RoomSummaryListProcessorTest { assertThat(summaries.value[index].roomId).isEqualTo(A_ROOM_ID) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Reset removes all entries and add the provided ones`() = runTest { summaries.value = listOf( diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt index 561c1f245f..51749e911c 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/roomlist/RustBaseRoomListServiceTest.kt @@ -17,10 +17,12 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicator import org.matrix.rustcomponents.sdk.RoomListService as RustRoomListService +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") @OptIn(ExperimentalCoroutinesApi::class) class RustBaseRoomListServiceTest { @Test diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RoomSummaryListProcessorTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RoomSummaryListProcessorTest.kt index ae05c7b4e9..3ada6ce72e 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RoomSummaryListProcessorTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RoomSummaryListProcessorTest.kt @@ -17,12 +17,14 @@ import io.element.android.libraries.previewutils.room.aSpaceRoom import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.SpaceListUpdate class RoomSummaryListProcessorTest { private val spaceRoomsFlow = MutableStateFlow>(emptyList()) + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Append adds new entries at the end of the list`() = runTest { spaceRoomsFlow.value = listOf(aSpaceRoom()) @@ -35,6 +37,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value.subList(1, 4).all { it.roomId == A_ROOM_ID_2 }).isTrue() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushBack adds a new entry at the end of the list`() = runTest { spaceRoomsFlow.value = listOf(aSpaceRoom()) @@ -45,6 +48,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value.last().roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushFront inserts a new entry at the start of the list`() = runTest { spaceRoomsFlow.value = listOf(aSpaceRoom()) @@ -55,6 +59,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value.first().roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Set replaces an entry at some index`() = runTest { spaceRoomsFlow.value = listOf(aSpaceRoom()) @@ -67,6 +72,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Insert inserts a new entry at the provided index`() = runTest { spaceRoomsFlow.value = listOf(aSpaceRoom()) @@ -79,6 +85,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Remove removes an entry at some index`() = runTest { spaceRoomsFlow.value = listOf( @@ -94,6 +101,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopBack removes an entry at the end of the list`() = runTest { spaceRoomsFlow.value = listOf( @@ -109,6 +117,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopFront removes an entry at the start of the list`() = runTest { spaceRoomsFlow.value = listOf( @@ -124,6 +133,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID_2) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Clear removes all the entries`() = runTest { spaceRoomsFlow.value = listOf( @@ -137,6 +147,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value).isEmpty() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Truncate removes all entries after the provided length`() = runTest { spaceRoomsFlow.value = listOf( @@ -152,6 +163,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Reset removes all entries and add the provided ones`() = runTest { spaceRoomsFlow.value = listOf( @@ -167,6 +179,7 @@ class RoomSummaryListProcessorTest { assertThat(spaceRoomsFlow.value[index].roomId).isEqualTo(A_ROOM_ID_3) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `When there is no replay cache SpaceListUpdateProcessor starts with an empty list`() = runTest { val spaceRoomsSharedFlow = MutableSharedFlow>(replay = 1) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomListTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomListTest.kt index 7a494ae8c3..36ea3bccb0 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomListTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/spaces/RustSpaceRoomListTest.kt @@ -22,12 +22,14 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.SpaceListUpdate import uniffi.matrix_sdk_ui.SpaceRoomListPaginationState import org.matrix.rustcomponents.sdk.SpaceRoomList as InnerSpaceRoomList class RustSpaceRoomListTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `paginationStatusFlow emits values`() = runTest { val innerSpaceRoomList = FakeFfiSpaceRoomList( @@ -50,6 +52,7 @@ class RustSpaceRoomListTest { } } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `spaceRoomsFlow emits values`() = runTest { val innerSpaceRoomList = FakeFfiSpaceRoomList( @@ -72,6 +75,7 @@ class RustSpaceRoomListTest { } } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `paginate invokes paginate on the inner class`() = runTest { val paginateResult = lambdaRecorder { } 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 b82c8dfbfb..67f4487ef4 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 @@ -20,6 +20,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.TimelineDiff @@ -29,6 +30,7 @@ class MatrixTimelineDiffProcessorTest { private val anEvent = MatrixTimelineItem.Event(A_UNIQUE_ID, anEventTimelineItem()) private val anEvent2 = MatrixTimelineItem.Event(A_UNIQUE_ID_2, anEventTimelineItem()) + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Append adds new entries at the end of the list`() = runTest { timelineItems.value = listOf(anEvent) @@ -41,6 +43,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushBack adds a new entry at the end of the list`() = runTest { timelineItems.value = listOf(anEvent) @@ -53,6 +56,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PushFront inserts a new entry at the start of the list`() = runTest { timelineItems.value = listOf(anEvent) @@ -65,6 +69,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Set replaces an entry at some index`() = runTest { timelineItems.value = listOf(anEvent, anEvent2) @@ -77,6 +82,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Insert inserts a new entry at the provided index`() = runTest { timelineItems.value = listOf(anEvent, anEvent2) @@ -90,6 +96,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Remove removes an entry at some index`() = runTest { timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2) @@ -102,6 +109,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopBack removes an entry at the end of the list`() = runTest { timelineItems.value = listOf(anEvent, anEvent2) @@ -113,6 +121,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `PopFront removes an entry at the start of the list`() = runTest { timelineItems.value = listOf(anEvent, anEvent2) @@ -124,6 +133,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Clear removes all the entries`() = runTest { timelineItems.value = listOf(anEvent, anEvent2) @@ -132,6 +142,7 @@ class MatrixTimelineDiffProcessorTest { assertThat(timelineItems.value).isEmpty() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Truncate removes all entries after the provided length`() = runTest { timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2) @@ -143,6 +154,7 @@ class MatrixTimelineDiffProcessorTest { ) } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `Reset removes all entries and add the provided ones`() = runTest { timelineItems.value = listOf(anEvent, MatrixTimelineItem.Other, anEvent2) 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 8bcd56978e..1cad54926f 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 @@ -29,11 +29,13 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.TimelineDiff import uniffi.matrix_sdk.RoomPaginationStatus import org.matrix.rustcomponents.sdk.Timeline as InnerTimeline +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") class RustTimelineTest { @Test fun `ensure that the timeline emits new loading item when pagination does not bring new events`() = runTest { 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 1df51dc5c2..752a309639 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 @@ -21,6 +21,7 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Ignore import org.junit.Test import org.matrix.rustcomponents.sdk.Timeline import org.matrix.rustcomponents.sdk.TimelineDiff @@ -28,6 +29,7 @@ import uniffi.matrix_sdk_ui.EventItemOrigin @OptIn(ExperimentalCoroutinesApi::class) class TimelineItemsSubscriberTest { + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `when timeline emits an empty list of items, the flow must emits an empty list`() = runTest { val timelineItems: MutableSharedFlow> = @@ -48,6 +50,7 @@ class TimelineItemsSubscriberTest { } } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `when timeline emits a non empty list of items, the flow must emits a non empty list`() = runTest { val timelineItems: MutableSharedFlow> = @@ -68,6 +71,7 @@ class TimelineItemsSubscriberTest { } } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `when timeline emits an item with SYNC origin, the callback onNewSyncedEvent is invoked`() = runTest { val timelineItems: MutableSharedFlow> = @@ -99,6 +103,7 @@ class TimelineItemsSubscriberTest { onNewSyncedEventRecorder.assertions().isCalledOnce() } + @Ignore("JNA direct mapping has broken unit tests with FFI fakes") @Test fun `multiple subscriptions does not have side effect`() = runTest { val timelineItemsSubscriber = createTimelineItemsSubscriber() From 1f5f6896c6836e8afa5a55e4b39112efd6c0d183 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 30 Oct 2025 08:39:06 +0100 Subject: [PATCH 244/898] Fix marking a room as read re-instantiates its timeline (#5628) * Add `Timeline.markAsRead` to avoid reinstantiating the timeline using `Room.markAsRead` * Mark as read when exiting the room screen, destroy the timeline when fully closed * Ensure `MarkAsFullyReadAndExit` event can only be processed once * Fix `DelayedVisibility` not being displayed in previews --- .../appnav/room/joined/LoadingRoomNodeView.kt | 5 +- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 8 +- .../features/messages/impl/MessagesEvents.kt | 1 + .../messages/impl/MessagesNavigator.kt | 1 + .../features/messages/impl/MessagesNode.kt | 10 ++- .../messages/impl/MessagesPresenter.kt | 24 ++++++ .../impl/threads/ThreadedMessagesNode.kt | 2 + .../messages/impl/timeline/MarkAsFullyRead.kt | 19 ++--- .../impl/timeline/TimelinePresenter.kt | 10 +-- .../messages/impl/FakeMessagesNavigator.kt | 5 ++ .../messages/impl/MessagesPresenterTest.kt | 77 +++++++++++++++++-- .../timeline/DefaultMarkAsFullyReadTest.kt | 39 +++++----- .../impl/timeline/FakeMarkAsFullyRead.kt | 8 +- .../impl/timeline/TimelinePresenterTest.kt | 42 ++++------ .../designsystem/utils/DelayedVisibility.kt | 46 +++++++++++ .../libraries/matrix/api/MatrixClient.kt | 10 +++ .../api/auth/qrlogin/QrLoginException.kt | 2 +- .../libraries/matrix/api/room/BaseRoom.kt | 5 ++ .../libraries/matrix/api/timeline/Timeline.kt | 6 ++ .../libraries/matrix/impl/RustMatrixClient.kt | 8 ++ .../matrix/impl/room/JoinedRustRoom.kt | 1 + .../matrix/impl/timeline/RustTimeline.kt | 12 +++ .../libraries/matrix/test/FakeMatrixClient.kt | 6 ++ .../matrix/test/timeline/FakeTimeline.kt | 23 ++++-- 24 files changed, 281 insertions(+), 89 deletions(-) create mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/DelayedVisibility.kt diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt index deedf5f867..a9c78fd4c7 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/LoadingRoomNodeView.kt @@ -26,6 +26,7 @@ import io.element.android.libraries.designsystem.theme.components.CircularProgre import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TopAppBar +import io.element.android.libraries.designsystem.utils.DelayedVisibility import io.element.android.libraries.matrix.ui.room.LoadingRoomState import io.element.android.libraries.matrix.ui.room.LoadingRoomStateProvider import io.element.android.libraries.ui.strings.CommonStrings @@ -57,7 +58,9 @@ fun LoadingRoomNodeView( style = ElementTheme.typography.fontBodyMdRegular, ) } else { - CircularProgressIndicator() + DelayedVisibility { + CircularProgressIndicator() + } } } }, diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index 8e73165cb6..c9eb28397e 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -37,7 +37,10 @@ import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +@RunWith(RobolectricTestRunner::class) class JoinedRoomLoadedFlowNodeTest { @get:Rule val instantTaskExecutorRule = InstantTaskExecutorRule() @@ -140,6 +143,7 @@ class JoinedRoomLoadedFlowNodeTest { spaceEntryPoint: SpaceEntryPoint = FakeSpaceEntryPoint(), forwardEntryPoint: ForwardEntryPoint = FakeForwardEntryPoint(), activeRoomsHolder: ActiveRoomsHolder = ActiveRoomsHolder(), + matrixClient: FakeMatrixClient = FakeMatrixClient(), ) = JoinedRoomLoadedFlowNode( buildContext = BuildContext.root(savedStateMap = null), plugins = plugins, @@ -148,9 +152,9 @@ class JoinedRoomLoadedFlowNodeTest { spaceEntryPoint = spaceEntryPoint, forwardEntryPoint = forwardEntryPoint, appNavigationStateService = FakeAppNavigationStateService(), - sessionCoroutineScope = this, + sessionCoroutineScope = backgroundScope, roomGraphFactory = FakeRoomGraphFactory(), - matrixClient = FakeMatrixClient(), + matrixClient = matrixClient, activeRoomsHolder = activeRoomsHolder, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesEvents.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesEvents.kt index 2e035b6299..25e055fdf3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesEvents.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesEvents.kt @@ -18,6 +18,7 @@ sealed interface MessagesEvents { data class InviteDialogDismissed(val action: InviteDialogAction) : MessagesEvents data class OnUserClicked(val user: MatrixUser) : MessagesEvents data object Dismiss : MessagesEvents + data object MarkAsFullyReadAndExit : MessagesEvents } enum class InviteDialogAction { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt index fc417fc029..25fd7f222d 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt @@ -23,4 +23,5 @@ interface MessagesNavigator { fun onPreviewAttachment(attachments: ImmutableList, inReplyToEventId: EventId?) fun onNavigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) + fun onNavigateUp() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index d4283d19d5..3c91b97a40 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -9,6 +9,7 @@ package io.element.android.features.messages.impl import android.app.Activity import android.content.Context +import androidx.activity.compose.BackHandler import androidx.activity.compose.LocalActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -263,6 +264,8 @@ class MessagesNode( context.toast(CommonStrings.screen_room_permalink_same_room_android) } + override fun onNavigateUp() = navigateUp() + @Composable override fun View(modifier: Modifier) { val activity = requireNotNull(LocalActivity.current) @@ -271,6 +274,11 @@ class MessagesNode( LocalTimelineItemPresenterFactories provides timelineItemPresenterFactories, ) { val state = presenter.present() + + BackHandler { + state.eventSink(MessagesEvents.MarkAsFullyReadAndExit) + } + OnLifecycleEvent { _, event -> when (event) { Lifecycle.Event.ON_PAUSE -> state.composerState.eventSink(MessageComposerEvents.SaveDraft) @@ -279,7 +287,7 @@ class MessagesNode( } MessagesView( state = state, - onBackClick = this::navigateUp, + onBackClick = { state.eventSink(MessagesEvents.MarkAsFullyReadAndExit) }, onRoomDetailsClick = this::onRoomDetailsClick, onEventContentClick = { isLive, event -> if (isLive) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 6740634c1c..503fd62fa5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -36,6 +36,7 @@ import io.element.android.features.messages.impl.link.LinkState import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents import io.element.android.features.messages.impl.messagecomposer.MessageComposerState import io.element.android.features.messages.impl.pinned.banner.PinnedMessagesBannerState +import io.element.android.features.messages.impl.timeline.MarkAsFullyRead import io.element.android.features.messages.impl.timeline.TimelineController import io.element.android.features.messages.impl.timeline.TimelineEvents import io.element.android.features.messages.impl.timeline.TimelineState @@ -65,6 +66,7 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState +import io.element.android.libraries.di.annotations.SessionCoroutineScope import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.core.toThreadId @@ -93,6 +95,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import timber.log.Timber +import java.util.concurrent.atomic.AtomicBoolean @AssistedInject class MessagesPresenter( @@ -122,6 +125,8 @@ class MessagesPresenter( private val encryptionService: EncryptionService, private val featureFlagService: FeatureFlagService, private val addRecentEmoji: AddRecentEmoji, + private val markAsFullyRead: MarkAsFullyRead, + @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, ) : Presenter { @AssistedFactory interface Factory { @@ -138,10 +143,13 @@ class MessagesPresenter( timelineMode = timelineController.mainTimelineMode() ) + private val markingAsReadAndExiting = AtomicBoolean(false) + @Composable override fun present(): MessagesState { htmlConverterProvider.Update() + val coroutineScope = rememberCoroutineScope() val roomInfo by room.roomInfoFlow.collectAsState() val localCoroutineScope = rememberCoroutineScope() val composerState = composerPresenter.present() @@ -239,6 +247,22 @@ class MessagesPresenter( is MessagesEvents.OnUserClicked -> { roomMemberModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.user)) } + is MessagesEvents.MarkAsFullyReadAndExit -> coroutineScope.launch { + if (!markingAsReadAndExiting.getAndSet(true)) { + val latestEventId = room.liveTimeline.getLatestEventId().getOrElse { + Timber.w(it, "Failed to get latest event id to mark as fully read") + navigator.onNavigateUp() + return@launch + } + latestEventId?.let { eventId -> + sessionCoroutineScope.launch { + markAsFullyRead(room.roomId, eventId) + } + } + navigator.onNavigateUp() + markingAsReadAndExiting.set(false) + } + } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt index f732def95f..99a0f03651 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt @@ -229,6 +229,8 @@ class ThreadedMessagesNode( callbacks.forEach { it.onOpenThread(threadRootId, focusedEventId) } } + override fun onNavigateUp() = navigateUp() + private fun onSendLocationClick() { callbacks.forEach { it.onSendLocationClick() } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt index 4bb6aecd34..1ec9cf6577 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/MarkAsFullyRead.kt @@ -8,29 +8,26 @@ package io.element.android.features.messages.impl.timeline import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.timeline.ReceiptType -import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import timber.log.Timber interface MarkAsFullyRead { - operator fun invoke(roomId: RoomId) + suspend operator fun invoke(roomId: RoomId, eventId: EventId): Result } @ContributesBinding(SessionScope::class) class DefaultMarkAsFullyRead( private val matrixClient: MatrixClient, + private val coroutineDispatchers: CoroutineDispatchers, ) : MarkAsFullyRead { - override fun invoke(roomId: RoomId) { - matrixClient.sessionCoroutineScope.launch { - matrixClient.getRoom(roomId)?.use { room -> - room.markAsRead(receiptType = ReceiptType.FULLY_READ) - .onFailure { - Timber.e("Failed to mark room $roomId as fully read", it) - } - } + override suspend fun invoke(roomId: RoomId, eventId: EventId): Result = withContext(coroutineDispatchers.io) { + matrixClient.markRoomAsFullyRead(roomId, eventId).onFailure { + Timber.e(it, "Failed to mark room $roomId as fully read for event $eventId") } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index f03a1e8903..d71ae1e7bc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -8,7 +8,6 @@ package io.element.android.features.messages.impl.timeline import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.collectAsState @@ -85,7 +84,6 @@ class TimelinePresenter( private val resolveVerifiedUserSendFailurePresenter: Presenter, private val typingNotificationPresenter: Presenter, private val roomCallStatePresenter: Presenter, - private val markAsFullyRead: MarkAsFullyRead, private val featureFlagService: FeatureFlagService, ) : Presenter { @AssistedFactory @@ -219,12 +217,6 @@ class TimelinePresenter( } } - DisposableEffect(Unit) { - onDispose { - markAsFullyRead(room.roomId) - } - } - LaunchedEffect(Unit) { timelineItemsFactory.timelineItems .onEach { newTimelineItems -> @@ -388,7 +380,7 @@ class TimelinePresenter( ) = launch(dispatchers.computation) { // If we are at the bottom of timeline, we mark the room as read. if (firstVisibleIndex == 0) { - room.markAsRead(receiptType = readReceiptType) + room.liveTimeline.markAsRead(receiptType = readReceiptType) } else { // Get last valid EventId seen by the user, as the first index might refer to a Virtual item val eventId = getLastEventIdBeforeOrAt(firstVisibleIndex, timelineItems) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt index bb59ca8551..c26e7a83e2 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt @@ -24,6 +24,7 @@ class FakeMessagesNavigator( private val onPreviewAttachmentLambda: (attachments: ImmutableList, inReplyToEventId: EventId?) -> Unit = { _, _ -> lambdaError() }, private val onNavigateToRoomLambda: (roomId: RoomId, threadId: EventId?, serverNames: List) -> Unit = { _, _, _ -> lambdaError() }, private val onOpenThreadLambda: (threadRootId: ThreadId, focusedEventId: EventId?) -> Unit = { _, _ -> lambdaError() }, + private val onNavigateUpLambda: () -> Unit = { lambdaError() }, ) : MessagesNavigator { override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { onShowEventDebugInfoClickLambda(eventId, debugInfo) @@ -52,4 +53,8 @@ class FakeMessagesNavigator( override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { onOpenThreadLambda(threadRootId, focusedEventId) } + + override fun onNavigateUp() { + onNavigateUpLambda() + } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index 34fd4df7f0..b25e097d48 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -23,6 +23,8 @@ import io.element.android.features.messages.impl.messagecomposer.MessageComposer import io.element.android.features.messages.impl.messagecomposer.MessageComposerState import io.element.android.features.messages.impl.messagecomposer.aMessageComposerState import io.element.android.features.messages.impl.pinned.banner.aLoadedPinnedMessagesBannerState +import io.element.android.features.messages.impl.timeline.FakeMarkAsFullyRead +import io.element.android.features.messages.impl.timeline.MarkAsFullyRead import io.element.android.features.messages.impl.timeline.TimelineController import io.element.android.features.messages.impl.timeline.TimelineEvents import io.element.android.features.messages.impl.timeline.aTimelineState @@ -178,7 +180,11 @@ class MessagesPresenterTest { liveTimeline = timeline, typingNoticeResult = { Result.success(Unit) }, ) - val presenter = createMessagesPresenter(joinedRoom = room, coroutineDispatchers = coroutineDispatchers) + val presenter = createMessagesPresenter( + timeline = timeline, + joinedRoom = room, + coroutineDispatchers = coroutineDispatchers + ) presenter.testWithLifecycleOwner { skipItems(1) val initialState = awaitItem() @@ -220,7 +226,11 @@ class MessagesPresenterTest { liveTimeline = timeline, typingNoticeResult = { Result.success(Unit) }, ) - val presenter = createMessagesPresenter(joinedRoom = room, coroutineDispatchers = coroutineDispatchers) + val presenter = createMessagesPresenter( + timeline = timeline, + joinedRoom = room, + coroutineDispatchers = coroutineDispatchers + ) presenter.testWithLifecycleOwner { val initialState = awaitItem() initialState.eventSink(MessagesEvents.ToggleReaction("👍", AN_EVENT_ID.toEventOrTransactionId())) @@ -509,6 +519,7 @@ class MessagesPresenterTest { val redactEventLambda = lambdaRecorder { _: EventOrTransactionId, _: String? -> Result.success(Unit) } liveTimeline.redactEventLambda = redactEventLambda val presenter = createMessagesPresenter( + timeline = liveTimeline, joinedRoom = joinedRoom, coroutineDispatchers = coroutineDispatchers, ) @@ -920,6 +931,7 @@ class MessagesPresenterTest { typingNoticeResult = { Result.success(Unit) }, ) val presenter = createMessagesPresenter( + timeline = timeline, joinedRoom = room, analyticsService = analyticsService, ) @@ -962,7 +974,11 @@ class MessagesPresenterTest { liveTimeline = timeline, typingNoticeResult = { Result.success(Unit) }, ) - val presenter = createMessagesPresenter(joinedRoom = room, analyticsService = analyticsService) + val presenter = createMessagesPresenter( + timeline = timeline, + joinedRoom = room, + analyticsService = analyticsService + ) presenter.testWithLifecycleOwner { val messageEvent = aMessageEvent( content = aTimelineItemTextContent() @@ -1236,8 +1252,57 @@ class MessagesPresenterTest { } } + @Test + fun `present - handle MarkAsFullyReadAndExit marks the room as fully read and navigates up`() = runTest { + val markAsFullyReadRecorder = lambdaRecorder { _, _ -> } + val markAsFullyReadUseCase = FakeMarkAsFullyRead(markAsFullyReadRecorder) + val onNavigateUpRecorder = lambdaRecorder {} + val navigator = FakeMessagesNavigator(onNavigateUpLambda = onNavigateUpRecorder) + + val presenter = createMessagesPresenter( + timeline = FakeTimeline(getLatestEventIdResult = { Result.success(AN_EVENT_ID) }), + markAsFullyRead = markAsFullyReadUseCase, + navigator = navigator, + ) + presenter.testWithLifecycleOwner { + val initialState = awaitItem() + initialState.eventSink(MessagesEvents.MarkAsFullyReadAndExit) + + runCurrent() + + markAsFullyReadRecorder.assertions().isCalledOnce() + onNavigateUpRecorder.assertions().isCalledOnce() + + cancelAndIgnoreRemainingEvents() + } + } + + @Test + fun `present - handle MarkAsFullyReadAndExit still navigates up if marking as read fails`() = runTest { + val markAsFullyReadUseCase = FakeMarkAsFullyRead { _, _ -> error("boom") } + val onNavigateUpRecorder = lambdaRecorder {} + val navigator = FakeMessagesNavigator(onNavigateUpLambda = onNavigateUpRecorder) + + val presenter = createMessagesPresenter( + timeline = FakeTimeline(getLatestEventIdResult = { Result.success(AN_EVENT_ID) }), + markAsFullyRead = markAsFullyReadUseCase, + navigator = navigator, + ) + presenter.testWithLifecycleOwner { + val initialState = awaitItem() + initialState.eventSink(MessagesEvents.MarkAsFullyReadAndExit) + + runCurrent() + + onNavigateUpRecorder.assertions().isCalledOnce() + + cancelAndIgnoreRemainingEvents() + } + } + private fun TestScope.createMessagesPresenter( coroutineDispatchers: CoroutineDispatchers = testCoroutineDispatchers(), + timeline: Timeline = FakeTimeline(), joinedRoom: FakeJoinedRoom = FakeJoinedRoom( baseRoom = FakeBaseRoom( canUserSendMessageResult = { _, _ -> Result.success(true) }, @@ -1248,10 +1313,9 @@ class MessagesPresenterTest { ).apply { givenRoomInfo(aRoomInfo(id = roomId, name = "")) }, - liveTimeline = FakeTimeline(), + liveTimeline = timeline, typingNoticeResult = { Result.success(Unit) }, ), - timeline: Timeline = joinedRoom.liveTimeline, navigator: FakeMessagesNavigator = FakeMessagesNavigator(), clipboardHelper: FakeClipboardHelper = FakeClipboardHelper(), analyticsService: FakeAnalyticsService = FakeAnalyticsService(), @@ -1270,6 +1334,7 @@ class MessagesPresenterTest { featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(), actionListEventSink: (ActionListEvents) -> Unit = {}, addRecentEmoji: AddRecentEmoji = AddRecentEmoji(FakeMatrixClient(), testCoroutineDispatchers()), + markAsFullyRead: MarkAsFullyRead = FakeMarkAsFullyRead(), ): MessagesPresenter { return MessagesPresenter( navigator = navigator, @@ -1298,6 +1363,8 @@ class MessagesPresenterTest { encryptionService = encryptionService, featureFlagService = featureFlagService, addRecentEmoji = addRecentEmoji, + markAsFullyRead = markAsFullyRead, + sessionCoroutineScope = backgroundScope, ) } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultMarkAsFullyReadTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultMarkAsFullyReadTest.kt index 6340ce56a5..e47b2b8cd2 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultMarkAsFullyReadTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/DefaultMarkAsFullyReadTest.kt @@ -9,12 +9,15 @@ package io.element.android.features.messages.impl.timeline -import io.element.android.libraries.matrix.api.timeline.ReceiptType +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.FakeMatrixClient -import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value +import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest @@ -22,34 +25,30 @@ import org.junit.Test class DefaultMarkAsFullyReadTest { @Test - fun `When room is not found, then no exception is thrown`() = runTest { + fun `When marking as read fails, no exception is thrown`() = runTest { val markAsFullyRead = DefaultMarkAsFullyRead( - FakeMatrixClient( - sessionCoroutineScope = backgroundScope, + matrixClient = FakeMatrixClient( + markRoomAsFullyReadResult = { _, _ -> Result.failure(IllegalStateException("Room not found")) }, ).apply { givenGetRoomResult(A_ROOM_ID, null) - } + }, + coroutineDispatchers = testCoroutineDispatchers(), ) - markAsFullyRead.invoke(A_ROOM_ID) + assertThat(markAsFullyRead.invoke(A_ROOM_ID, AN_EVENT_ID).isFailure).isTrue() runCurrent() } @Test - fun `When room is found, the expected method is invoked`() = runTest { - val markAsReadResult = lambdaRecorder> { Result.success(Unit) } - val baseRoom = FakeBaseRoom( - markAsReadResult = markAsReadResult - ) + fun `When marking as read is successful, the expected method is invoked`() = runTest { + val markAsFullyReadResult = lambdaRecorder> { _, _ -> Result.success(Unit) } val markAsFullyRead = DefaultMarkAsFullyRead( - FakeMatrixClient( - sessionCoroutineScope = backgroundScope, - ).apply { - givenGetRoomResult(A_ROOM_ID, baseRoom) - } + matrixClient = FakeMatrixClient( + markRoomAsFullyReadResult = markAsFullyReadResult, + ), + coroutineDispatchers = testCoroutineDispatchers(), ) - markAsFullyRead.invoke(A_ROOM_ID) + assertThat(markAsFullyRead.invoke(A_ROOM_ID, AN_EVENT_ID).isSuccess).isTrue() runCurrent() - markAsReadResult.assertions().isCalledOnce().with(value(ReceiptType.FULLY_READ)) - baseRoom.assertDestroyed() + markAsFullyReadResult.assertions().isCalledOnce().with(value(A_ROOM_ID), value(AN_EVENT_ID)) } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/FakeMarkAsFullyRead.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/FakeMarkAsFullyRead.kt index 895676a126..85e07bea69 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/FakeMarkAsFullyRead.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/FakeMarkAsFullyRead.kt @@ -7,13 +7,15 @@ package io.element.android.features.messages.impl.timeline +import io.element.android.libraries.core.extensions.runCatchingExceptions +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.tests.testutils.lambda.lambdaError class FakeMarkAsFullyRead( - private val invokeResult: (RoomId) -> Unit = { lambdaError() } + private val invokeResult: (RoomId, EventId) -> Unit = { _, _ -> lambdaError() }, ) : MarkAsFullyRead { - override fun invoke(roomId: RoomId) { - invokeResult(roomId) + override suspend fun invoke(roomId: RoomId, eventId: EventId): Result { + return runCatchingExceptions { invokeResult(roomId, eventId) } } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt index 8da614f67e..b264da5566 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt @@ -151,19 +151,21 @@ class TimelinePresenterTest { isSendPublicReadReceiptsEnabled: Boolean, expectedReceiptType: ReceiptType, ) = runTest(StandardTestDispatcher()) { + val markAsReadResult = lambdaRecorder> { Result.success(Unit) } + val sendReadReceiptLambda = lambdaRecorder> { _, _ -> Result.success(Unit) } val timeline = FakeTimeline( timelineItems = flowOf( listOf( MatrixTimelineItem.Event(A_UNIQUE_ID, anEventTimelineItem()) ) - ) + ), + markAsReadResult = markAsReadResult, + sendReadReceiptLambda = sendReadReceiptLambda, ) - val markAsReadResult = lambdaRecorder> { Result.success(Unit) } val room = FakeJoinedRoom( liveTimeline = timeline, baseRoom = FakeBaseRoom( canUserSendMessageResult = { _, _ -> Result.success(true) }, - markAsReadResult = markAsReadResult, ) ) val sessionPreferencesStore = InMemorySessionPreferencesStore(isSendPublicReadReceiptsEnabled = isSendPublicReadReceiptsEnabled) @@ -185,25 +187,6 @@ class TimelinePresenterTest { } } - @Test - fun `present - once presenter is disposed, room is marked as fully read`() = runTest { - val invokeResult = lambdaRecorder { } - val presenter = createTimelinePresenter( - room = FakeJoinedRoom( - baseRoom = FakeBaseRoom( - canUserSendMessageResult = { _, _ -> Result.success(true) }, - ) - ), - markAsFullyRead = FakeMarkAsFullyRead( - invokeResult = invokeResult, - ) - ) - presenter.test { - awaitFirstItem() - } - invokeResult.assertions().isCalledOnce().with(value(A_ROOM_ID)) - } - @Test fun `present - on scroll finished send read receipt if an event is before the index`() = runTest { val sendReadReceiptsLambda = lambdaRecorder { _: EventId, _: ReceiptType -> @@ -258,10 +241,10 @@ class TimelinePresenterTest { ) ) ) - ) - ).apply { - this.sendReadReceiptLambda = sendReadReceiptsLambda - } + ), + markAsReadResult = { Result.success(Unit) }, + sendReadReceiptLambda = sendReadReceiptsLambda, + ) val sessionPreferencesStore = InMemorySessionPreferencesStore(isSendPublicReadReceiptsEnabled = false) val presenter = createTimelinePresenter( timeline = timeline, @@ -349,7 +332,10 @@ class TimelinePresenterTest { @Test fun `present - covers newEventState scenarios`() = runTest { val timelineItems = MutableStateFlow(emptyList()) - val timeline = FakeTimeline(timelineItems = timelineItems) + val timeline = FakeTimeline( + timelineItems = timelineItems, + markAsReadResult = { Result.success(Unit) }, + ) val presenter = createTimelinePresenter(timeline) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -1039,7 +1025,6 @@ class TimelinePresenterTest { sendPollResponseAction: SendPollResponseAction = FakeSendPollResponseAction(), sessionPreferencesStore: InMemorySessionPreferencesStore = InMemorySessionPreferencesStore(), timelineItemIndexer: TimelineItemIndexer = TimelineItemIndexer(), - markAsFullyRead: MarkAsFullyRead = FakeMarkAsFullyRead(), featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(), ): TimelinePresenter { return TimelinePresenter( @@ -1057,7 +1042,6 @@ class TimelinePresenterTest { resolveVerifiedUserSendFailurePresenter = { aResolveVerifiedUserSendFailureState() }, typingNotificationPresenter = { aTypingNotificationState() }, roomCallStatePresenter = { aStandByCallState() }, - markAsFullyRead = markAsFullyRead, featureFlagService = featureFlagService, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/DelayedVisibility.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/DelayedVisibility.kt new file mode 100644 index 0000000000..e1617e0fd2 --- /dev/null +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/DelayedVisibility.kt @@ -0,0 +1,46 @@ +/* + * 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.designsystem.utils + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.movableContentOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.LocalInspectionMode +import kotlinx.coroutines.delay +import kotlin.time.Duration +import kotlin.time.Duration.Companion.milliseconds + +/** + * Displays the content of [block] after a delay of [duration]. + */ +@Composable +fun DelayedVisibility( + duration: Duration = 300.milliseconds, + block: @Composable () -> Unit, +) { + // Technically this shouldn't be needed because `LocalInspectionMode` won't change, but let's make the linter happy + val movableBlock = remember { movableContentOf { block() } } + if (LocalInspectionMode.current) { + // Just allow the contents to be displayed in the previews/screenshot tests + movableBlock() + } else { + var shouldDisplay by remember { mutableStateOf(false) } + LaunchedEffect(Unit) { + delay(duration) + shouldDisplay = true + } + AnimatedVisibility(shouldDisplay) { + movableBlock() + } + } +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index 5f116612b1..55a594f2cc 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.matrix.api import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.matrix.api.core.DeviceId +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.MatrixPatterns import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId @@ -34,6 +35,7 @@ import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.spaces.SpaceService import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion import io.element.android.libraries.matrix.api.sync.SyncService +import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.user.MatrixSearchUserResults import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.verification.SessionVerificationService @@ -183,6 +185,14 @@ interface MatrixClient { * Adds an emoji to the list of recent emoji reactions for this account. */ suspend fun addRecentEmoji(emoji: String): Result + + /** + * Marks the room with the provided [roomId] as read, sending a fully read receipt for [eventId]. + * + * This method should be used with caution as providing the [eventId] ourselves can result in incorrect read receipts. + * Use [Timeline.markAsRead] instead when possible. + */ + suspend fun markRoomAsFullyRead(roomId: RoomId, eventId: EventId): Result } /** diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt index 6a2871dc56..f6eda0ee5a 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/qrlogin/QrLoginException.kt @@ -16,7 +16,7 @@ sealed class QrLoginException : Exception() { data object OidcMetadataInvalid : QrLoginException() data object SlidingSyncNotAvailable : QrLoginException() data object OtherDeviceNotSignedIn : QrLoginException() - data object Unknown : QrLoginException() data object CheckCodeAlreadySent : QrLoginException() data object CheckCodeCannotBeSent : QrLoginException() + data object Unknown : QrLoginException() } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt index 2694191f89..1e82320d94 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsV import io.element.android.libraries.matrix.api.room.tombstone.PredecessorRoom import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.ReceiptType +import io.element.android.libraries.matrix.api.timeline.Timeline import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow @@ -180,6 +181,10 @@ interface BaseRoom : Closeable { /** * Mark the room as read by trying to attach an unthreaded read receipt to the latest room event. + * + * Note this will instantiate a new timeline, which is an expensive operation. + * Prefer using [Timeline.markAsRead] instead when possible. + * * @param receiptType The type of receipt to send. */ suspend fun markAsRead(receiptType: ReceiptType): Result diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt index ad526fa787..0306bd5fe2 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/Timeline.kt @@ -55,6 +55,7 @@ interface Timeline : AutoCloseable { val mode: Mode val membershipChangeEventReceived: Flow suspend fun sendReadReceipt(eventId: EventId, receiptType: ReceiptType): Result + suspend fun markAsRead(receiptType: ReceiptType): Result suspend fun paginate(direction: PaginationDirection): Result val backwardPaginationStatus: StateFlow @@ -227,4 +228,9 @@ interface Timeline : AutoCloseable { * pinned */ suspend fun unpinEvent(eventId: EventId): Result + + /** + * Get the latest event id of the timeline. + */ + suspend fun getLatestEventId(): Result } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 94a562c160..617e8e72e3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.DeviceId +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias @@ -713,6 +714,13 @@ class RustMatrixClient( } } + override suspend fun markRoomAsFullyRead(roomId: RoomId, eventId: EventId): Result = withContext(sessionDispatcher) { + runCatchingExceptions { + val room = innerClient.getRoom(roomId.value) ?: error("Could not fetch associated room") + room.markAsFullyReadUnchecked(eventId.value) + } + } + private suspend fun getCacheSize( includeCryptoDb: Boolean = false, ): Long = withContext(sessionDispatcher) { 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 baa9f85906..4622073950 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 @@ -473,6 +473,7 @@ class JoinedRustRoom( override fun destroy() { baseRoom.destroy() liveInnerTimeline.destroy() + Timber.d("Room $roomId destroyed") } private fun InnerTimeline.map( diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt index ba63cd2ef0..a488341060 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt @@ -159,6 +159,12 @@ class RustTimeline( } } + override suspend fun markAsRead(receiptType: ReceiptType): Result = withContext(dispatcher) { + runCatchingExceptions { + inner.markAsRead(receiptType.toRustReceiptType()) + } + } + private fun updatePaginationStatus(direction: Timeline.PaginationDirection, update: (Timeline.PaginationStatus) -> Timeline.PaginationStatus) { when (direction) { Timeline.PaginationDirection.BACKWARDS -> backwardPaginationStatus.getAndUpdate(update) @@ -586,6 +592,12 @@ class RustTimeline( } } + override suspend fun getLatestEventId(): Result = withContext(dispatcher) { + runCatchingExceptions { + inner.latestEventId()?.let(::EventId) + } + } + private suspend fun fetchDetailsForEvent(eventId: EventId): Result = withContext(dispatcher) { runCatchingExceptions { inner.fetchDetailsForEvent(eventId.value) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index f0e296ea5d..07dc8e9a9e 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.matrix.test import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.DeviceId +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias @@ -101,6 +102,7 @@ class FakeMatrixClient( private val getJoinedRoomIdsResult: () -> Result> = { Result.success(emptySet()) }, private val getRecentEmojisLambda: () -> Result> = { Result.success(emptyList()) }, private val addRecentEmojiLambda: (String) -> Result = { Result.success(Unit) }, + private val markRoomAsFullyReadResult: (RoomId, EventId) -> Result = { _, _ -> lambdaError() }, ) : MatrixClient { var setDisplayNameCalled: Boolean = false private set @@ -344,4 +346,8 @@ class FakeMatrixClient( override suspend fun getRecentEmojis(): Result> { return getRecentEmojisLambda() } + + override suspend fun markRoomAsFullyRead(roomId: RoomId, eventId: EventId): Result { + return markRoomAsFullyReadResult(roomId, eventId) + } } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimeline.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimeline.kt index 6ebd9f9f50..dfbe5d52ae 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimeline.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/timeline/FakeTimeline.kt @@ -49,6 +49,14 @@ class FakeTimeline( override val membershipChangeEventReceived: Flow = MutableSharedFlow(), private val cancelSendResult: (TransactionId) -> Result = { lambdaError() }, override val mode: Timeline.Mode = Timeline.Mode.Live, + private val markAsReadResult: (ReceiptType) -> Result = { lambdaError() }, + private val getLatestEventIdResult: () -> Result = { lambdaError() }, + var sendReadReceiptLambda: ( + eventId: EventId, + receiptType: ReceiptType, + ) -> Result = { _, _ -> + lambdaError() + } ) : Timeline { var sendMessageLambda: ( body: String, @@ -397,18 +405,15 @@ class FakeTimeline( ) } - var sendReadReceiptLambda: ( - eventId: EventId, - receiptType: ReceiptType, - ) -> Result = { _, _ -> - lambdaError() - } - override suspend fun sendReadReceipt( eventId: EventId, receiptType: ReceiptType, ): Result = sendReadReceiptLambda(eventId, receiptType) + override suspend fun markAsRead(receiptType: ReceiptType): Result { + return markAsReadResult(receiptType) + } + var paginateLambda: (direction: Timeline.PaginationDirection) -> Result = { Result.success(false) } @@ -431,6 +436,10 @@ class FakeTimeline( return unpinEventLambda(eventId) } + override suspend fun getLatestEventId(): Result { + return getLatestEventIdResult() + } + var closeCounter = 0 private set From f1c76c196fcb8a1cd12edc240e4ef4019acac162 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 13:04:26 +0100 Subject: [PATCH 245/898] Use KtLint version 1.7.1 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index b7662aeb56..00cac673af 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -58,7 +58,7 @@ allprojects { configure { // See https://github.com/pinterest/ktlint/releases/ // TODO Regularly check for new version here ^ - version.set("1.1.1") + version.set("1.7.1") android.set(true) ignoreFailures.set(false) enableExperimentalRules.set(true) From e22ecb68c3c077bb30b923c5cb41caaba6b02da6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 13:27:19 +0100 Subject: [PATCH 246/898] Fix "Backing property is only allowed when a matching property or function exists" --- .../android/libraries/architecture/AsyncDataKtTest.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt b/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt index 1551360da2..aa02561131 100644 --- a/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt +++ b/libraries/architecture/src/test/kotlin/io/element/android/libraries/architecture/AsyncDataKtTest.kt @@ -75,22 +75,21 @@ class AsyncDataKtTest { private class TestableMutableState( value: T ) : MutableState { - @Suppress("ktlint:standard:property-naming") - private val _deque = ArrayDeque(listOf(value)) + private val deque = ArrayDeque(listOf(value)) override var value: T - get() = _deque.last() + get() = deque.last() set(value) { - _deque.addLast(value) + deque.addLast(value) } /** * Returns the states that were set in the order they were set. */ - fun popFirst(): T = _deque.removeFirst() + fun popFirst(): T = deque.removeFirst() fun assertNoMoreValues() { - assertThat(_deque).isEmpty() + assertThat(deque).isEmpty() } override operator fun component1(): T = value From d091960a3e781ca17cc027693533b310a7cab370 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Oct 2025 13:32:48 +0100 Subject: [PATCH 247/898] fix(deps): update dependency io.sentry:sentry-android to v8.25.0 (#5629) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 671a98c0a8..2c132de97f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -211,7 +211,7 @@ color_picker = "io.mhssn:colorpicker:1.0.0" # Analytics posthog = "com.posthog:posthog-android:3.25.0" -sentry = "io.sentry:sentry-android:8.24.0" +sentry = "io.sentry:sentry-android:8.25.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.29.2" From 8bfb86683d8073f0eed7a27e5a95ffeefb326f16 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 13:29:33 +0100 Subject: [PATCH 248/898] Fix "Arrow is redundant when parameter list is empty" And other issues that ktlint now reports --- .../features/home/impl/HomeFlowNode.kt | 6 ++-- .../invite/impl/DefaultDeclineInviteTest.kt | 4 +-- .../reportroom/impl/DefaultReportRoomTest.kt | 4 +-- .../roomdetails/impl/RoomDetailsFlowNode.kt | 8 +++-- .../impl/root/RoomDirectoryPresenterTest.kt | 4 +-- .../components/media/WaveFormSamples.kt | 1 + .../libraries/maplibre/compose/MapLibreMap.kt | 5 +--- .../matrix/impl/timeline/RustTimeline.kt | 6 ++-- .../fake/FakeNotificationCreator.kt | 2 +- .../impl/DefaultVoiceMessagePlayerTest.kt | 30 ++++++++++++------- 10 files changed, 41 insertions(+), 29 deletions(-) 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 94f243b634..cb205960fd 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 @@ -87,8 +87,10 @@ class HomeFlowNode( analyticsService.screen(MobileScreen(screenName = MobileScreen.ScreenName.Home)) } ) - whenChildAttached { commonLifecycle: Lifecycle, - changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy -> + whenChildAttached { + commonLifecycle: Lifecycle, + changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy, + -> commonLifecycle.coroutineScope.launch { changeRoomMemberRolesNode.waitForRoleChanged() withContext(NonCancellable) { diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/DefaultDeclineInviteTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/DefaultDeclineInviteTest.kt index cb07bd5191..d740d6065c 100644 --- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/DefaultDeclineInviteTest.kt +++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/DefaultDeclineInviteTest.kt @@ -34,14 +34,14 @@ class DefaultDeclineInviteTest { private val notificationCleaner = FakeNotificationCleaner(clearMembershipNotificationForRoomLambda = clearMembershipNotificationForRoomLambda) - private val successLeaveRoomLambda = lambdaRecorder> { -> Result.success(Unit) } + private val successLeaveRoomLambda = lambdaRecorder> { Result.success(Unit) } private val successIgnoreUserLambda = lambdaRecorder> { _ -> Result.success(Unit) } private val successReportRoomLambda = lambdaRecorder> { _ -> Result.success(Unit) } private val failureLeaveRoomLambda = - lambdaRecorder> { -> Result.failure(Exception("Leave room error")) } + lambdaRecorder> { Result.failure(Exception("Leave room error")) } private val failureIgnoreUserLambda = lambdaRecorder> { _ -> Result.failure(Exception("Ignore user error")) } private val failureReportRoomLambda = diff --git a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomTest.kt b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomTest.kt index fc410ab08f..c196d7a29e 100644 --- a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomTest.kt +++ b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomTest.kt @@ -19,12 +19,12 @@ import org.junit.Test class DefaultReportRoomTest { private val roomId = A_ROOM_ID - private val successLeaveRoomLambda = lambdaRecorder> { -> Result.success(Unit) } + private val successLeaveRoomLambda = lambdaRecorder> { Result.success(Unit) } private val successReportRoomLambda = lambdaRecorder> { _ -> Result.success(Unit) } private val failureLeaveRoomLambda = - lambdaRecorder> { -> Result.failure(Exception("Leave room error")) } + lambdaRecorder> { Result.failure(Exception("Leave room error")) } private val failureReportRoomLambda = lambdaRecorder> { _ -> Result.failure(Exception("Report room error")) } 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 a72f0394b4..b0540626b9 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 @@ -148,9 +148,11 @@ class RoomDetailsFlowNode( override fun onBuilt() { super.onBuilt() - whenChildrenAttached { commonLifecycle: Lifecycle, - roomDetailsNode: RoomDetailsNode, - changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy -> + whenChildrenAttached { + commonLifecycle: Lifecycle, + roomDetailsNode: RoomDetailsNode, + changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy, + -> commonLifecycle.coroutineScope.launch { changeRoomMemberRolesNode.waitForRoleChanged() withContext(NonCancellable) { diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt index 1e450297ae..eedfe03b02 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenterTest.kt @@ -105,9 +105,7 @@ class RoomDirectoryPresenterTest { @Test fun `present - emit load more event`() = runTest { - val loadMoreLambda = lambdaRecorder { -> - Result.success(Unit) - } + val loadMoreLambda = lambdaRecorder> { Result.success(Unit) } val roomDirectoryList = FakeRoomDirectoryList(loadMoreLambda = loadMoreLambda) val roomDirectoryService = FakeRoomDirectoryService { roomDirectoryList } val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt index 6fbb217392..18efa2d3f3 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt @@ -14,6 +14,7 @@ import kotlinx.collections.immutable.toPersistentList object WaveFormSamples { val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList() + @Suppress("ktlint:standard:argument-list-wrapping") val realisticWaveForm = persistentListOf( 0.000f, 0.000f, 0.000f, 0.003f, 0.354f, 0.353f, 0.365f, 0.790f, 0.787f, 0.167f, diff --git a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapLibreMap.kt b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapLibreMap.kt index f1ef0f0459..478c7db499 100644 --- a/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapLibreMap.kt +++ b/libraries/maplibre-compose/src/main/kotlin/io/element/android/libraries/maplibre/compose/MapLibreMap.kt @@ -71,10 +71,7 @@ public fun MapLibreMap( uiSettings: MapUiSettings = DefaultMapUiSettings, symbolManagerSettings: MapSymbolManagerSettings = DefaultMapSymbolManagerSettings, locationSettings: MapLocationSettings = DefaultMapLocationSettings, - content: ( - @Composable @MapLibreMapComposable - () -> Unit - )? = null, + content: (@Composable @MapLibreMapComposable () -> Unit)? = null, ) { // When in preview, early return a Box with the received modifier preserving layout if (LocalInspectionMode.current) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt index a488341060..ecf37dd9bf 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt @@ -207,10 +207,12 @@ class RustTimeline( backwardPaginationStatus, forwardPaginationStatus, joinedRoom.roomInfoFlow.map { it.creators to it.isDm }.distinctUntilChanged(), - ) { timelineItems, + ) { + timelineItems, backwardPaginationStatus, forwardPaginationStatus, - (roomCreators, isDm) -> + (roomCreators, isDm), + -> withContext(dispatcher) { timelineItems .let { items -> diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt index 491b0bac33..1cc4468b15 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt @@ -34,7 +34,7 @@ class FakeNotificationCreator( var createFallbackNotificationResult: LambdaOneParamRecorder = lambdaRecorder { _ -> A_NOTIFICATION }, var createSummaryListNotificationResult: LambdaFourParamsRecorder = lambdaRecorder { _, _, _, _ -> A_NOTIFICATION }, - var createDiagnosticNotificationResult: LambdaNoParamRecorder = lambdaRecorder { -> A_NOTIFICATION }, + var createDiagnosticNotificationResult: LambdaNoParamRecorder = lambdaRecorder { A_NOTIFICATION }, ) : NotificationCreator { override suspend fun createMessagesListNotification( roomInfo: RoomEventGroupInfo, diff --git a/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePlayerTest.kt b/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePlayerTest.kt index cd8a3f6c6b..a3e2938734 100644 --- a/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePlayerTest.kt +++ b/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/DefaultVoiceMessagePlayerTest.kt @@ -114,7 +114,8 @@ class DefaultVoiceMessagePlayerTest { assertThat(player1.prepare().isSuccess).isTrue() matchReadyState(1_000L) player1.play() - awaitItem().let { // it plays until the end. + awaitItem().let { + // it plays until the end. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() @@ -127,14 +128,16 @@ class DefaultVoiceMessagePlayerTest { player2.state.test { matchInitialState() assertThat(player2.prepare().isSuccess).isTrue() - awaitItem().let { // Additional spurious state due to MediaPlayer owner change. + awaitItem().let { + // Additional spurious state due to MediaPlayer owner change. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() assertThat(it.currentPosition).isEqualTo(1000) assertThat(it.duration).isEqualTo(1000) } - awaitItem().let { // Additional spurious state due to MediaPlayer owner change. + awaitItem().let { + // Additional spurious state due to MediaPlayer owner change. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isFalse() @@ -143,7 +146,8 @@ class DefaultVoiceMessagePlayerTest { } matchReadyState(1_000L) player2.play() - awaitItem().let { // it plays until the end. + awaitItem().let { + // it plays until the end. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() @@ -154,7 +158,8 @@ class DefaultVoiceMessagePlayerTest { // Play player1 again. player1.state.test { - awaitItem().let { // Last previous state/ + awaitItem().let { + // Last previous state/ assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() @@ -162,7 +167,8 @@ class DefaultVoiceMessagePlayerTest { assertThat(it.duration).isEqualTo(1000) } assertThat(player1.prepare().isSuccess).isTrue() - awaitItem().let { // Additional spurious state due to MediaPlayer owner change. + awaitItem().let { + // Additional spurious state due to MediaPlayer owner change. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isFalse() @@ -171,7 +177,8 @@ class DefaultVoiceMessagePlayerTest { } matchReadyState(1_000L) player1.play() - awaitItem().let { // it played again until the end. + awaitItem().let { + // it played again until the end. assertThat(it.isReady).isFalse() assertThat(it.isPlaying).isFalse() assertThat(it.isEnded).isTrue() @@ -189,7 +196,8 @@ class DefaultVoiceMessagePlayerTest { assertThat(player.prepare().isSuccess).isTrue() matchReadyState() player.play() - skipItems(1) // skip play state + // skip play state + skipItems(1) player.pause() awaitItem().let { assertThat(it.isPlaying).isFalse() @@ -206,9 +214,11 @@ class DefaultVoiceMessagePlayerTest { assertThat(player.prepare().isSuccess).isTrue() matchReadyState() player.play() - skipItems(1) // skip play state + // skip play state + skipItems(1) player.pause() - skipItems(1) // skip pause state + // skip pause state + skipItems(1) player.play() awaitItem().let { assertThat(it.isPlaying).isTrue() From 16c27926afce3bd0e4836e1f169678d0c2aece02 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 13:38:54 +0100 Subject: [PATCH 249/898] Ignore some ktlint Rules (too many issues(?) to fix and not urgent) --- .editorconfig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 2ab3cbeae7..9eaea2e023 100644 --- a/.editorconfig +++ b/.editorconfig @@ -26,7 +26,11 @@ ktlint_standard_annotation = disabled ktlint_standard_parameter-list-wrapping = disabled ktlint_standard_indent = disabled ktlint_standard_blank-line-before-declaration = disabled -ktlint_function_naming_ignore_when_annotated_with=Composable +ktlint_function_naming_ignore_when_annotated_with = Composable +# Added when upgrading to 1.7.1 +ktlint_standard_function-expression-body = disabled +ktlint_standard_chain-method-continuation = disabled +ktlint_standard_class-signature = disabled [*.java] ij_java_align_consecutive_assignments = false From fb9b373d98d15fccdd06c5e5289a6f85fe9b76e8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 14:25:56 +0100 Subject: [PATCH 250/898] Let Renovate upgrade KtLint version. And move detekt version to quality section. --- build.gradle.kts | 8 +++++--- gradle/libs.versions.toml | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 00cac673af..128852fba6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.accessors.dm.LibrariesForLibs + /* * Copyright 2022-2024 New Vector Ltd. * @@ -27,6 +29,8 @@ tasks.register("clean").configure { delete(rootProject.layout.buildDirectory) } +private val ktLintVersion = the().versions.ktlint.get() + allprojects { // Detekt apply { @@ -56,9 +60,7 @@ allprojects { // See https://github.com/JLLeitschuh/ktlint-gradle#configuration configure { - // See https://github.com/pinterest/ktlint/releases/ - // TODO Regularly check for new version here ^ - version.set("1.7.1") + version = ktLintVersion android.set(true) ignoreFailures.set(false) enableExperimentalRules.set(true) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 671a98c0a8..43b5890cd1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -40,7 +40,6 @@ datetime = "0.7.1" serialization_json = "1.9.0" #other -detekt = "1.23.8" coil = "3.3.0" showkase = "1.0.5" appyx = "1.7.1" @@ -59,6 +58,9 @@ metro = "0.7.2" autoservice = "1.1.1" # quality +detekt = "1.23.8" +# See https://github.com/pinterest/ktlint/releases/ +ktlint = "1.7.1" androidx-test-ext-junit = "1.3.0" kover = "0.9.1" @@ -148,6 +150,10 @@ network_retrofit_bom = "com.squareup.retrofit2:retrofit-bom:3.0.0" network_retrofit = { module = "com.squareup.retrofit2:retrofit" } network_retrofit_converter_serialization = { module = "com.squareup.retrofit2:converter-kotlinx-serialization" } +# Quality +# Reference ktlint-cli so that Renovate can check if a new version is available. +ktlint-cli = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" } + # Test test_core = { module = "androidx.test:core", version.ref = "test_core" } test_corektx = { module = "androidx.test:core-ktx", version.ref = "test_core" } From 214a85561678ae5a1f037ecd246d5c2b2063a749 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 14:31:00 +0100 Subject: [PATCH 251/898] Remove exclusion, ktlint is now able to handle Kotlin context parameter. --- libraries/troubleshoot/test/build.gradle.kts | 10 ---------- .../android/libraries/troubleshoot/test/Utils.kt | 2 -- 2 files changed, 12 deletions(-) diff --git a/libraries/troubleshoot/test/build.gradle.kts b/libraries/troubleshoot/test/build.gradle.kts index 830eb5d6b0..8321ea5b4f 100644 --- a/libraries/troubleshoot/test/build.gradle.kts +++ b/libraries/troubleshoot/test/build.gradle.kts @@ -19,13 +19,3 @@ dependencies { implementation(libs.test.core) implementation(libs.test.turbine) } - -ktlint { - filter { - exclude { element -> - val path = element.file.path - // Exclude this file, that ktlint cannot parse. - path.contains("libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt") - } - } -} diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt index 77034da584..2a8ce30f47 100644 --- a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt @@ -5,8 +5,6 @@ * Please see LICENSE files in the repository root for full details. */ -@file:Suppress("UnusedImports") - package io.element.android.libraries.troubleshoot.test import app.cash.turbine.TurbineTestContext From e17d731ff590f5f038ac43c7d9daf1ce2187a923 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 14:34:22 +0100 Subject: [PATCH 252/898] Kotlin way --- build.gradle.kts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 128852fba6..a3fa94e67b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -61,11 +61,11 @@ allprojects { // See https://github.com/JLLeitschuh/ktlint-gradle#configuration configure { version = ktLintVersion - android.set(true) - ignoreFailures.set(false) - enableExperimentalRules.set(true) + android = true + ignoreFailures = false + enableExperimentalRules = true // display the corresponding rule - verbose.set(true) + verbose = true reporters { reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.PLAIN) // To have XML report for Danger From 0f939f5eff2835c1edd2583768093774dc8db2bc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 15:01:14 +0100 Subject: [PATCH 253/898] Sadly detekt still needs this. It will be fixed in detekt 2.0.0 --- .../io/element/android/libraries/troubleshoot/test/Utils.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt index 2a8ce30f47..77034da584 100644 --- a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/Utils.kt @@ -5,6 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ +@file:Suppress("UnusedImports") + package io.element.android.libraries.troubleshoot.test import app.cash.turbine.TurbineTestContext From 7facc40771a89ef5dc23015039d5b00f2448d954 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 30 Oct 2025 16:15:00 +0100 Subject: [PATCH 254/898] Split notifications for messages in threads (#5595) * Separate thread notifications into their own notifications when the feature flag is enabled. Otherwise, set the `threadId` to null so it'll behave as usual. It's done this way to avoid having to inject `FeatureFlagService` in several places. * Add permalink navigation to threads from notifications, focusing on the latest event in the list of messages of the notification tapped * Fix redactions in threads * Clear notifications for a thread when visiting it * Fix opening a thread happening twice, first because of the `openThreadId` value, then because of the `focusedEventId` one * Make opening a room through a notification also focus on the latest event * Add helper `NotificationCreator.messageTag` function * Remove unused `ROOM_CALL_NOTIFICATION_ID`: `FOREGROUND_SERVICE_NOTIFICATION_ID`+ `ForegroundServiceType` is used instead * Simplify `DefaultDeepLinkCreator` * Make sure the main timeline focuses on the thread root id too when navigating to a thread * Handle "Mark as read" action for thread notification, using `timeline.markAsRead` * Log failures to mark rooms as read using the notification action --------- Co-authored-by: Benoit Marty --- .../android/x/intent/DefaultIntentProvider.kt | 4 +- .../x/intent/DefaultIntentProviderTest.kt | 10 +- .../android/appnav/LoggedInFlowNode.kt | 12 +- .../io/element/android/appnav/RootFlowNode.kt | 30 +++- .../android/appnav/room/RoomFlowNode.kt | 7 + .../appnav/room/RoomNavigationTarget.kt | 4 +- .../appnav/room/joined/JoinedRoomFlowNode.kt | 7 + .../room/joined/JoinedRoomLoadedFlowNode.kt | 14 +- .../appnav/intent/IntentResolverTest.kt | 57 ++++++++ .../messages/api/MessagesEntryPoint.kt | 9 +- features/messages/impl/build.gradle.kts | 1 + .../messages/impl/MessagesFlowNode.kt | 26 +++- .../features/messages/impl/MessagesNode.kt | 9 +- .../impl/threads/ThreadedMessagesNode.kt | 8 ++ .../impl/timeline/TimelinePresenter.kt | 136 +++++++++--------- .../impl/DefaultMessagesEntryPointTest.kt | 2 +- .../impl/timeline/TimelinePresenterTest.kt | 18 ++- .../libraries/deeplink/api/DeepLinkCreator.kt | 3 +- .../libraries/deeplink/api/DeeplinkData.kt | 5 +- .../deeplink/impl/DefaultDeepLinkCreator.kt | 24 ++-- .../deeplink/impl/DefaultDeeplinkParser.kt | 6 +- .../impl/DefaultDeepLinkCreatorTest.kt | 11 +- .../impl/DefaultDeeplinkParserTest.kt | 13 +- .../matrix/api/permalink/PermalinkData.kt | 2 + .../impl/notification/NotificationMapper.kt | 4 +- .../api/notifications/NotificationCleaner.kt | 2 + .../push/impl/intent/IntentProvider.kt | 2 + .../ActiveNotificationsProvider.kt | 22 ++- .../DefaultNotifiableEventResolver.kt | 5 +- .../DefaultNotificationDrawerManager.kt | 29 ++-- .../NotificationBroadcastReceiverHandler.kt | 34 ++++- .../notifications/NotificationDataFactory.kt | 47 +++--- .../notifications/NotificationRenderer.kt | 7 +- .../notifications/RoomGroupMessageCreator.kt | 5 +- .../DefaultNotificationConversationService.kt | 2 +- .../factories/NotificationCreator.kt | 75 ++++++---- .../factories/PendingIntentFactory.kt | 15 +- .../action/MarkAsReadActionFactory.kt | 6 +- .../push/impl/push/DefaultPushHandler.kt | 4 +- .../push/impl/push/OnRedactedEventReceived.kt | 95 ++++++------ .../DefaultActiveNotificationsProviderTest.kt | 32 ++++- .../DefaultBaseRoomGroupMessageCreatorTest.kt | 6 + .../DefaultNotifiableEventResolverTest.kt | 4 +- .../DefaultNotificationDrawerManagerTest.kt | 15 +- .../DefaultSummaryGroupMessageCreatorTest.kt | 1 + ...otificationBroadcastReceiverHandlerTest.kt | 7 +- .../NotificationDataFactoryTest.kt | 8 +- .../notifications/NotificationRendererTest.kt | 2 +- .../DefaultNotificationCreatorTest.kt | 5 +- .../factories/FakeIntentProvider.kt | 3 +- .../fake/FakeActiveNotificationsProvider.kt | 12 +- .../fake/FakeRoomGroupMessageCreator.kt | 12 +- .../DefaultOnRedactedEventReceivedTest.kt | 99 +++++++++++-- .../impl/push/FakeOnRedactedEventReceived.kt | 2 +- .../notifications/FakeNotificationCleaner.kt | 6 + 55 files changed, 702 insertions(+), 284 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt index 92290a7c55..015d5cbf9a 100644 --- a/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt +++ b/app/src/main/kotlin/io/element/android/x/intent/DefaultIntentProvider.kt @@ -14,6 +14,7 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.deeplink.api.DeepLinkCreator import io.element.android.libraries.di.annotations.ApplicationContext +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @@ -29,10 +30,11 @@ class DefaultIntentProvider( sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?, + eventId: EventId?, ): Intent { return Intent(context, MainActivity::class.java).apply { action = Intent.ACTION_VIEW - data = deepLinkCreator.create(sessionId, roomId, threadId).toUri() + data = deepLinkCreator.create(sessionId, roomId, threadId, eventId).toUri() } } } diff --git a/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt b/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt index 9d6d9d4320..97134d2160 100644 --- a/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt +++ b/app/src/test/kotlin/io/element/android/x/intent/DefaultIntentProviderTest.kt @@ -13,9 +13,11 @@ import android.content.Context import android.content.Intent import com.google.common.truth.Truth.assertThat import io.element.android.libraries.deeplink.api.DeepLinkCreator +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId +import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID @@ -31,14 +33,15 @@ import org.robolectric.RuntimeEnvironment class DefaultIntentProviderTest { @Test fun `test getViewRoomIntent with data`() { - val deepLinkCreator = lambdaRecorder { _, _, _ -> "deepLinkCreatorResult" } + val deepLinkCreator = lambdaRecorder { _, _, _, _ -> "deepLinkCreatorResult" } val sut = createDefaultIntentProvider( - deepLinkCreator = { sessionId, roomId, threadId -> deepLinkCreator.invoke(sessionId, roomId, threadId) }, + deepLinkCreator = { sessionId, roomId, threadId, eventId -> deepLinkCreator.invoke(sessionId, roomId, threadId, eventId) }, ) val result = sut.getViewRoomIntent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, threadId = A_THREAD_ID, + eventId = AN_EVENT_ID, ) result.commonAssertions() assertThat(result.data.toString()).isEqualTo("deepLinkCreatorResult") @@ -46,11 +49,12 @@ class DefaultIntentProviderTest { value(A_SESSION_ID), value(A_ROOM_ID), value(A_THREAD_ID), + value(AN_EVENT_ID), ) } private fun createDefaultIntentProvider( - deepLinkCreator: DeepLinkCreator = DeepLinkCreator { _, _, _ -> "" }, + deepLinkCreator: DeepLinkCreator = DeepLinkCreator { _, _, _, _ -> "" }, ): DefaultIntentProvider { return DefaultIntentProvider( context = RuntimeEnvironment.getApplication() as Context, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index da09add2dc..090ed70fe2 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -68,6 +68,7 @@ import io.element.android.features.verifysession.api.IncomingVerificationEntryPo 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.architecture.waitForChildAttached import io.element.android.libraries.architecture.waitForNavTargetAttached import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.theme.ElementThemeApp @@ -496,7 +497,7 @@ class LoggedInFlowNode( trigger: JoinedRoom.Trigger? = null, eventId: EventId? = null, clearBackstack: Boolean, - ) { + ): RoomFlowNode { waitForNavTargetAttached { navTarget -> navTarget is NavTarget.Home } @@ -509,6 +510,15 @@ class LoggedInFlowNode( ) backstack.accept(AttachRoomOperation(roomNavTarget, clearBackstack)) } + + // If we don't do this check, we might be returning while a previous node with the same type is still displayed + // This means we may attach some new nodes to that one, which will be quickly replaced by the one instantiated above + return waitForChildAttached { + it is NavTarget.Room && + it.roomIdOrAlias == roomIdOrAlias && + it.initialElement is RoomNavigationTarget.Root && + it.initialElement.eventId == eventId + } } suspend fun attachUser(userId: UserId) { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index 6d635df840..dc4e169d53 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -31,6 +31,7 @@ import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.MatrixSessionCache import io.element.android.appnav.intent.IntentResolver import io.element.android.appnav.intent.ResolvedIntent +import io.element.android.appnav.room.RoomFlowNode import io.element.android.appnav.root.RootNavStateFlowFactory import io.element.android.appnav.root.RootPresenter import io.element.android.appnav.root.RootView @@ -49,7 +50,10 @@ import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.deeplink.api.DeeplinkData import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId +import io.element.android.libraries.matrix.api.core.asEventId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.oidc.api.OidcAction @@ -388,13 +392,19 @@ class RootFlowNode( is PermalinkData.FallbackLink -> Unit is PermalinkData.RoomEmailInviteLink -> Unit is PermalinkData.RoomLink -> { + // If there is a thread id, focus on it in the main timeline + val focusedEventId = if (permalinkData.threadId != null) { + permalinkData.threadId?.asEventId() + } else { + permalinkData.eventId + } attachRoom( roomIdOrAlias = permalinkData.roomIdOrAlias, trigger = JoinedRoom.Trigger.MobilePermalink, serverNames = permalinkData.viaParameters, - eventId = permalinkData.eventId, + eventId = focusedEventId, clearBackstack = true - ) + ).maybeAttachThread(permalinkData.threadId, permalinkData.eventId) } is PermalinkData.UserLink -> { attachUser(permalinkData.userId) @@ -402,12 +412,24 @@ class RootFlowNode( } } + private suspend fun RoomFlowNode.maybeAttachThread(threadId: ThreadId?, focusedEventId: EventId?) { + if (threadId != null) { + attachThread(threadId, focusedEventId) + } + } + private suspend fun navigateTo(deeplinkData: DeeplinkData) { Timber.d("Navigating to $deeplinkData") - attachSession(deeplinkData.sessionId).apply { + attachSession(deeplinkData.sessionId).let { loggedInFlowNode -> when (deeplinkData) { is DeeplinkData.Root -> Unit // The room list will always be shown, observing FtueState - is DeeplinkData.Room -> attachRoom(deeplinkData.roomId.toRoomIdOrAlias(), clearBackstack = true) + is DeeplinkData.Room -> { + loggedInFlowNode.attachRoom( + roomIdOrAlias = deeplinkData.roomId.toRoomIdOrAlias(), + eventId = if (deeplinkData.threadId != null) deeplinkData.threadId?.asEventId() else deeplinkData.eventId, + clearBackstack = true, + ).maybeAttachThread(deeplinkData.threadId, deeplinkData.eventId) + } } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 64bf4b2fd2..87713ad38e 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -39,9 +39,11 @@ import io.element.android.libraries.architecture.inputs import io.element.android.libraries.core.coroutine.withPreviousValue import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.room.CurrentUserMembership import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias @@ -211,6 +213,11 @@ class RoomFlowNode( } } + suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) { + waitForChildAttached() + .attachThread(threadId, focusedEventId) + } + private fun loadingNode(buildContext: BuildContext) = node(buildContext) { modifier -> LoadingRoomNodeView( state = LoadingRoomState.Loading, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt index d4b97d100a..60cac6b235 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomNavigationTarget.kt @@ -13,7 +13,9 @@ import kotlinx.parcelize.Parcelize sealed interface RoomNavigationTarget : Parcelable { @Parcelize - data class Root(val eventId: EventId? = null) : RoomNavigationTarget + data class Root( + val eventId: EventId? = null, + ) : RoomNavigationTarget @Parcelize data object Details : RoomNavigationTarget diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt index 5874145377..96e39926fc 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomFlowNode.kt @@ -34,7 +34,9 @@ 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.SessionScope +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.ui.room.LoadingRoomState import io.element.android.libraries.matrix.ui.room.LoadingRoomStateFlowFactory import kotlinx.coroutines.flow.distinctUntilChanged @@ -121,6 +123,11 @@ class JoinedRoomFlowNode( ) } + suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) { + waitForChildAttached() + .attachThread(threadId, focusedEventId) + } + @Composable override fun View(modifier: Modifier) { BackstackView( diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 8b0cca900a..a4e4540b92 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -25,18 +25,21 @@ import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint +import io.element.android.features.messages.api.MessagesEntryPointNode import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.inputs +import io.element.android.libraries.architecture.waitForChildAttached import io.element.android.libraries.di.DependencyInjectionGraphOwner import io.element.android.libraries.di.SessionScope import io.element.android.libraries.di.annotations.SessionCoroutineScope import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -240,7 +243,9 @@ class JoinedRoomLoadedFlowNode( data object Space : NavTarget @Parcelize - data class Messages(val focusedEventId: EventId? = null) : NavTarget + data class Messages( + val focusedEventId: EventId? = null, + ) : NavTarget @Parcelize data object RoomDetails : NavTarget @@ -258,6 +263,13 @@ class JoinedRoomLoadedFlowNode( data object RoomNotificationSettings : NavTarget } + suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) { + val messageNode = waitForChildAttached { navTarget -> + navTarget is NavTarget.Messages + } + (messageNode as? MessagesEntryPointNode)?.attachThread(threadId, focusedEventId) + } + @Composable override fun View(modifier: Modifier) { BackstackView() diff --git a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt index def1f33253..642dc16ce9 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt @@ -17,6 +17,7 @@ import io.element.android.features.login.test.FakeLoginIntentResolver import io.element.android.libraries.deeplink.api.DeeplinkData import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData +import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID @@ -67,6 +68,7 @@ class IntentResolverTest { sessionId = A_SESSION_ID, roomId = A_ROOM_ID, threadId = null, + eventId = null, ) ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { @@ -79,6 +81,7 @@ class IntentResolverTest { sessionId = A_SESSION_ID, roomId = A_ROOM_ID, threadId = null, + eventId = null, ) ) ) @@ -91,6 +94,7 @@ class IntentResolverTest { sessionId = A_SESSION_ID, roomId = A_ROOM_ID, threadId = A_THREAD_ID, + eventId = null, ) ) val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { @@ -103,6 +107,59 @@ class IntentResolverTest { sessionId = A_SESSION_ID, roomId = A_ROOM_ID, threadId = A_THREAD_ID, + eventId = null, + ) + ) + ) + } + + @Test + fun `test resolve navigation intent event`() { + val sut = createIntentResolver( + deeplinkParserResult = DeeplinkData.Room( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + threadId = null, + eventId = AN_EVENT_ID, + ) + ) + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_VIEW + } + val result = sut.resolve(intent) + assertThat(result).isEqualTo( + ResolvedIntent.Navigation( + deeplinkData = DeeplinkData.Room( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + threadId = null, + eventId = AN_EVENT_ID, + ) + ) + ) + } + + @Test + fun `test resolve navigation intent thread and event`() { + val sut = createIntentResolver( + deeplinkParserResult = DeeplinkData.Room( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + threadId = A_THREAD_ID, + eventId = AN_EVENT_ID, + ) + ) + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_VIEW + } + val result = sut.resolve(intent) + assertThat(result).isEqualTo( + ResolvedIntent.Navigation( + deeplinkData = DeeplinkData.Room( + sessionId = A_SESSION_ID, + roomId = A_ROOM_ID, + threadId = A_THREAD_ID, + eventId = AN_EVENT_ID, ) ) ) diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 8478a57940..1d689663ee 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -15,6 +15,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import kotlinx.parcelize.Parcelize @@ -22,7 +23,9 @@ import kotlinx.parcelize.Parcelize interface MessagesEntryPoint : FeatureEntryPoint { sealed interface InitialTarget : Parcelable { @Parcelize - data class Messages(val focusedEventId: EventId?) : InitialTarget + data class Messages( + val focusedEventId: EventId?, + ) : InitialTarget @Parcelize data object PinnedMessages : InitialTarget @@ -46,3 +49,7 @@ interface MessagesEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder } + +interface MessagesEntryPointNode { + suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) +} diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index ee2d7f48b0..7c4230e603 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -58,6 +58,7 @@ dependencies { implementation(projects.libraries.testtags) implementation(projects.features.networkmonitor.api) implementation(projects.services.analytics.compose) + implementation(projects.services.appnavstate.api) implementation(projects.services.toolbox.api) implementation(libs.coil.compose) implementation(libs.datetime) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 8807dd77cb..73aad6f7de 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -33,6 +33,7 @@ import io.element.android.features.location.api.LocationService import io.element.android.features.location.api.SendLocationEntryPoint import io.element.android.features.location.api.ShowLocationEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint +import io.element.android.features.messages.api.MessagesEntryPointNode import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewNode import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider @@ -87,10 +88,12 @@ import io.element.android.libraries.textcomposer.mentions.MentionSpanUpdater import io.element.android.services.analytics.api.AnalyticsService import io.element.android.services.analyticsproviders.api.trackers.captureInteraction import kotlinx.collections.immutable.ImmutableList +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext import kotlinx.parcelize.Parcelize +import kotlin.time.Duration.Companion.milliseconds @ContributesNode(RoomScope::class) @AssistedInject @@ -126,8 +129,9 @@ class MessagesFlowNode( savedStateMap = buildContext.savedStateMap, ), buildContext = buildContext, - plugins = plugins -) { + plugins = plugins, +), + MessagesEntryPointNode { sealed interface NavTarget : Parcelable { @Parcelize data class Messages(val focusedEventId: EventId?) : NavTarget @@ -175,7 +179,7 @@ class MessagesFlowNode( data object KnockRequestsList : NavTarget @Parcelize - data class OpenThread(val threadRootId: ThreadId, val focusedEventId: EventId?) : NavTarget + data class Thread(val threadRootId: ThreadId, val focusedEventId: EventId?) : NavTarget } private val callbacks = plugins() @@ -287,7 +291,7 @@ class MessagesFlowNode( } override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { - backstack.push(NavTarget.OpenThread(threadRootId, focusedEventId)) + backstack.push(NavTarget.Thread(threadRootId, focusedEventId)) } } val inputs = MessagesNode.Inputs(focusedEventId = navTarget.focusedEventId) @@ -420,7 +424,7 @@ class MessagesFlowNode( NavTarget.KnockRequestsList -> { knockRequestsListEntryPoint.createNode(this, buildContext) } - is NavTarget.OpenThread -> { + is NavTarget.Thread -> { val inputs = ThreadedMessagesNode.Inputs( threadRootEventId = navTarget.threadRootId, focusedEventId = navTarget.focusedEventId, @@ -485,7 +489,7 @@ class MessagesFlowNode( } override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { - backstack.push(NavTarget.OpenThread(threadRootId, focusedEventId)) + backstack.push(NavTarget.Thread(threadRootId, focusedEventId)) } } createNode(buildContext, listOf(inputs, callback)) @@ -603,6 +607,16 @@ class MessagesFlowNode( ) } + override suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) { + // Wait until we have the UI for the main timeline attached + waitForChildAttached() + // Give some time for the items in the main timeline to be received, otherwise loading the focused thread root id won't work + // (look at TimelineItemIndexer and firstProcessLatch for more info) + delay(10.milliseconds) + // Then push the new threads screen on top + backstack.push(NavTarget.Thread(threadId, focusedEventId)) + } + @Composable override fun View(modifier: Modifier) { mentionSpanTheme.updateStyles() diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index 3c91b97a40..e0e3e88891 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -337,12 +337,11 @@ class MessagesNode( var focusedEventId by rememberSaveable { mutableStateOf(inputs.focusedEventId) } - LaunchedEffect(Unit) { - focusedEventId?.also { eventId -> - state.timelineState.eventSink(TimelineEvents.FocusOnEvent(eventId)) + LaunchedEffect(focusedEventId) { + if (focusedEventId != null) { + state.timelineState.eventSink(TimelineEvents.FocusOnEvent(focusedEventId!!)) + focusedEventId = null } - // Reset the focused event id to null to avoid refocusing when restoring node. - focusedEventId = null } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt index 99a0f03651..9b5121eeb5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt @@ -64,6 +64,7 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo import io.element.android.libraries.mediaplayer.api.MediaPlayer import io.element.android.services.analytics.api.AnalyticsService +import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope @@ -85,6 +86,7 @@ class ThreadedMessagesNode( private val timelineItemPresenterFactories: TimelineItemPresenterFactories, private val mediaPlayer: MediaPlayer, private val permalinkParser: PermalinkParser, + private val appNavigationStateService: AppNavigationStateService, ) : Node(buildContext, plugins = plugins), MessagesNavigator { private val callbacks = plugins() @@ -131,6 +133,12 @@ class ThreadedMessagesNode( onCreate = { sessionCoroutineScope.launch { analyticsService.capture(room.toAnalyticsViewRoom()) } }, + onStart = { + appNavigationStateService.onNavigateToThread(id, inputs.threadRootEventId) + }, + onStop = { + appNavigationStateService.onLeavingThread(id) + }, onDestroy = { mediaPlayer.close() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index d71ae1e7bc..ae8e26bff4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -86,6 +86,7 @@ class TimelinePresenter( private val roomCallStatePresenter: Presenter, private val featureFlagService: FeatureFlagService, ) : Presenter { + private val tag = "TimelinePresenter" @AssistedFactory interface Factory { fun create( @@ -102,14 +103,14 @@ class TimelinePresenter( ) private var timelineItems by mutableStateOf>(persistentListOf()) + private val focusRequestState: MutableState = mutableStateOf(FocusRequestState.None) + @Composable override fun present(): TimelineState { val localScope = rememberCoroutineScope() val timelineMode = remember { timelineController.mainTimelineMode() } - var focusRequestState: FocusRequestState by remember { mutableStateOf(FocusRequestState.None) } - val lastReadReceiptId = rememberSaveable { mutableStateOf(null) } val roomInfo by room.roomInfoFlow.collectAsState() @@ -155,7 +156,7 @@ class TimelinePresenter( if (event.firstIndex == 0) { newEventState.value = NewEventState.None } - Timber.d("## sendReadReceiptIfNeeded firstVisibleIndex: ${event.firstIndex}") + Timber.tag(tag).d("## sendReadReceiptIfNeeded firstVisibleIndex: ${event.firstIndex}") sessionCoroutineScope.sendReadReceiptIfNeeded( firstVisibleIndex = event.firstIndex, timelineItems = timelineItems, @@ -186,14 +187,17 @@ class TimelinePresenter( is TimelineEvents.EditPoll -> { navigator.onEditPollClick(event.pollStartId) } - is TimelineEvents.FocusOnEvent -> { - focusRequestState = FocusRequestState.Requested(event.eventId, event.debounce) - } + is TimelineEvents.FocusOnEvent -> sessionCoroutineScope.launch { + focusRequestState.value = FocusRequestState.Requested(event.eventId, event.debounce) + delay(event.debounce) + Timber.tag(tag).d("Started focus on ${event.eventId}") + focusOnEvent(event.eventId, focusRequestState) + }.start() is TimelineEvents.OnFocusEventRender -> { - focusRequestState = focusRequestState.onFocusEventRender() + focusRequestState.value = focusRequestState.value.onFocusEventRender() } is TimelineEvents.ClearFocusRequestState -> { - focusRequestState = FocusRequestState.None + focusRequestState.value = FocusRequestState.None } is TimelineEvents.JumpToLive -> { timelineController.focusOnLive() @@ -236,69 +240,19 @@ class TimelinePresenter( .launchIn(this) } - LaunchedEffect(focusRequestState) { - Timber.d("## focusRequestState: $focusRequestState") - when (val currentFocusRequestState = focusRequestState) { - is FocusRequestState.Requested -> { - delay(currentFocusRequestState.debounce) - if (timelineItemIndexer.isKnown(currentFocusRequestState.eventId)) { - val index = timelineItemIndexer.indexOf(currentFocusRequestState.eventId) - focusRequestState = FocusRequestState.Success(eventId = currentFocusRequestState.eventId, index = index) - } else { - focusRequestState = FocusRequestState.Loading(eventId = currentFocusRequestState.eventId) - } - } - is FocusRequestState.Loading -> { - val eventId = currentFocusRequestState.eventId - val threadId = room.threadRootIdForEvent(eventId).getOrElse { - focusRequestState = FocusRequestState.Failure(it) - return@LaunchedEffect - } - - if (timelineController.mainTimelineMode() is Timeline.Mode.Thread && threadId == null) { - // We are in a thread timeline, and the event isn't part of a thread, we need to navigate back to the room - focusRequestState = FocusRequestState.None - navigator.onNavigateToRoom(room.roomId, eventId, calculateServerNamesForRoom(room)) - } else { - timelineController.focusOnEvent(eventId, threadId) - .onSuccess { result -> - when (result) { - is EventFocusResult.FocusedOnLive -> { - focusRequestState = FocusRequestState.Success(eventId = eventId) - } - is EventFocusResult.IsInThread -> { - val currentThreadId = (timelineController.mainTimelineMode() as? Timeline.Mode.Thread)?.threadRootId - if (currentThreadId == result.threadId) { - // It's the same thread, we just focus on the event - focusRequestState = FocusRequestState.Success(eventId = eventId) - } else { - focusRequestState = FocusRequestState.Success(eventId = result.threadId.asEventId()) - // It's part of a thread we're not in, let's open it in another timeline - navigator.onOpenThread(result.threadId, eventId) - } - } - } - } - .onFailure { - focusRequestState = FocusRequestState.Failure(it) - } - } - } - else -> Unit - } - } - LaunchedEffect(timelineItems.size) { computeNewItemState(timelineItems, prevMostRecentItemId, newEventState) } - LaunchedEffect(timelineItems.size, focusRequestState) { - val currentFocusRequestState = focusRequestState + LaunchedEffect(timelineItems.size, focusRequestState.value) { + val currentFocusRequestState = focusRequestState.value if (currentFocusRequestState is FocusRequestState.Success && !currentFocusRequestState.rendered) { val eventId = currentFocusRequestState.eventId if (timelineItemIndexer.isKnown(eventId)) { val index = timelineItemIndexer.indexOf(eventId) - focusRequestState = FocusRequestState.Success(eventId = eventId, index = index) + focusRequestState.value = FocusRequestState.Success(eventId = eventId, index = index) + } else { + Timber.w("Unknown timeline item for focused item, can't render focus") } } } @@ -319,6 +273,11 @@ class TimelinePresenter( ) } } + + LaunchedEffect(focusRequestState.value) { + Timber.tag(tag).d("Timeline: $timelineMode | focus state: ${focusRequestState.value}") + } + return TimelineState( timelineItems = timelineItems, timelineMode = timelineMode, @@ -326,7 +285,7 @@ class TimelinePresenter( renderReadReceipts = renderReadReceipts, newEventState = newEventState.value, isLive = isLive, - focusRequestState = focusRequestState, + focusRequestState = focusRequestState.value, messageShield = messageShield.value, resolveVerifiedUserSendFailureState = resolveVerifiedUserSendFailureState, displayThreadSummaries = displayThreadSummaries, @@ -334,6 +293,55 @@ class TimelinePresenter( ) } + private suspend fun focusOnEvent( + eventId: EventId, + focusRequestState: MutableState, + ) { + if (timelineItemIndexer.isKnown(eventId)) { + val index = timelineItemIndexer.indexOf(eventId) + focusRequestState.value = FocusRequestState.Success(eventId = eventId, index = index) + return + } + + Timber.tag(tag).d("Event $eventId not found in the loaded timeline, loading a focused timeline") + focusRequestState.value = FocusRequestState.Loading(eventId = eventId) + + val threadId = room.threadRootIdForEvent(eventId).getOrElse { + focusRequestState.value = FocusRequestState.Failure(it) + return + } + + if (timelineController.mainTimelineMode() is Timeline.Mode.Thread && threadId == null) { + // We are in a thread timeline, and the event isn't part of a thread, we need to navigate back to the room + focusRequestState.value = FocusRequestState.None + navigator.onNavigateToRoom(room.roomId, eventId, calculateServerNamesForRoom(room)) + } else { + Timber.tag(tag).d("Focusing on event $eventId - thread $threadId") + timelineController.focusOnEvent(eventId, threadId) + .onSuccess { result -> + when (result) { + is EventFocusResult.FocusedOnLive -> { + focusRequestState.value = FocusRequestState.Success(eventId = eventId) + } + is EventFocusResult.IsInThread -> { + val currentThreadId = (timelineController.mainTimelineMode() as? Timeline.Mode.Thread)?.threadRootId + if (currentThreadId == result.threadId) { + // It's the same thread, we just focus on the event + focusRequestState.value = FocusRequestState.Success(eventId = eventId) + } else { + focusRequestState.value = FocusRequestState.Success(eventId = result.threadId.asEventId()) + // It's part of a thread we're not in, let's open it in another timeline + navigator.onOpenThread(result.threadId, eventId) + } + } + } + } + .onFailure { + focusRequestState.value = FocusRequestState.Failure(it) + } + } + } + /** * This method compute the hasNewItem state passed as a [MutableState] each time the timeline items size changes. * Basically, if we got new timeline event from sync or local, either from us or another user, we update the state so we tell we have new items. diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index dc7e5ad5d4..88c0ca8020 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -136,7 +136,7 @@ class DefaultMessagesEntryPointTest { @Test fun `test initial target to nav target mapping`() { assertThat(MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID).toNavTarget()) - .isEqualTo(MessagesFlowNode.NavTarget.Messages(AN_EVENT_ID)) + .isEqualTo(MessagesFlowNode.NavTarget.Messages(focusedEventId = AN_EVENT_ID)) assertThat(MessagesEntryPoint.InitialTarget.PinnedMessages.toNavTarget()) .isEqualTo(MessagesFlowNode.NavTarget.PinnedMessagesList) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt index b264da5566..782d71c7cf 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt @@ -563,9 +563,7 @@ class TimelinePresenterTest { @Test fun `present - focus on known event retrieves the event from cache`() = runTest { - val timelineItemIndexer = TimelineItemIndexer().apply { - process(listOf(aMessageEvent(eventId = AN_EVENT_ID))) - } + val timelineItemIndexer = TimelineItemIndexer() val presenter = createTimelinePresenter( room = FakeJoinedRoom( liveTimeline = FakeTimeline( @@ -578,7 +576,10 @@ class TimelinePresenterTest { ) ) ), - baseRoom = FakeBaseRoom(canUserSendMessageResult = { _, _ -> Result.success(true) }), + baseRoom = FakeBaseRoom( + canUserSendMessageResult = { _, _ -> Result.success(true) }, + threadRootIdForEventResult = { Result.success(null) }, + ), ), timelineItemIndexer = timelineItemIndexer, ) @@ -586,7 +587,16 @@ class TimelinePresenterTest { presenter.present() }.test { val initialState = awaitFirstItem() + + advanceUntilIdle() + + // Pre-populate the indexer after the first items have been retrieved + timelineItemIndexer.process(listOf(aMessageEvent(eventId = AN_EVENT_ID))) + initialState.eventSink.invoke(TimelineEvents.FocusOnEvent(AN_EVENT_ID)) + + advanceUntilIdle() + awaitItem().also { state -> assertThat(state.focusedEventId).isEqualTo(AN_EVENT_ID) assertThat(state.focusRequestState).isEqualTo(FocusRequestState.Requested(AN_EVENT_ID, Duration.ZERO)) diff --git a/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeepLinkCreator.kt b/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeepLinkCreator.kt index 2a29d70bd4..1d6d547c37 100644 --- a/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeepLinkCreator.kt +++ b/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeepLinkCreator.kt @@ -7,10 +7,11 @@ package io.element.android.libraries.deeplink.api +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId fun interface DeepLinkCreator { - fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?): String + fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?, eventId: EventId?): String } diff --git a/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeeplinkData.kt b/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeeplinkData.kt index d15652b3ee..7c6e7fe1b2 100644 --- a/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeeplinkData.kt +++ b/libraries/deeplink/api/src/main/kotlin/io/element/android/libraries/deeplink/api/DeeplinkData.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.deeplink.api +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @@ -18,6 +19,6 @@ sealed interface DeeplinkData { /** The target is the root of the app, with the given [sessionId]. */ data class Root(override val sessionId: SessionId) : DeeplinkData - /** The target is a room, with the given [sessionId], [roomId] and optionally a [threadId]. */ - data class Room(override val sessionId: SessionId, val roomId: RoomId, val threadId: ThreadId?) : DeeplinkData + /** The target is a room, with the given [sessionId], [roomId] and optionally a [threadId] and [eventId]. */ + data class Room(override val sessionId: SessionId, val roomId: RoomId, val threadId: ThreadId?, val eventId: EventId?) : DeeplinkData } diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt index fb13fc18b5..f2efeb025d 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreator.kt @@ -10,24 +10,30 @@ package io.element.android.libraries.deeplink.impl import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.deeplink.api.DeepLinkCreator +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @ContributesBinding(AppScope::class) class DefaultDeepLinkCreator : DeepLinkCreator { - override fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?): String { + override fun create(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?, eventId: EventId?): String { return buildString { append("$SCHEME://$HOST/") append(sessionId.value) - if (roomId != null) { - append("/") - append(roomId.value) - if (threadId != null) { - append("/") - append(threadId.value) - } - } + append("/") + append(roomId?.value.orEmpty()) + append("/") + append(threadId?.value.orEmpty()) + append("/") + append(eventId?.value.orEmpty()) } + // Remove all possible trailing '/' characters: + // No event id + .removeSuffix("/") + // No thread id + .removeSuffix("/") + // No room id + .removeSuffix("/") } } diff --git a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt index ed96fa3174..c940e5db66 100644 --- a/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt +++ b/libraries/deeplink/impl/src/main/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParser.kt @@ -13,6 +13,7 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.deeplink.api.DeeplinkData import io.element.android.libraries.deeplink.api.DeeplinkParser +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @@ -36,8 +37,9 @@ class DefaultDeeplinkParser : DeeplinkParser { null -> DeeplinkData.Root(sessionId) else -> { val roomId = screenPathComponent.let(::RoomId) - val threadId = pathBits.elementAtOrNull(2)?.let(::ThreadId) - DeeplinkData.Room(sessionId, roomId, threadId) + val threadId = pathBits.elementAtOrNull(2)?.takeIf { it.isNotBlank() }?.let(::ThreadId) + val eventId = pathBits.elementAtOrNull(3)?.takeIf { it.isNotBlank() }?.let(::EventId) + DeeplinkData.Room(sessionId, roomId, threadId, eventId) } } } diff --git a/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreatorTest.kt b/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreatorTest.kt index a5c943c525..bd690045a7 100644 --- a/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreatorTest.kt +++ b/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeepLinkCreatorTest.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.deeplink.impl import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID @@ -17,11 +18,15 @@ class DefaultDeepLinkCreatorTest { @Test fun create() { val sut = DefaultDeepLinkCreator() - assertThat(sut.create(A_SESSION_ID, null, null)) + assertThat(sut.create(A_SESSION_ID, null, null, null)) .isEqualTo("elementx://open/@alice:server.org") - assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, null)) + assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, null, null)) .isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain") - assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID)) + assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID, null)) .isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId") + assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID, AN_EVENT_ID)) + .isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId/\$anEventId") + assertThat(sut.create(A_SESSION_ID, A_ROOM_ID, null, AN_EVENT_ID)) + .isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain//\$anEventId") } } diff --git a/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParserTest.kt b/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParserTest.kt index 787c721092..8d20ca5f44 100644 --- a/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParserTest.kt +++ b/libraries/deeplink/impl/src/test/kotlin/io/element/android/libraries/deeplink/impl/DefaultDeeplinkParserTest.kt @@ -11,6 +11,7 @@ import android.content.Intent import androidx.core.net.toUri import com.google.common.truth.Truth.assertThat import io.element.android.libraries.deeplink.api.DeeplinkData +import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID @@ -28,6 +29,10 @@ class DefaultDeeplinkParserTest { "elementx://open/@alice:server.org/!aRoomId:domain" const val A_URI_WITH_ROOM_WITH_THREAD = "elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId" + const val A_URI_WITH_ROOM_WITH_THREAD_AND_EVENT = + "elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId/\$anEventId" + const val A_URI_WITH_ROOM_WITH_EVENT_AND_NO_THREAD = + "elementx://open/@alice:server.org/!aRoomId:domain//\$anEventId" } @Test @@ -36,9 +41,13 @@ class DefaultDeeplinkParserTest { assertThat(sut.getFromIntent(createIntent(A_URI))) .isEqualTo(DeeplinkData.Root(A_SESSION_ID)) assertThat(sut.getFromIntent(createIntent(A_URI_WITH_ROOM))) - .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, null)) + .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, null, null)) assertThat(sut.getFromIntent(createIntent(A_URI_WITH_ROOM_WITH_THREAD))) - .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID)) + .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID, null)) + assertThat(sut.getFromIntent(createIntent(A_URI_WITH_ROOM_WITH_THREAD_AND_EVENT))) + .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID, AN_EVENT_ID)) + assertThat(sut.getFromIntent(createIntent(A_URI_WITH_ROOM_WITH_EVENT_AND_NO_THREAD))) + .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, null, AN_EVENT_ID)) } @Test diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt index 1f5f39dee7..6ef38b0cc6 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/permalink/PermalinkData.kt @@ -13,6 +13,7 @@ import androidx.compose.runtime.Immutable import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf @@ -28,6 +29,7 @@ sealed interface PermalinkData : Parcelable { data class RoomLink( val roomIdOrAlias: RoomIdOrAlias, val eventId: EventId? = null, + val threadId: ThreadId? = null, val viaParameters: ImmutableList = persistentListOf() ) : PermalinkData diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt index e7831bc492..bad622e456 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt @@ -12,6 +12,7 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.notification.NotificationContent import io.element.android.libraries.matrix.api.notification.NotificationData @@ -41,8 +42,7 @@ class NotificationMapper( NotificationData( sessionId = sessionId, eventId = eventId, - // FIXME once the `NotificationItem` in the SDK returns the thread id - threadId = null, + threadId = item.threadId?.let(::ThreadId), roomId = roomId, senderAvatarUrl = item.senderInfo.avatarUrl, senderDisplayName = item.senderInfo.displayName, diff --git a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt index 4d6850a18f..b3b5e4feba 100644 --- a/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt +++ b/libraries/push/api/src/main/kotlin/io/element/android/libraries/push/api/notifications/NotificationCleaner.kt @@ -10,10 +10,12 @@ package io.element.android.libraries.push.api.notifications import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId interface NotificationCleaner { fun clearAllMessagesEvents(sessionId: SessionId) fun clearMessagesForRoom(sessionId: SessionId, roomId: RoomId) + fun clearMessagesForThread(sessionId: SessionId, roomId: RoomId, threadId: ThreadId) fun clearEvent(sessionId: SessionId, eventId: EventId) fun clearMembershipNotificationForSession(sessionId: SessionId) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt index f98b10674c..ff41d71e1f 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt @@ -8,6 +8,7 @@ package io.element.android.libraries.push.impl.intent import android.content.Intent +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId @@ -20,5 +21,6 @@ interface IntentProvider { sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?, + eventId: EventId?, ): Intent } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt index 15c7662367..92a3b54827 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/ActiveNotificationsProvider.kt @@ -14,11 +14,21 @@ import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.api.notifications.NotificationIdProvider +import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import timber.log.Timber interface ActiveNotificationsProvider { - fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List + /** + * Gets the displayed notifications for the combination of [sessionId], [roomId] and [threadId]. + */ + fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?): List + + /** + * Gets all displayed notifications associated to [sessionId] and [roomId]. These will include all thread notifications as well. + */ + fun getAllMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List fun getNotificationsForSession(sessionId: SessionId): List fun getMembershipNotificationForSession(sessionId: SessionId): List fun getMembershipNotificationForRoom(sessionId: SessionId, roomId: RoomId): List @@ -44,9 +54,15 @@ class DefaultActiveNotificationsProvider( return getNotificationsForSession(sessionId).filter { it.id == notificationId } } - override fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List { + override fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?): List { val notificationId = NotificationIdProvider.getRoomMessagesNotificationId(sessionId) - return getNotificationsForSession(sessionId).filter { it.id == notificationId && it.tag == roomId.value } + val expectedTag = NotificationCreator.messageTag(roomId, threadId) + return getNotificationsForSession(sessionId).filter { it.id == notificationId && it.tag == expectedTag } + } + + override fun getAllMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List { + val notificationId = NotificationIdProvider.getRoomMessagesNotificationId(sessionId) + return getNotificationsForSession(sessionId).filter { it.id == notificationId && it.tag.startsWith(roomId.value) } } override fun getMembershipNotificationForRoom(sessionId: SessionId, roomId: RoomId): List { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt index 687d8b8e18..481d354e8d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt @@ -17,6 +17,8 @@ import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.di.annotations.ApplicationContext +import io.element.android.libraries.featureflag.api.FeatureFlagService +import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId @@ -85,6 +87,7 @@ class DefaultNotifiableEventResolver( private val permalinkParser: PermalinkParser, private val callNotificationEventResolver: CallNotificationEventResolver, private val fallbackNotificationFactory: FallbackNotificationFactory, + private val featureFlagService: FeatureFlagService, ) : NotifiableEventResolver { override suspend fun resolveEvents( sessionId: SessionId, @@ -141,7 +144,7 @@ class DefaultNotifiableEventResolver( senderId = content.senderId, roomId = roomId, eventId = eventId, - threadId = threadId, + threadId = threadId.takeIf { featureFlagService.isFeatureEnabled(FeatureFlags.Threads) }, noisy = isNoisy, timestamp = this.timestamp, senderDisambiguatedDisplayName = senderDisambiguatedDisplayName, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 00106be45a..01a1b1f9a9 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -25,6 +25,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.libraries.push.api.notifications.NotificationIdProvider +import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.shouldIgnoreEventInRoom import io.element.android.services.appnavstate.api.AppNavigationStateService @@ -93,10 +94,10 @@ class DefaultNotificationDrawerManager( ) } is NavigationState.Thread -> { - onEnteringThread( - navigationState.parentRoom.parentSpace.parentSession.sessionId, - navigationState.parentRoom.roomId, - navigationState.threadId + clearMessagesForThread( + sessionId = navigationState.parentRoom.parentSpace.parentSession.sessionId, + roomId = navigationState.parentRoom.roomId, + threadId = navigationState.threadId, ) } } @@ -145,6 +146,16 @@ class DefaultNotificationDrawerManager( clearSummaryNotificationIfNeeded(sessionId) } + /** + * Should be called when the application is currently opened and showing timeline for the given threadId. + * Used to ignore events related to that thread (no need to display notification) and clean any existing notification on this room. + */ + override fun clearMessagesForThread(sessionId: SessionId, roomId: RoomId, threadId: ThreadId) { + val tag = NotificationCreator.messageTag(roomId, threadId) + notificationManager.cancel(tag, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) + clearSummaryNotificationIfNeeded(sessionId) + } + override fun clearMembershipNotificationForSession(sessionId: SessionId) { activeNotificationsProvider.getMembershipNotificationForSession(sessionId) .forEach { notificationManager.cancel(it.tag, it.id) } @@ -176,16 +187,6 @@ class DefaultNotificationDrawerManager( } } - /** - * Should be called when the application is currently opened and showing timeline for the given threadId. - * Used to ignore events related to that thread (no need to display notification) and clean any existing notification on this room. - */ - @Suppress("UNUSED_PARAMETER") - private fun onEnteringThread(sessionId: SessionId, roomId: RoomId, threadId: ThreadId) { - // TODO maybe we'll have to embed more data in the tag to get a threadId - // Do nothing for now - } - private suspend fun renderEvents(eventsToRender: List) { // Group by sessionId val eventsForSessions = eventsToRender.groupBy { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt index c3df89b4a9..857c198e3b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandler.kt @@ -16,9 +16,11 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId +import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.isDm import io.element.android.libraries.matrix.api.timeline.ReceiptType +import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.preferences.api.store.SessionPreferencesStoreFactory import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.libraries.push.impl.R @@ -72,8 +74,12 @@ class NotificationBroadcastReceiverHandler( notificationCleaner.clearEvent(sessionId, eventId) } actionIds.markRoomRead -> if (roomId != null) { - notificationCleaner.clearMessagesForRoom(sessionId, roomId) - handleMarkAsRead(sessionId, roomId) + if (threadId == null) { + notificationCleaner.clearMessagesForRoom(sessionId, roomId) + } else { + notificationCleaner.clearMessagesForThread(sessionId, roomId, threadId) + } + handleMarkAsRead(sessionId, roomId, threadId) } actionIds.join -> if (roomId != null) { notificationCleaner.clearMembershipNotificationForRoom(sessionId, roomId) @@ -96,7 +102,8 @@ class NotificationBroadcastReceiverHandler( client.getRoom(roomId)?.leave() } - private fun handleMarkAsRead(sessionId: SessionId, roomId: RoomId) = appCoroutineScope.launch { + @Suppress("unused") + private fun handleMarkAsRead(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?) = appCoroutineScope.launch { val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return@launch val isSendPublicReadReceiptsEnabled = sessionPreferencesStore.get(sessionId, this).isSendPublicReadReceiptsEnabled().first() val receiptType = if (isSendPublicReadReceiptsEnabled) { @@ -104,7 +111,26 @@ class NotificationBroadcastReceiverHandler( } else { ReceiptType.READ_PRIVATE } - client.getRoom(roomId)?.markAsRead(receiptType = receiptType) + val room = client.getJoinedRoom(roomId) ?: return@launch + val timeline = if (threadId != null) { + room.createTimeline(CreateTimelineParams.Threaded(threadId)).getOrNull() + } else { + room.liveTimeline + } + timeline?.markAsRead(receiptType) + ?.onSuccess { + if (threadId != null) { + Timber.d("Marked thread $threadId in room $roomId as read with receipt type $receiptType") + } else { + Timber.d("Marked room $roomId as read with receipt type $receiptType") + } + } + ?.onFailure { + Timber.e(it, "Fails to mark as read with receipt type $receiptType") + } + if (timeline?.mode != Timeline.Mode.Live) { + timeline?.close() + } } private fun handleSmartReply( diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index 38ab52e084..a3becd94c1 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -18,6 +18,7 @@ import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator @@ -82,32 +83,38 @@ class DefaultNotificationDataFactory( ): List { val messagesToDisplay = messages.filterNot { it.canNotBeDisplayed() } .groupBy { it.roomId } - return messagesToDisplay.map { (roomId, events) -> + return messagesToDisplay.flatMap { (roomId, events) -> val roomName = events.lastOrNull()?.roomName ?: roomId.value val isDm = events.lastOrNull()?.roomIsDm ?: false - val notification = roomGroupMessageCreator.createRoomMessage( - currentUser = currentUser, - events = events, - roomId = roomId, - imageLoader = imageLoader, - existingNotification = getExistingNotificationForMessages(currentUser.userId, roomId), - color = color, - ) - RoomNotification( - notification = notification, - roomId = roomId, - summaryLine = createRoomMessagesGroupSummaryLine(events, roomName, isDm), - messageCount = events.size, - latestTimestamp = events.maxOf { it.timestamp }, - shouldBing = events.any { it.noisy } - ) + val eventsByThreadId = events.groupBy { it.threadId } + + eventsByThreadId.map { (threadId, events) -> + val notification = roomGroupMessageCreator.createRoomMessage( + currentUser = currentUser, + events = events, + roomId = roomId, + threadId = threadId, + imageLoader = imageLoader, + existingNotification = getExistingNotificationForMessages(currentUser.userId, roomId, threadId), + color = color, + ) + RoomNotification( + notification = notification, + roomId = roomId, + threadId = threadId, + summaryLine = createRoomMessagesGroupSummaryLine(events, roomName, isDm), + messageCount = events.size, + latestTimestamp = events.maxOf { it.timestamp }, + shouldBing = events.any { it.noisy } + ) + } } } private fun NotifiableMessageEvent.canNotBeDisplayed() = isRedacted - private fun getExistingNotificationForMessages(sessionId: SessionId, roomId: RoomId): Notification? { - return activeNotificationsProvider.getMessageNotificationsForRoom(sessionId, roomId).firstOrNull()?.notification + private fun getExistingNotificationForMessages(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?): Notification? { + return activeNotificationsProvider.getMessageNotificationsForRoom(sessionId, roomId, threadId).firstOrNull()?.notification } @JvmName("toNotificationInvites") @@ -228,6 +235,7 @@ class DefaultNotificationDataFactory( data class RoomNotification( val notification: Notification, val roomId: RoomId, + val threadId: ThreadId?, val summaryLine: CharSequence, val messageCount: Int, val latestTimestamp: Long, @@ -236,6 +244,7 @@ data class RoomNotification( fun isDataEqualTo(other: RoomNotification): Boolean { return notification == other.notification && roomId == other.roomId && + threadId == other.threadId && summaryLine.toString() == other.summaryLine.toString() && messageCount == other.messageCount && latestTimestamp == other.latestTimestamp && diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index c70148ca25..5248bce175 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -15,6 +15,7 @@ import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationIdProvider +import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent @@ -64,8 +65,12 @@ class NotificationRenderer( } roomNotifications.forEach { notificationData -> + val tag = NotificationCreator.messageTag( + roomId = notificationData.roomId, + threadId = notificationData.threadId + ) notificationDisplayer.showNotificationMessage( - tag = notificationData.roomId.value, + tag = tag, id = NotificationIdProvider.getRoomMessagesNotificationId(currentUser.userId), notification = notificationData.notification ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt index bf6ac73522..853e7ffdfc 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt @@ -14,6 +14,7 @@ import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationBitmapLoader import io.element.android.libraries.push.impl.R @@ -27,6 +28,7 @@ interface RoomGroupMessageCreator { currentUser: MatrixUser, events: List, roomId: RoomId, + threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, @ColorInt color: Int, @@ -43,6 +45,7 @@ class DefaultRoomGroupMessageCreator( currentUser: MatrixUser, events: List, roomId: RoomId, + threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, @ColorInt color: Int, @@ -73,7 +76,7 @@ class DefaultRoomGroupMessageCreator( customSound = events.last().soundName, isUpdated = events.last().isUpdated, ), - threadId = lastKnownRoomEvent.threadId, + threadId = threadId, largeIcon = largeBitmap, lastMessageTimestamp = lastMessageTimestamp, tickerText = tickerText, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt index ea282caa6d..44df16b01f 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationService.kt @@ -107,7 +107,7 @@ class DefaultNotificationConversationService( val shortcutInfo = ShortcutInfoCompat.Builder(context, createShortcutId(sessionId, roomId)) .setShortLabel(roomName) .setIcon(icon) - .setIntent(intentProvider.getViewRoomIntent(sessionId, roomId, threadId = null)) + .setIntent(intentProvider.getViewRoomIntent(sessionId, roomId, threadId = null, eventId = null)) .setCategories(categories) .setLongLived(true) .let { diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 873137f7c0..efe54bd3d9 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -10,6 +10,7 @@ package io.element.android.libraries.push.impl.notifications.factories import android.app.Notification import android.content.Context import android.graphics.Bitmap +import android.graphics.drawable.Icon import androidx.annotation.ColorInt import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat.MessagingStyle @@ -20,7 +21,7 @@ import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.di.annotations.ApplicationContext -import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.timeline.item.event.EventType import io.element.android.libraries.matrix.api.user.MatrixUser @@ -38,6 +39,7 @@ import io.element.android.libraries.push.impl.notifications.model.InviteNotifiab import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent import io.element.android.libraries.push.impl.notifications.shortcut.createShortcutId +import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider interface NotificationCreator { @@ -86,6 +88,17 @@ interface NotificationCreator { fun createDiagnosticNotification( @ColorInt color: Int, ): Notification + + companion object { + /** + * Creates a tag for a message notification given its [roomId] and optional [threadId]. + */ + fun messageTag(roomId: RoomId, threadId: ThreadId?): String = if (threadId != null) { + "$roomId|$threadId" + } else { + roomId.value + } + } } @ContributesBinding(AppScope::class) @@ -99,7 +112,7 @@ class DefaultNotificationCreator( private val quickReplyActionFactory: QuickReplyActionFactory, private val bitmapLoader: NotificationBitmapLoader, private val acceptInvitationActionFactory: AcceptInvitationActionFactory, - private val rejectInvitationActionFactory: RejectInvitationActionFactory + private val rejectInvitationActionFactory: RejectInvitationActionFactory, ) : NotificationCreator { /** * Create a notification for a Room. @@ -117,9 +130,10 @@ class DefaultNotificationCreator( @ColorInt color: Int, ): Notification { // Build the pending intent for when the notification is clicked + val eventId = events.firstOrNull()?.eventId val openIntent = when { - threadId != null -> pendingIntentFactory.createOpenThreadPendingIntent(roomInfo, threadId) - else -> pendingIntentFactory.createOpenRoomPendingIntent(roomInfo.sessionId, roomInfo.roomId) + threadId != null -> pendingIntentFactory.createOpenThreadPendingIntent(roomInfo.sessionId, roomInfo.roomId, eventId, threadId) + else -> pendingIntentFactory.createOpenRoomPendingIntent(roomInfo.sessionId, roomInfo.roomId, eventId) } val smallIcon = CommonDrawables.ic_notification val containsMissedCall = events.any { it.type == EventType.RTC_NOTIFICATION } @@ -140,19 +154,30 @@ class DefaultNotificationCreator( // Must match those created in the ShortcutInfoCompat.Builder() // for the notification to appear as a "Conversation": // https://developer.android.com/develop/ui/views/notifications/conversations - .setShortcutId(createShortcutId(roomInfo.sessionId, roomInfo.roomId)) + .apply { + if (threadId == null) { + setShortcutId(createShortcutId(roomInfo.sessionId, roomInfo.roomId)) + } + } // Auto-bundling is enabled for 4 or more notifications on API 24+ (N+) // devices and all Wear devices. But we want a custom grouping, so we specify the groupID .setGroup(roomInfo.sessionId.value) + .setGroupSummary(false) // In order to avoid notification making sound twice (due to the summary notification) - .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) + .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN) // Remove notification after opening it or using an action .setAutoCancel(true) } val messagingStyle = existingNotification?.let { MessagingStyle.extractMessagingStyleFromNotification(it) - } ?: messagingStyleFromCurrentUser(roomInfo.sessionId, currentUser, imageLoader, roomInfo.roomDisplayName, !roomInfo.isDm) + } ?: messagingStyleFromCurrentUser( + user = currentUser, + imageLoader = imageLoader, + roomName = roomInfo.roomDisplayName, + isThread = threadId != null, + roomIsGroup = !roomInfo.isDm, + ) messagingStyle.addMessagesFromEvents(events, imageLoader) @@ -162,19 +187,6 @@ class DefaultNotificationCreator( .setWhen(lastMessageTimestamp) // MESSAGING_STYLE sets title and content for API 16 and above devices. .setStyle(messagingStyle) - // Not needed anymore? - // Title for API < 16 devices. - .setContentTitle(roomInfo.roomDisplayName.annotateForDebug(1)) - // Content for API < 16 devices. - .setContentText(stringProvider.getString(R.string.notification_new_messages).annotateForDebug(2)) - // Number of new notifications for API <24 (M and below) devices. - .setSubText( - stringProvider.getQuantityString( - R.plurals.notification_new_messages_for_room, - messagingStyle.messages.size, - messagingStyle.messages.size - ).annotateForDebug(3) - ) .setSmallIcon(smallIcon) // Set primary color (important for Wear 2.0 Notifications). .setColor(color) @@ -197,8 +209,8 @@ class DefaultNotificationCreator( // Clear existing actions since we might be updating an existing notification clearActions() // Add actions and notification intents - // Mark room as read - addAction(markAsReadActionFactory.create(roomInfo)) + // Mark room/thread as read + addAction(markAsReadActionFactory.create(roomInfo, threadId)) // Quick reply if (!roomInfo.hasSmartReplyError) { val latestEventId = events.lastOrNull()?.eventId @@ -208,7 +220,7 @@ class DefaultNotificationCreator( setContentIntent(openIntent) } if (largeIcon != null) { - setLargeIcon(largeIcon) + setLargeIcon(Icon.createWithBitmap(largeIcon)) } setDeleteIntent(pendingIntentFactory.createDismissRoomPendingIntent(roomInfo.sessionId, roomInfo.roomId)) @@ -239,7 +251,7 @@ class DefaultNotificationCreator( addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) // Build the pending intent for when the notification is clicked - setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(inviteNotifiableEvent.sessionId, inviteNotifiableEvent.roomId)) + setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(inviteNotifiableEvent.sessionId, inviteNotifiableEvent.roomId, null)) if (inviteNotifiableEvent.noisy) { // Compat @@ -279,7 +291,7 @@ class DefaultNotificationCreator( .setSmallIcon(smallIcon) .setColor(color) .setAutoCancel(true) - .setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(simpleNotifiableEvent.sessionId, simpleNotifiableEvent.roomId)) + .setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(simpleNotifiableEvent.sessionId, simpleNotifiableEvent.roomId, null)) .apply { if (simpleNotifiableEvent.noisy) { // Compat @@ -447,21 +459,26 @@ class DefaultNotificationCreator( } private suspend fun messagingStyleFromCurrentUser( - sessionId: SessionId, user: MatrixUser, imageLoader: ImageLoader, roomName: String, + isThread: Boolean, roomIsGroup: Boolean ): MessagingStyle { return MessagingStyle( Person.Builder() .setName(user.displayName?.annotateForDebug(50)) .setIcon(bitmapLoader.getUserIcon(user.avatarUrl, imageLoader)) - .setKey(sessionId.value) + .setKey(user.userId.value) .build() ).also { - it.conversationTitle = roomName.takeIf { roomIsGroup } - it.isGroupConversation = roomIsGroup + it.conversationTitle = if (isThread) { + stringProvider.getString(CommonStrings.notification_thread_in_room, roomName) + } else { + roomName + } + // So the avatar is displayed even if they're part of a conversation + it.isGroupConversation = roomIsGroup || isThread } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt index 9b36b0d370..71235c5e50 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt @@ -20,7 +20,6 @@ import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.impl.intent.IntentProvider import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver -import io.element.android.libraries.push.impl.notifications.RoomEventGroupInfo import io.element.android.libraries.push.impl.notifications.TestNotificationReceiver import io.element.android.services.toolbox.api.systemclock.SystemClock @@ -32,19 +31,19 @@ class PendingIntentFactory( private val actionIds: NotificationActionIds, ) { fun createOpenSessionPendingIntent(sessionId: SessionId): PendingIntent? { - return createRoomPendingIntent(sessionId = sessionId, roomId = null, threadId = null) + return createRoomPendingIntent(sessionId = sessionId, roomId = null, eventId = null, threadId = null) } - fun createOpenRoomPendingIntent(sessionId: SessionId, roomId: RoomId): PendingIntent? { - return createRoomPendingIntent(sessionId = sessionId, roomId = roomId, threadId = null) + fun createOpenRoomPendingIntent(sessionId: SessionId, roomId: RoomId, eventId: EventId?): PendingIntent? { + return createRoomPendingIntent(sessionId = sessionId, roomId = roomId, eventId = eventId, threadId = null) } - fun createOpenThreadPendingIntent(roomInfo: RoomEventGroupInfo, threadId: ThreadId?): PendingIntent? { - return createRoomPendingIntent(sessionId = roomInfo.sessionId, roomId = roomInfo.roomId, threadId = threadId) + fun createOpenThreadPendingIntent(sessionId: SessionId, roomId: RoomId, eventId: EventId?, threadId: ThreadId): PendingIntent? { + return createRoomPendingIntent(sessionId = sessionId, roomId = roomId, eventId = eventId, threadId = threadId) } - private fun createRoomPendingIntent(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?): PendingIntent? { - val intent = intentProvider.getViewRoomIntent(sessionId = sessionId, roomId = roomId, threadId = threadId) + private fun createRoomPendingIntent(sessionId: SessionId, roomId: RoomId?, eventId: EventId?, threadId: ThreadId?): PendingIntent? { + val intent = intentProvider.getViewRoomIntent(sessionId = sessionId, roomId = roomId, eventId = eventId, threadId = threadId) return PendingIntent.getActivity( context, clock.epochMillis().toInt(), diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt index 22e08ff550..3ece50325a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt @@ -16,6 +16,7 @@ import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.di.annotations.ApplicationContext +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver @@ -30,15 +31,16 @@ class MarkAsReadActionFactory( private val stringProvider: StringProvider, private val clock: SystemClock, ) { - fun create(roomInfo: RoomEventGroupInfo): NotificationCompat.Action? { + fun create(roomInfo: RoomEventGroupInfo, threadId: ThreadId?): NotificationCompat.Action? { if (!NotificationConfig.SHOW_MARK_AS_READ_ACTION) return null val sessionId = roomInfo.sessionId.value val roomId = roomInfo.roomId.value val intent = Intent(context, NotificationBroadcastReceiver::class.java) intent.action = actionIds.markRoomRead - intent.data = createIgnoredUri("markRead/$sessionId/$roomId") + intent.data = createIgnoredUri("markRead/$sessionId/$roomId" + threadId?.let { "/$it" }.orEmpty()) intent.putExtra(NotificationBroadcastReceiver.KEY_SESSION_ID, sessionId) intent.putExtra(NotificationBroadcastReceiver.KEY_ROOM_ID, roomId) + threadId?.let { intent.putExtra(NotificationBroadcastReceiver.KEY_THREAD_ID, threadId.value) } val pendingIntent = PendingIntent.getBroadcast( context, clock.epochMillis().toInt(), diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt index df8234de4f..11143a2119 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/DefaultPushHandler.kt @@ -183,9 +183,9 @@ class DefaultPushHandler( } } - // Process redactions of messages + // Process redactions of messages in background to not block operations with higher priority if (redactions.isNotEmpty()) { - onRedactedEventReceived.onRedactedEventsReceived(redactions) + appCoroutineScope.launch { onRedactedEventReceived.onRedactedEventsReceived(redactions) } } // Find and process ringing call notifications separately diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt index 50c01f56fb..37d3b32c80 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt @@ -16,7 +16,6 @@ import androidx.core.text.buildSpannedString import androidx.core.text.inSpans import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.push.impl.notifications.ActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.NotificationDisplayer @@ -24,71 +23,63 @@ import io.element.android.libraries.push.impl.notifications.factories.DefaultNot import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch import timber.log.Timber interface OnRedactedEventReceived { - fun onRedactedEventsReceived(redactions: List) + suspend fun onRedactedEventsReceived(redactions: List) } @ContributesBinding(AppScope::class) class DefaultOnRedactedEventReceived( private val activeNotificationsProvider: ActiveNotificationsProvider, private val notificationDisplayer: NotificationDisplayer, - @AppCoroutineScope - private val coroutineScope: CoroutineScope, @ApplicationContext private val context: Context, private val stringProvider: StringProvider, ) : OnRedactedEventReceived { - override fun onRedactedEventsReceived(redactions: List) { - coroutineScope.launch { - val redactionsBySessionIdAndRoom = redactions.groupBy { redaction -> - redaction.sessionId to redaction.roomId + override suspend fun onRedactedEventsReceived(redactions: List) { + val redactionsBySessionIdAndRoom = redactions.groupBy { redaction -> + redaction.sessionId to redaction.roomId + } + for ((keys, roomRedactions) in redactionsBySessionIdAndRoom) { + val (sessionId, roomId) = keys + // Get all notifications for the room, including those for threads + val notifications = activeNotificationsProvider.getAllMessageNotificationsForRoom(sessionId, roomId) + if (notifications.isEmpty()) { + Timber.d("No notifications found for redacted event") } - for ((keys, roomRedactions) in redactionsBySessionIdAndRoom) { - val (sessionId, roomId) = keys - val notifications = activeNotificationsProvider.getMessageNotificationsForRoom( - sessionId, - roomId, + notifications.forEach { statusBarNotification -> + val notification = statusBarNotification.notification + val messagingStyle = MessagingStyle.extractMessagingStyleFromNotification(notification) + if (messagingStyle == null) { + Timber.w("Unable to retrieve messaging style from notification") + return@forEach + } + val messageToRedactIndex = messagingStyle.messages.indexOfFirst { message -> + roomRedactions.any { it.redactedEventId.value == message.extras.getString(DefaultNotificationCreator.MESSAGE_EVENT_ID) } + } + if (messageToRedactIndex == -1) { + Timber.d("Unable to find the message to remove from notification") + return@forEach + } + val oldMessage = messagingStyle.messages[messageToRedactIndex] + val content = buildSpannedString { + inSpans(StyleSpan(Typeface.ITALIC)) { + append(stringProvider.getString(CommonStrings.common_message_removed)) + } + } + val newMessage = MessagingStyle.Message( + content, + oldMessage.timestamp, + oldMessage.person + ) + messagingStyle.messages[messageToRedactIndex] = newMessage + notificationDisplayer.showNotificationMessage( + statusBarNotification.tag, + statusBarNotification.id, + NotificationCompat.Builder(context, notification) + .setStyle(messagingStyle) + .build() ) - if (notifications.isEmpty()) { - Timber.d("No notifications found for redacted event") - } - notifications.forEach { statusBarNotification -> - val notification = statusBarNotification.notification - val messagingStyle = MessagingStyle.extractMessagingStyleFromNotification(notification) - if (messagingStyle == null) { - Timber.w("Unable to retrieve messaging style from notification") - return@forEach - } - val messageToRedactIndex = messagingStyle.messages.indexOfFirst { message -> - roomRedactions.any { it.redactedEventId.value == message.extras.getString(DefaultNotificationCreator.MESSAGE_EVENT_ID) } - } - if (messageToRedactIndex == -1) { - Timber.d("Unable to find the message to remove from notification") - return@forEach - } - val oldMessage = messagingStyle.messages[messageToRedactIndex] - val content = buildSpannedString { - inSpans(StyleSpan(Typeface.ITALIC)) { - append(stringProvider.getString(CommonStrings.common_message_removed)) - } - } - val newMessage = MessagingStyle.Message( - content, - oldMessage.timestamp, - oldMessage.person - ) - messagingStyle.messages[messageToRedactIndex] = newMessage - notificationDisplayer.showNotificationMessage( - statusBarNotification.tag, - statusBarNotification.id, - NotificationCompat.Builder(context, notification) - .setStyle(messagingStyle) - .build() - ) - } } } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt index 0f65047a14..a0ce8b2edb 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt @@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID_2 import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_SESSION_ID_2 +import io.element.android.libraries.matrix.test.A_THREAD_ID import io.element.android.libraries.push.api.notifications.NotificationIdProvider import io.mockk.every import io.mockk.mockk @@ -80,8 +81,35 @@ class DefaultActiveNotificationsProviderTest { ) val activeNotificationsProvider = createActiveNotificationsProvider(activeNotifications = activeNotifications) - assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID, A_ROOM_ID)).hasSize(1) - assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID_2, A_ROOM_ID_2)).isEmpty() + assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID, A_ROOM_ID, null)).hasSize(1) + assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID_2, A_ROOM_ID_2, null)).isEmpty() + } + + @Test + fun `getMessageNotificationsForRoom with thread id returns only message notifications for a thread using those session and room ids`() { + val activeNotifications = listOf( + aStatusBarNotification( + id = notificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID), + groupId = A_SESSION_ID.value, + tag = "$A_ROOM_ID|$A_THREAD_ID", + ), + aStatusBarNotification(id = notificationIdProvider.getSummaryNotificationId(A_SESSION_ID), groupId = A_SESSION_ID.value, tag = A_ROOM_ID.value), + aStatusBarNotification( + id = notificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID_2), + groupId = A_SESSION_ID_2.value, + tag = "$A_ROOM_ID|$A_THREAD_ID", + ), + aStatusBarNotification(id = notificationIdProvider.getSummaryNotificationId(A_SESSION_ID_2), groupId = A_SESSION_ID_2.value, tag = A_ROOM_ID.value), + aStatusBarNotification( + id = notificationIdProvider.getRoomInvitationNotificationId(A_SESSION_ID_2), + groupId = A_SESSION_ID_2.value, + tag = "$A_ROOM_ID|$A_THREAD_ID", + ), + ) + val activeNotificationsProvider = createActiveNotificationsProvider(activeNotifications = activeNotifications) + + assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID)).hasSize(1) + assertThat(activeNotificationsProvider.getMessageNotificationsForRoom(A_SESSION_ID_2, A_ROOM_ID_2, A_THREAD_ID)).isEmpty() } @Test diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt index ad872cfd1d..694319c9e7 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt @@ -53,6 +53,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) @@ -76,6 +77,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) @Suppress("DEPRECATION") @@ -141,6 +143,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) @@ -160,6 +163,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(2) @@ -189,6 +193,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) val actionTitles = result.actions?.map { it.title } @@ -214,6 +219,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { roomId = A_ROOM_ID, imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, + threadId = null, color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt index af32aeba98..2e7f3fadf0 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolverTest.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.push.impl.notifications import android.content.Context import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.exception.NotificationResolverException import io.element.android.libraries.matrix.api.media.MediaSource @@ -854,7 +855,8 @@ class DefaultNotifiableEventResolverTest { fallbackNotificationFactory = FallbackNotificationFactory( clock = FakeSystemClock(), stringProvider = FakeStringProvider(defaultResult = "You have new messages.") - ) + ), + featureFlagService = FakeFeatureFlagService(), ) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index 36c406d129..b2a4cc1c9b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -64,7 +64,7 @@ class DefaultNotificationDrawerManagerTest { // For now just call all the API. Later, add more valuable tests. val matrixUser = aMatrixUser(id = A_SESSION_ID.value, displayName = "alice", avatarUrl = "mxc://data") val mockRoomGroupMessageCreator = FakeRoomGroupMessageCreator( - createRoomMessageResult = lambdaRecorder { user, _, roomId, _, existingNotification -> + createRoomMessageResult = lambdaRecorder { user, _, roomId, _, _, existingNotification -> assertThat(user).isEqualTo(matrixUser) assertThat(roomId).isEqualTo(A_ROOM_ID) assertThat(existingNotification).isNull() @@ -144,9 +144,16 @@ class DefaultNotificationDrawerManagerTest { messageCreator.createRoomMessageResult.assertions() .isCalledExactly(3) .withSequence( - listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = "alice")), any(), any(), any(), any()), - listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value)), any(), any(), any(), any()), - listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value, avatarUrl = AN_AVATAR_URL)), any(), any(), any(), any()), + listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = "alice")), any(), any(), any(), any(), any()), + listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value)), any(), any(), any(), any(), any()), + listOf( + value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value, avatarUrl = AN_AVATAR_URL)), + any(), + any(), + any(), + any(), + any() + ), ) defaultNotificationDrawerManager.destroy() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt index f0831f6fd0..e34ea0848c 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt @@ -43,6 +43,7 @@ class DefaultSummaryGroupMessageCreatorTest { messageCount = 1, latestTimestamp = A_FAKE_TIMESTAMP + 10, shouldBing = true, + threadId = null, ) ), invitationNotifications = emptyList(), diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt index 7a6f6b0118..1eef69c855 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationBroadcastReceiverHandlerTest.kt @@ -222,10 +222,11 @@ class NotificationBroadcastReceiverHandlerTest { ) val clearMessagesForRoomLambda = lambdaRecorder { _, _ -> } val markAsReadResult = lambdaRecorder> { Result.success(Unit) } + val timeline = FakeTimeline(markAsReadResult = markAsReadResult) val joinedRoom = FakeJoinedRoom( - baseRoom = FakeBaseRoom( - markAsReadResult = markAsReadResult, - ), + baseRoom = FakeBaseRoom(), + liveTimeline = timeline, + createTimelineResult = { Result.success(timeline) }, ) val fakeNotificationCleaner = FakeNotificationCleaner( clearMessagesForRoomLambda = clearMessagesForRoomLambda, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index b8f4364ddb..f563106c14 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -97,6 +97,7 @@ class NotificationDataFactoryTest { currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), events = events, roomId = A_ROOM_ID, + threadId = null, imageLoader = FakeImageLoader().getImageLoader(), existingNotification = null, color = A_COLOR_INT, @@ -105,7 +106,8 @@ class NotificationDataFactoryTest { summaryLine = "A room name: Bob Hello world!", messageCount = events.size, latestTimestamp = events.maxOf { it.timestamp }, - shouldBing = events.any { it.noisy } + shouldBing = events.any { it.noisy }, + threadId = null, ) val roomWithMessage = listOf(A_MESSAGE_EVENT) @@ -152,6 +154,7 @@ class NotificationDataFactoryTest { currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), events = withRedactedRemoved, roomId = A_ROOM_ID, + threadId = null, imageLoader = FakeImageLoader().getImageLoader(), existingNotification = null, color = A_COLOR_INT, @@ -160,7 +163,8 @@ class NotificationDataFactoryTest { summaryLine = "A room name: Bob Hello world!", messageCount = withRedactedRemoved.size, latestTimestamp = withRedactedRemoved.maxOf { it.timestamp }, - shouldBing = withRedactedRemoved.any { it.noisy } + shouldBing = withRedactedRemoved.any { it.noisy }, + threadId = null, ) val fakeImageLoader = FakeImageLoader() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index 069aaf22ba..589d7876f5 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -71,7 +71,7 @@ class NotificationRendererTest { @Test fun `given a room message group notification is added when rendering then show the message notification and update summary`() = runTest { - roomGroupMessageCreator.createRoomMessageResult = lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION } + roomGroupMessageCreator.createRoomMessageResult = lambdaRecorder { _, _, _, _, _, _ -> A_NOTIFICATION } renderEventsAsNotifications(listOf(aNotifiableMessageEvent())) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index 06283a76d0..045cc0492d 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -32,6 +32,7 @@ import io.element.android.libraries.push.impl.notifications.factories.action.Acc import io.element.android.libraries.push.impl.notifications.factories.action.MarkAsReadActionFactory import io.element.android.libraries.push.impl.notifications.factories.action.QuickReplyActionFactory import io.element.android.libraries.push.impl.notifications.factories.action.RejectInvitationActionFactory +import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent @@ -249,7 +250,7 @@ class DefaultNotificationCreatorTest { currentUser = aMatrixUser(), existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), - events = emptyList(), + events = listOf(aNotifiableMessageEvent()), color = A_COLOR_INT, ) result.commonAssertions() @@ -276,7 +277,7 @@ class DefaultNotificationCreatorTest { currentUser = aMatrixUser(), existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), - events = emptyList(), + events = listOf(aNotifiableMessageEvent()), color = A_COLOR_INT, ) result.commonAssertions() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/FakeIntentProvider.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/FakeIntentProvider.kt index 29aade1753..73e199883e 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/FakeIntentProvider.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/FakeIntentProvider.kt @@ -8,11 +8,12 @@ package io.element.android.libraries.push.impl.notifications.factories import android.content.Intent +import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.impl.intent.IntentProvider class FakeIntentProvider : IntentProvider { - override fun getViewRoomIntent(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?) = Intent(Intent.ACTION_VIEW) + override fun getViewRoomIntent(sessionId: SessionId, roomId: RoomId?, threadId: ThreadId?, eventId: EventId?) = Intent(Intent.ACTION_VIEW) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeActiveNotificationsProvider.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeActiveNotificationsProvider.kt index 0e93ba3506..c51db9de6f 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeActiveNotificationsProvider.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeActiveNotificationsProvider.kt @@ -10,18 +10,24 @@ package io.element.android.libraries.push.impl.notifications.fake import android.service.notification.StatusBarNotification import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.impl.notifications.ActiveNotificationsProvider class FakeActiveNotificationsProvider( - private val getMessageNotificationsForRoomResult: (SessionId, RoomId) -> List = { _, _ -> emptyList() }, + private val getMessageNotificationsForRoomResult: (SessionId, RoomId, ThreadId?) -> List = { _, _, _ -> emptyList() }, + private val getAllMessageNotificationsForRoomResult: (SessionId, RoomId) -> List = { _, _ -> emptyList() }, private val getNotificationsForSessionResult: (SessionId) -> List = { emptyList() }, private val getMembershipNotificationForSessionResult: (SessionId) -> List = { emptyList() }, private val getMembershipNotificationForRoomResult: (SessionId, RoomId) -> List = { _, _ -> emptyList() }, private val getSummaryNotificationResult: (SessionId) -> StatusBarNotification? = { null }, private val countResult: (SessionId) -> Int = { 0 }, ) : ActiveNotificationsProvider { - override fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List { - return getMessageNotificationsForRoomResult(sessionId, roomId) + override fun getMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?): List { + return getMessageNotificationsForRoomResult(sessionId, roomId, threadId) + } + + override fun getAllMessageNotificationsForRoom(sessionId: SessionId, roomId: RoomId): List { + return getAllMessageNotificationsForRoomResult(sessionId, roomId) } override fun getNotificationsForSession(sessionId: SessionId): List { diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt index 344c77716f..351300937b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt @@ -11,25 +11,29 @@ import android.app.Notification import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.RoomGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fixtures.A_NOTIFICATION import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent -import io.element.android.tests.testutils.lambda.LambdaFiveParamsRecorder +import io.element.android.tests.testutils.lambda.LambdaSixParamsRecorder import io.element.android.tests.testutils.lambda.lambdaRecorder +// We just can't make the param types fit +@Suppress("MaxLineLength", "ktlint:standard:max-line-length", "ktlint:standard:parameter-wrapping") class FakeRoomGroupMessageCreator( - var createRoomMessageResult: LambdaFiveParamsRecorder, RoomId, ImageLoader, Notification?, Notification> = - lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION } + var createRoomMessageResult: LambdaSixParamsRecorder, RoomId, ThreadId?, ImageLoader, Notification?, Notification> = + lambdaRecorder { _, _, _, _, _, _ -> A_NOTIFICATION } ) : RoomGroupMessageCreator { override suspend fun createRoomMessage( currentUser: MatrixUser, events: List, roomId: RoomId, + threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, @ColorInt color: Int, ): Notification { - return createRoomMessageResult(currentUser, events, roomId, imageLoader, existingNotification) + return createRoomMessageResult(currentUser, events, roomId, threadId, imageLoader, existingNotification) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt index 1b08f7b14c..b27c96d8de 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt @@ -7,21 +7,30 @@ package io.element.android.libraries.push.impl.push +import android.app.Notification import android.service.notification.StatusBarNotification +import androidx.core.app.NotificationCompat +import androidx.core.app.Person import androidx.test.platform.app.InstrumentationRegistry +import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.matrix.test.AN_EVENT_ID_2 import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.matrix.test.A_THREAD_ID +import io.element.android.libraries.matrix.test.A_USER_ID +import io.element.android.libraries.matrix.test.A_USER_NAME +import io.element.android.libraries.push.impl.notifications.factories.DefaultNotificationCreator import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.tests.testutils.lambda.lambdaRecorder import io.mockk.every import io.mockk.mockk -import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @@ -29,43 +38,113 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class DefaultOnRedactedEventReceivedTest { + private val fakePerson = Person.Builder().setName(A_USER_NAME).setKey(A_USER_ID.value).build() + private val fakeMessage = NotificationCompat.MessagingStyle.Message("A message", 0L, fakePerson).also { + it.extras.putString(DefaultNotificationCreator.MESSAGE_EVENT_ID, AN_EVENT_ID.value) + } + private val fakeNotification = NotificationCompat.Builder(InstrumentationRegistry.getInstrumentation().targetContext, "aChannel") + .setStyle( + NotificationCompat.MessagingStyle(fakePerson) + .addMessage(fakeMessage) + ) + .setGroup(A_SESSION_ID.value) + .build() + + private val fakeIncorrectMessage = NotificationCompat.MessagingStyle.Message("The wrong message", 0L, fakePerson).also { + it.extras.putString(DefaultNotificationCreator.MESSAGE_EVENT_ID, AN_EVENT_ID_2.value) + } + private val fakeIncorrectNotification = NotificationCompat.Builder(InstrumentationRegistry.getInstrumentation().targetContext, "aChannel") + .setGroup(A_SESSION_ID.value) + .setStyle( + NotificationCompat.MessagingStyle(fakePerson) + .addMessage(fakeIncorrectMessage) + ) + .build() + @Test fun `when no notifications are found, nothing happen`() = runTest { + val showNotificationLambda = lambdaRecorder { _, _, _ -> true } val sut = createDefaultOnRedactedEventReceived( - getMessageNotificationsForRoomResult = { _, _ -> emptyList() } + getAllMessageNotificationsForRoomResult = { _, _ -> emptyList() }, + displayer = FakeNotificationDisplayer(showNotificationLambda), ) sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) + showNotificationLambda.assertions().isNeverCalled() } @Test fun `when a notification is found, try to retrieve the message`() = runTest { + val showNotificationLambda = lambdaRecorder { tag, id, _ -> + assertThat(tag).isEqualTo(A_ROOM_ID.value) + assertThat(id).isEqualTo(1) + true + } val sut = createDefaultOnRedactedEventReceived( - getMessageNotificationsForRoomResult = { _, _ -> + getAllMessageNotificationsForRoomResult = { _, _ -> listOf( mockk { - every { notification } returns mockk {} + every { id } returns 1 + every { notification } returns fakeNotification + every { tag } returns A_ROOM_ID.value + }, + mockk { + every { id } returns 2 + every { notification } returns fakeIncorrectNotification + every { tag } returns A_ROOM_ID.value } ) - } + }, + displayer = FakeNotificationDisplayer(showNotificationLambda), ) sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) + showNotificationLambda.assertions().isCalledOnce() } - private fun TestScope.createDefaultOnRedactedEventReceived( - getMessageNotificationsForRoomResult: (SessionId, RoomId) -> List = { _, _ -> lambdaError() }, + @Test + fun `when thread notifications are found, try to retrieve the message`() = runTest { + val showNotificationLambda = lambdaRecorder { tag, id, _ -> + assertThat(tag).isEqualTo("$A_ROOM_ID|$A_THREAD_ID") + assertThat(id).isEqualTo(1) + true + } + val sut = createDefaultOnRedactedEventReceived( + getAllMessageNotificationsForRoomResult = { _, _ -> + listOf( + mockk { + every { id } returns 1 + every { notification } returns fakeNotification + every { tag } returns "$A_ROOM_ID|$A_THREAD_ID" + }, + mockk { + every { id } returns 2 + every { notification } returns fakeIncorrectNotification + every { tag } returns A_ROOM_ID.value + } + ) + }, + displayer = FakeNotificationDisplayer(showNotificationMessageResult = showNotificationLambda), + ) + sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) + + showNotificationLambda.assertions().isCalledOnce() + } + + private fun createDefaultOnRedactedEventReceived( + getAllMessageNotificationsForRoomResult: (SessionId, RoomId) -> List = { _, _ -> lambdaError() }, + displayer: FakeNotificationDisplayer = FakeNotificationDisplayer(), ): DefaultOnRedactedEventReceived { val context = InstrumentationRegistry.getInstrumentation().context return DefaultOnRedactedEventReceived( activeNotificationsProvider = FakeActiveNotificationsProvider( - getMessageNotificationsForRoomResult = getMessageNotificationsForRoomResult, + getMessageNotificationsForRoomResult = { _, _, _ -> lambdaError() }, + getAllMessageNotificationsForRoomResult = getAllMessageNotificationsForRoomResult, getNotificationsForSessionResult = { lambdaError() }, getMembershipNotificationForSessionResult = { lambdaError() }, getMembershipNotificationForRoomResult = { _, _ -> lambdaError() }, getSummaryNotificationResult = { lambdaError() }, countResult = { lambdaError() }, ), - notificationDisplayer = FakeNotificationDisplayer(), - coroutineScope = this, + notificationDisplayer = displayer, context = context, stringProvider = FakeStringProvider(), ) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt index b5a3731830..6261aa5b63 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/FakeOnRedactedEventReceived.kt @@ -13,7 +13,7 @@ import io.element.android.tests.testutils.lambda.lambdaError class FakeOnRedactedEventReceived( private val onRedactedEventsReceivedResult: (List) -> Unit = { lambdaError() }, ) : OnRedactedEventReceived { - override fun onRedactedEventsReceived(redactions: List) { + override suspend fun onRedactedEventsReceived(redactions: List) { onRedactedEventsReceivedResult(redactions) } } diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt index be6a31ca75..f3ad066441 100644 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt +++ b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeNotificationCleaner.kt @@ -10,12 +10,14 @@ package io.element.android.libraries.push.test.notifications import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.tests.testutils.lambda.lambdaError class FakeNotificationCleaner( private val clearAllMessagesEventsLambda: (SessionId) -> Unit = { lambdaError() }, private val clearMessagesForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() }, + private val clearMessagesForThreadLambda: (SessionId, RoomId, ThreadId) -> Unit = { _, _, _ -> lambdaError() }, private val clearEventLambda: (SessionId, EventId) -> Unit = { _, _ -> lambdaError() }, private val clearMembershipNotificationForSessionLambda: (SessionId) -> Unit = { lambdaError() }, private val clearMembershipNotificationForRoomLambda: (SessionId, RoomId) -> Unit = { _, _ -> lambdaError() } @@ -28,6 +30,10 @@ class FakeNotificationCleaner( clearMessagesForRoomLambda(sessionId, roomId) } + override fun clearMessagesForThread(sessionId: SessionId, roomId: RoomId, threadId: ThreadId) { + clearMessagesForThreadLambda(sessionId, roomId, threadId) + } + override fun clearEvent(sessionId: SessionId, eventId: EventId) { clearEventLambda(sessionId, eventId) } From 45b5783b23d572d70098a233657d2b6be9ec8a8c Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 30 Oct 2025 16:27:51 +0100 Subject: [PATCH 255/898] Display only valid emojis in recent emoji list (#5612) * Create `:libraries:recentemojis` and move `AddRecentEmoji` and `GetRecentEmojis` there - Make sure `GetRecentEmojis` won't return duplicate or invalid emojis. - `ActionListPresenter` now handles merging suggested and recent emojis, not `ActionListView`. --- .../io/element/android/x/di/AppModule.kt | 4 +- features/messages/impl/build.gradle.kts | 2 + .../messages/impl/MessagesPresenter.kt | 2 +- .../impl/actionlist/ActionListPresenter.kt | 10 +- .../actionlist/ActionListStateProvider.kt | 24 ++-- .../impl/actionlist/ActionListView.kt | 11 +- .../customreaction/CustomReactionPresenter.kt | 6 +- .../messages/impl/MessagesPresenterTest.kt | 2 +- .../actionlist/ActionListPresenterTest.kt | 108 +++++++++++++----- .../CustomReactionPresenterTest.kt | 4 +- .../customreaction/FakeEmojibaseProvider.kt | 16 --- .../components/media/WaveFormSamples.kt | 3 +- .../api/recentemojis/GetRecentEmojis.kt | 28 ----- libraries/recentemojis/api/build.gradle.kts | 26 +++++ .../recentemojis/api}/AddRecentEmoji.kt | 2 +- .../recentemojis/api}/EmojibaseProvider.kt | 4 +- .../recentemojis/api/GetRecentEmojis.kt | 17 +++ libraries/recentemojis/impl/build.gradle.kts | 35 ++++++ .../impl}/DefaultEmojibaseProvider.kt | 5 +- .../impl/DefaultGetRecentEmojis.kt | 37 ++++++ .../impl/DefaultGetRecentEmojisTest.kt | 68 +++++++++++ libraries/recentemojis/test/build.gradle.kts | 25 ++++ .../test/FakeEmojibaseProvider.kt | 22 ++++ .../kotlin/extension/DependencyHandleScope.kt | 1 + 24 files changed, 351 insertions(+), 111 deletions(-) delete mode 100644 features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt delete mode 100644 libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt create mode 100644 libraries/recentemojis/api/build.gradle.kts rename libraries/{matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis => recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api}/AddRecentEmoji.kt (91%) rename {features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction => libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api}/EmojibaseProvider.kt (69%) create mode 100644 libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/GetRecentEmojis.kt create mode 100644 libraries/recentemojis/impl/build.gradle.kts rename {features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction => libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl}/DefaultEmojibaseProvider.kt (75%) create mode 100644 libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojis.kt create mode 100644 libraries/recentemojis/impl/src/test/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojisTest.kt create mode 100644 libraries/recentemojis/test/build.gradle.kts create mode 100644 libraries/recentemojis/test/src/main/kotlin/io/element/android/libraries/recentemojis/test/FakeEmojibaseProvider.kt diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index d98a05321d..48b27d7879 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -18,8 +18,6 @@ import dev.zacsweers.metro.Provides import dev.zacsweers.metro.SingleIn import io.element.android.appconfig.ApplicationConfig import io.element.android.features.enterprise.api.EnterpriseService -import io.element.android.features.messages.impl.timeline.components.customreaction.DefaultEmojibaseProvider -import io.element.android.features.messages.impl.timeline.components.customreaction.EmojibaseProvider import io.element.android.libraries.androidutils.system.getVersionCodeFromManifest import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.meta.BuildMeta @@ -29,6 +27,8 @@ import io.element.android.libraries.di.BaseDirectory import io.element.android.libraries.di.CacheDirectory import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.di.annotations.ApplicationContext +import io.element.android.libraries.recentemojis.api.EmojibaseProvider +import io.element.android.libraries.recentemojis.impl.DefaultEmojibaseProvider import io.element.android.x.BuildConfig import io.element.android.x.R import kotlinx.coroutines.CoroutineName diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index 7c4230e603..cd72c4d84a 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -49,6 +49,7 @@ dependencies { implementation(projects.libraries.mediaupload.api) implementation(projects.libraries.permissions.api) implementation(projects.libraries.preferences.api) + implementation(projects.libraries.recentemojis.api) implementation(projects.libraries.roomselect.api) implementation(projects.libraries.voiceplayer.api) implementation(projects.libraries.voicerecorder.api) @@ -94,4 +95,5 @@ dependencies { testImplementation(projects.libraries.testtags) testImplementation(projects.features.poll.test) testImplementation(projects.libraries.eventformatter.test) + testImplementation(projects.libraries.recentemojis.test) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 503fd62fa5..9056437218 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -73,7 +73,6 @@ import io.element.android.libraries.matrix.api.core.toThreadId import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import io.element.android.libraries.matrix.api.permalink.PermalinkParser -import io.element.android.libraries.matrix.api.recentemojis.AddRecentEmoji import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.MessageEventType import io.element.android.libraries.matrix.api.room.RoomInfo @@ -87,6 +86,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.EventOrTransa import io.element.android.libraries.matrix.ui.messages.reply.map import io.element.android.libraries.matrix.ui.model.getAvatarData import io.element.android.libraries.matrix.ui.room.getDirectRoomMember +import io.element.android.libraries.recentemojis.api.AddRecentEmoji import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.analytics.api.AnalyticsService diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt index 25da8c2749..192ff30f39 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt @@ -43,10 +43,10 @@ import io.element.android.libraries.di.RoomScope import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.core.EventId -import io.element.android.libraries.matrix.api.recentemojis.GetRecentEmojis import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.preferences.api.store.AppPreferencesStore +import io.element.android.libraries.recentemojis.api.GetRecentEmojis import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList @@ -87,6 +87,8 @@ class DefaultActionListPresenter( private val comparator = TimelineItemActionComparator() + private val suggestedEmojis = persistentListOf("👍️", "👎️", "🔥", "❤️", "👏") + @Composable override fun present(): ActionListState { val localCoroutineScope = rememberCoroutineScope() @@ -146,6 +148,7 @@ class DefaultActionListPresenter( val displayEmojiReactions = usersEventPermissions.canSendReaction && timelineItem.content.canReact() if (actions.isNotEmpty() || displayEmojiReactions || verifiedUserSendFailure != VerifiedUserSendFailure.None) { + val recentEmojis = getRecentEmojis().getOrNull()?.toImmutableList() ?: persistentListOf() target.value = ActionListState.Target.Success( event = timelineItem, sentTimeFull = dateFormatter.format( @@ -156,7 +159,10 @@ class DefaultActionListPresenter( displayEmojiReactions = displayEmojiReactions, verifiedUserSendFailure = verifiedUserSendFailure, actions = actions.toImmutableList(), - recentEmojis = getRecentEmojis().getOrNull()?.toImmutableList() ?: persistentListOf() + // Merge suggested and recent emojis, removing duplicates and returning at most 100 + recentEmojis = (suggestedEmojis + recentEmojis).distinct() + .take(100) + .toImmutableList() ) } else { target.value = ActionListState.Target.None diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt index eeab4aa3a0..1bee9d6478 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListStateProvider.kt @@ -27,6 +27,8 @@ import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList open class ActionListStateProvider : PreviewParameterProvider { + private val suggestedEmojis = persistentListOf("👍️", "👎️", "🔥", "❤️", "👏") + override val values: Sequence get() { val reactionsState = aTimelineItemReactions(1, isHighlighted = true) @@ -42,7 +44,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -58,7 +60,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList( copyAction = TimelineItemAction.CopyCaption, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -73,7 +75,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList( copyAction = TimelineItemAction.CopyCaption, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -88,7 +90,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList( copyAction = null, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -103,7 +105,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList( copyAction = TimelineItemAction.CopyCaption, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -118,7 +120,7 @@ open class ActionListStateProvider : PreviewParameterProvider { actions = aTimelineItemActionList( copyAction = null, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -131,7 +133,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -144,7 +146,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = false, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ), ), anActionListState( @@ -157,7 +159,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = false, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemPollActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ), ), anActionListState( @@ -170,7 +172,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = true, verifiedUserSendFailure = VerifiedUserSendFailure.None, actions = aTimelineItemActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), anActionListState( @@ -180,7 +182,7 @@ open class ActionListStateProvider : PreviewParameterProvider { displayEmojiReactions = true, verifiedUserSendFailure = anUnsignedDeviceSendFailure(), actions = aTimelineItemActionList(), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ), ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt index a891e9d587..d322ac191f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt @@ -97,8 +97,6 @@ import io.element.android.libraries.matrix.ui.messages.sender.SenderName import io.element.android.libraries.matrix.ui.messages.sender.SenderNameMode import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -345,7 +343,6 @@ private fun MessageSummary( } private val emojiRippleRadius = 24.dp -private val suggestedEmojis = persistentListOf("👍️", "👎️", "🔥", "❤️", "👏") @Composable private fun EmojiReactionsRow( @@ -360,12 +357,6 @@ private fun EmojiReactionsRow( ) { val backgroundColor = ElementTheme.colors.bgCanvasDefault - val emojis = remember(recentEmojis) { - (suggestedEmojis + recentEmojis.filter { it !in suggestedEmojis }) - .take(100) - .toImmutableList() - } - LazyRow( modifier = Modifier .weight(1f, fill = true) @@ -388,7 +379,7 @@ private fun EmojiReactionsRow( contentPadding = PaddingValues(horizontal = 16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), ) { - items(emojis) { emoji -> + items(recentEmojis) { emoji -> val isHighlighted = highlightedEmojis.contains(emoji) EmojiButton( modifier = Modifier diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt index ba13c461e4..3d1cc93d58 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt @@ -17,10 +17,10 @@ import androidx.compose.runtime.setValue import dev.zacsweers.metro.Inject import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.architecture.Presenter -import io.element.android.libraries.matrix.api.recentemojis.GetRecentEmojis +import io.element.android.libraries.recentemojis.api.EmojibaseProvider +import io.element.android.libraries.recentemojis.api.GetRecentEmojis import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.launch @@ -41,7 +41,7 @@ class CustomReactionPresenter( fun handleShowCustomReactionSheet(event: TimelineItem.Event) { target.value = CustomReactionState.Target.Loading(event) localCoroutineScope.launch { - recentEmojis = getRecentEmojis().getOrNull().orEmpty().toImmutableList() + recentEmojis = getRecentEmojis().getOrNull() ?: persistentListOf() target.value = CustomReactionState.Target.Success( event = event, emojibaseStore = emojibaseProvider.emojibaseStore diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index b25e097d48..34623a0c33 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -59,7 +59,6 @@ import io.element.android.libraries.matrix.api.core.toThreadId import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.api.permalink.PermalinkParser -import io.element.android.libraries.matrix.api.recentemojis.AddRecentEmoji import io.element.android.libraries.matrix.api.room.MessageEventType import io.element.android.libraries.matrix.api.room.RoomMembersState import io.element.android.libraries.matrix.api.room.RoomMembershipState @@ -89,6 +88,7 @@ import io.element.android.libraries.matrix.test.room.aRoomMember import io.element.android.libraries.matrix.test.timeline.FakeTimeline import io.element.android.libraries.matrix.test.timeline.aTimelineItemDebugInfo import io.element.android.libraries.matrix.ui.messages.reply.InReplyToDetails +import io.element.android.libraries.recentemojis.api.AddRecentEmoji import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.textcomposer.model.TextEditorState import io.element.android.libraries.textcomposer.model.aTextEditorStateMarkdown diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt index 52118a400d..e5786614ed 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenterTest.kt @@ -42,9 +42,11 @@ import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.aRoomInfo import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore +import io.element.android.libraries.recentemojis.api.GetRecentEmojis import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.test import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -54,6 +56,8 @@ class ActionListPresenterTest { @get:Rule val warmUpRule = WarmUpRule() + private val suggestedEmojis = persistentListOf("👍️", "👎️", "🔥", "❤️", "👏") + @Test fun `present - initial state`() = runTest { val presenter = createActionListPresenter(isDeveloperModeEnabled = true) @@ -95,7 +99,7 @@ class ActionListPresenterTest { actions = persistentListOf( TimelineItemAction.ViewSource, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -137,7 +141,7 @@ class ActionListPresenterTest { actions = persistentListOf( TimelineItemAction.ViewSource, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -185,7 +189,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.ReportContent, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -232,7 +236,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.ReportContent, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -279,7 +283,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.ReportContent, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -328,7 +332,7 @@ class ActionListPresenterTest { TimelineItemAction.ReportContent, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -377,7 +381,7 @@ class ActionListPresenterTest { TimelineItemAction.ReportContent, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -425,7 +429,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -472,7 +476,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -519,7 +523,7 @@ class ActionListPresenterTest { TimelineItemAction.CopyText, TimelineItemAction.ViewSource, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -563,7 +567,7 @@ class ActionListPresenterTest { TimelineItemAction.CopyText, TimelineItemAction.ViewSource, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -611,7 +615,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -663,7 +667,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -713,7 +717,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.ReportContent, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -754,7 +758,7 @@ class ActionListPresenterTest { actions = persistentListOf( TimelineItemAction.ViewSource, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -828,7 +832,7 @@ class ActionListPresenterTest { TimelineItemAction.CopyText, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -875,7 +879,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -929,7 +933,7 @@ class ActionListPresenterTest { TimelineItemAction.ViewSource, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) initialState.eventSink.invoke(ActionListEvents.Clear) @@ -1023,7 +1027,7 @@ class ActionListPresenterTest { TimelineItemAction.CopyText, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1068,7 +1072,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1112,7 +1116,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1155,7 +1159,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1201,7 +1205,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1239,7 +1243,7 @@ class ActionListPresenterTest { actions = persistentListOf( TimelineItemAction.ViewSource ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1317,7 +1321,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1371,7 +1375,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1426,7 +1430,7 @@ class ActionListPresenterTest { TimelineItemAction.Pin, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } @@ -1478,11 +1482,56 @@ class ActionListPresenterTest { TimelineItemAction.Reply, TimelineItemAction.Redact, ), - recentEmojis = persistentListOf(), + recentEmojis = suggestedEmojis, ) ) } } + + @Test + fun `present - recentEmojis merges suggested and recent emojis`() = runTest { + val suggestedEmojis = persistentListOf("👍️", "👎️", "🔥", "❤️", "👏") + val otherEmojis = (0..100).map { it.toString() } + + val presenter = createActionListPresenter( + isDeveloperModeEnabled = false, + recentEmojis = GetRecentEmojis { Result.success((listOf("👍️", ":)", "❤️") + otherEmojis).toImmutableList()) }, + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + val messageEvent = aMessageEvent( + eventId = null, + transactionId = A_TRANSACTION_ID, + isMine = true, + isEditable = false, + content = aTimelineItemVoiceContent( + caption = null, + ), + ) + + initialState.eventSink.invoke( + ActionListEvents.ComputeForMessage( + event = messageEvent, + userEventPermissions = aUserEventPermissions( + canRedactOwn = true, + canRedactOther = false, + canSendMessage = true, + canSendReaction = true, + canPinUnpin = true + ) + ) + ) + val successState = awaitItem() + assertThat(successState.target).isInstanceOf(ActionListState.Target.Success::class.java) + + // Check items are deduplicated between suggested and recent emojis and we take at most 100 items + val expectedEmojis = (suggestedEmojis + persistentListOf(":)") + otherEmojis).take(100) + assertThat((successState.target as ActionListState.Target.Success).recentEmojis) + .isEqualTo(expectedEmojis) + } + } } private fun createActionListPresenter( @@ -1490,6 +1539,7 @@ private fun createActionListPresenter( room: BaseRoom = FakeBaseRoom(), timelineMode: Timeline.Mode = Timeline.Mode.Live, featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(), + recentEmojis: GetRecentEmojis = GetRecentEmojis { Result.success(persistentListOf()) }, ): ActionListPresenter { val preferencesStore = InMemoryAppPreferencesStore(isDeveloperModeEnabled = isDeveloperModeEnabled) return DefaultActionListPresenter( @@ -1500,6 +1550,6 @@ private fun createActionListPresenter( dateFormatter = FakeDateFormatter(), timelineMode = timelineMode, featureFlagService = featureFlagService, - getRecentEmojis = { Result.success(persistentListOf()) }, + getRecentEmojis = recentEmojis, ) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt index e34bbdcbef..f26c659bb5 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenterTest.kt @@ -14,7 +14,9 @@ import com.google.common.truth.Truth.assertThat import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.aTimelineItemReactions import io.element.android.libraries.matrix.test.AN_EVENT_ID +import io.element.android.libraries.recentemojis.test.FakeEmojibaseProvider import io.element.android.tests.testutils.WarmUpRule +import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -25,7 +27,7 @@ class CustomReactionPresenterTest { private val presenter = CustomReactionPresenter( emojibaseProvider = FakeEmojibaseProvider(), - getRecentEmojis = { Result.success(emptyList()) }, + getRecentEmojis = { Result.success(persistentListOf()) }, ) @Test diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt deleted file mode 100644 index 498027bae6..0000000000 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/FakeEmojibaseProvider.kt +++ /dev/null @@ -1,16 +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.messages.impl.timeline.components.customreaction - -import io.element.android.emojibasebindings.EmojibaseStore -import kotlinx.collections.immutable.persistentMapOf - -class FakeEmojibaseProvider : EmojibaseProvider { - override val emojibaseStore: EmojibaseStore - get() = EmojibaseStore(persistentMapOf()) -} diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt index 18efa2d3f3..72d4af60c0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/media/WaveFormSamples.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.designsystem.components.media import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList -import kotlinx.collections.immutable.toPersistentList object WaveFormSamples { val allRangeWaveForm = List(100) { it.toFloat() / 100 }.toImmutableList() @@ -26,5 +25,5 @@ object WaveFormSamples { 0.000f, 0.003f, ) - val longRealisticWaveForm = List(4) { realisticWaveForm }.flatten().toPersistentList() + val longRealisticWaveForm = List(4) { realisticWaveForm }.flatten().toImmutableList() } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt deleted file mode 100644 index 2a887ae297..0000000000 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/GetRecentEmojis.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.api.recentemojis - -import dev.zacsweers.metro.ContributesBinding -import io.element.android.libraries.core.coroutine.CoroutineDispatchers -import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.MatrixClient -import kotlinx.coroutines.withContext - -fun interface GetRecentEmojis { - suspend operator fun invoke(): Result> -} - -@ContributesBinding(SessionScope::class) -class DefaultGetRecentEmojis( - private val client: MatrixClient, - private val dispatchers: CoroutineDispatchers, -) : GetRecentEmojis { - override suspend operator fun invoke(): Result> = withContext(dispatchers.io) { - client.getRecentEmojis() - } -} diff --git a/libraries/recentemojis/api/build.gradle.kts b/libraries/recentemojis/api/build.gradle.kts new file mode 100644 index 0000000000..7302d965c8 --- /dev/null +++ b/libraries/recentemojis/api/build.gradle.kts @@ -0,0 +1,26 @@ +import extension.setupDependencyInjection + +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.recentemojis.api" +} + +setupDependencyInjection() + +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + + implementation(libs.kotlinx.collections.immutable) + implementation(libs.matrix.emojibase.bindings) +} diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/AddRecentEmoji.kt b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/AddRecentEmoji.kt similarity index 91% rename from libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/AddRecentEmoji.kt rename to libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/AddRecentEmoji.kt index da657ea78a..63731fa9cd 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/recentemojis/AddRecentEmoji.kt +++ b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/AddRecentEmoji.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.libraries.matrix.api.recentemojis +package io.element.android.libraries.recentemojis.api import dev.zacsweers.metro.Inject import io.element.android.libraries.core.coroutine.CoroutineDispatchers diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojibaseProvider.kt b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/EmojibaseProvider.kt similarity index 69% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojibaseProvider.kt rename to libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/EmojibaseProvider.kt index ce394150b7..45896dc83c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojibaseProvider.kt +++ b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/EmojibaseProvider.kt @@ -1,11 +1,11 @@ /* - * Copyright 2023, 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.messages.impl.timeline.components.customreaction +package io.element.android.libraries.recentemojis.api import io.element.android.emojibasebindings.EmojibaseStore diff --git a/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/GetRecentEmojis.kt b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/GetRecentEmojis.kt new file mode 100644 index 0000000000..bff2b98b33 --- /dev/null +++ b/libraries/recentemojis/api/src/main/kotlin/io/element/android/libraries/recentemojis/api/GetRecentEmojis.kt @@ -0,0 +1,17 @@ +/* + * 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.recentemojis.api + +import kotlinx.collections.immutable.ImmutableList + +/** + * Returns the list of recently used emojis for reactions. + */ +fun interface GetRecentEmojis { + suspend operator fun invoke(): Result> +} diff --git a/libraries/recentemojis/impl/build.gradle.kts b/libraries/recentemojis/impl/build.gradle.kts new file mode 100644 index 0000000000..c25539500e --- /dev/null +++ b/libraries/recentemojis/impl/build.gradle.kts @@ -0,0 +1,35 @@ +/* + * 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. + */ + +import extension.setupDependencyInjection + +plugins { + id("io.element.android-compose-library") + id("kotlin-parcelize") +} + +android { + namespace = "io.element.android.libraries.recentemojis.impl" +} + +setupDependencyInjection() + +dependencies { + api(projects.libraries.recentemojis.api) + implementation(projects.libraries.matrix.api) + implementation(libs.kotlinx.collections.immutable) + implementation(libs.matrix.emojibase.bindings) + + testImplementation(projects.libraries.recentemojis.test) + testImplementation(libs.test.junit) + testImplementation(libs.coroutines.test) + testImplementation(libs.molecule.runtime) + testImplementation(libs.test.truth) + testImplementation(libs.test.turbine) + testImplementation(projects.libraries.matrix.test) + testImplementation(projects.tests.testutils) +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt b/libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultEmojibaseProvider.kt similarity index 75% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt rename to libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultEmojibaseProvider.kt index e07c78f578..33c42715bc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/DefaultEmojibaseProvider.kt +++ b/libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultEmojibaseProvider.kt @@ -1,15 +1,16 @@ /* - * Copyright 2023, 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.messages.impl.timeline.components.customreaction +package io.element.android.libraries.recentemojis.impl import android.content.Context import io.element.android.emojibasebindings.EmojibaseDatasource import io.element.android.emojibasebindings.EmojibaseStore +import io.element.android.libraries.recentemojis.api.EmojibaseProvider class DefaultEmojibaseProvider(val context: Context) : EmojibaseProvider { override val emojibaseStore: EmojibaseStore by lazy { diff --git a/libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojis.kt b/libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojis.kt new file mode 100644 index 0000000000..43e2fab8a8 --- /dev/null +++ b/libraries/recentemojis/impl/src/main/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojis.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.recentemojis.impl + +import dev.zacsweers.metro.ContributesBinding +import io.element.android.libraries.core.coroutine.CoroutineDispatchers +import io.element.android.libraries.di.SessionScope +import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.recentemojis.api.EmojibaseProvider +import io.element.android.libraries.recentemojis.api.GetRecentEmojis +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.withContext + +@ContributesBinding(SessionScope::class) +class DefaultGetRecentEmojis( + private val client: MatrixClient, + private val dispatchers: CoroutineDispatchers, + private val emojibaseProvider: EmojibaseProvider, +) : GetRecentEmojis { + override suspend operator fun invoke(): Result> = withContext(dispatchers.io) { + val allEmojis = emojibaseProvider.emojibaseStore.allEmojis + client.getRecentEmojis() + .map { emojis -> + // Remove any possible duplicates + emojis.distinct() + // Return only those emojis that are valid + .filter { recent -> allEmojis.any { recent == it.unicode } } + .toImmutableList() + } + } +} diff --git a/libraries/recentemojis/impl/src/test/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojisTest.kt b/libraries/recentemojis/impl/src/test/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojisTest.kt new file mode 100644 index 0000000000..8f9c15693f --- /dev/null +++ b/libraries/recentemojis/impl/src/test/kotlin/io/element/android/libraries/recentemojis/impl/DefaultGetRecentEmojisTest.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.recentemojis.impl + +import com.google.common.truth.Truth.assertThat +import io.element.android.emojibasebindings.Emoji +import io.element.android.emojibasebindings.EmojibaseCategory +import io.element.android.emojibasebindings.EmojibaseCategory.People +import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.recentemojis.test.FakeEmojibaseProvider +import io.element.android.tests.testutils.testCoroutineDispatchers +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.ImmutableMap +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toImmutableList +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runTest +import org.junit.Test + +class DefaultGetRecentEmojisTest { + @Test + fun `invoke - deduplicates results`() = runTest { + val recentEmojiResult = persistentListOf(":)", ":D", ":)") + val getRecentEmojis = createDefaultGetRecentEmojis( + recentEmojis = { Result.success(recentEmojiResult) }, + emojibaseContents = persistentMapOf(People to recentEmojiResult.map { emoji(it) }.toImmutableList()) + ) + + assertThat(getRecentEmojis()).isEqualTo(Result.success(persistentListOf(":)", ":D"))) + } + + @Test + fun `invoke - removes non-standard emojis`() = runTest { + val recentEmojiResult = persistentListOf(":)", ":D", "Custom reaction") + val getRecentEmojis = createDefaultGetRecentEmojis( + recentEmojis = { Result.success(recentEmojiResult) }, + emojibaseContents = persistentMapOf( + People to persistentListOf(emoji(":)"), emoji(":D")) + ) + ) + + assertThat(getRecentEmojis()).isEqualTo(Result.success(persistentListOf(":)", ":D"))) + } + + private fun emoji(unicode: String) = Emoji( + hexcode = "", + label = "", + tags = null, + shortcodes = persistentListOf(), + unicode = unicode, + skins = null, + ) + + private fun TestScope.createDefaultGetRecentEmojis( + recentEmojis: () -> Result> = { Result.success(emptyList()) }, + emojibaseContents: ImmutableMap> = persistentMapOf(People to persistentListOf(emoji(":)"))), + ) = DefaultGetRecentEmojis( + client = FakeMatrixClient(getRecentEmojisLambda = recentEmojis), + dispatchers = testCoroutineDispatchers(), + emojibaseProvider = FakeEmojibaseProvider(emojibaseContents), + ) +} diff --git a/libraries/recentemojis/test/build.gradle.kts b/libraries/recentemojis/test/build.gradle.kts new file mode 100644 index 0000000000..4d851f410d --- /dev/null +++ b/libraries/recentemojis/test/build.gradle.kts @@ -0,0 +1,25 @@ +/* + * 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. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.recentemojis.test" +} + +dependencies { + api(projects.libraries.matrix.api) + api(libs.coroutines.core) + + implementation(libs.kotlinx.collections.immutable) + implementation(libs.coroutines.test) + implementation(projects.tests.testutils) + implementation(projects.libraries.recentemojis.api) + implementation(libs.matrix.emojibase.bindings) +} diff --git a/libraries/recentemojis/test/src/main/kotlin/io/element/android/libraries/recentemojis/test/FakeEmojibaseProvider.kt b/libraries/recentemojis/test/src/main/kotlin/io/element/android/libraries/recentemojis/test/FakeEmojibaseProvider.kt new file mode 100644 index 0000000000..b882823d20 --- /dev/null +++ b/libraries/recentemojis/test/src/main/kotlin/io/element/android/libraries/recentemojis/test/FakeEmojibaseProvider.kt @@ -0,0 +1,22 @@ +/* + * 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.recentemojis.test + +import io.element.android.emojibasebindings.Emoji +import io.element.android.emojibasebindings.EmojibaseCategory +import io.element.android.emojibasebindings.EmojibaseStore +import io.element.android.libraries.recentemojis.api.EmojibaseProvider +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toPersistentMap + +class FakeEmojibaseProvider( + val emojis: Map> = mapOf(), +) : EmojibaseProvider { + override val emojibaseStore: EmojibaseStore + get() = EmojibaseStore(emojis.toPersistentMap()) +} diff --git a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt index 3ca01ef2f6..52184ea318 100644 --- a/plugins/src/main/kotlin/extension/DependencyHandleScope.kt +++ b/plugins/src/main/kotlin/extension/DependencyHandleScope.kt @@ -119,6 +119,7 @@ fun DependencyHandlerScope.allLibrariesImpl() { implementation(project(":libraries:wellknown:impl")) implementation(project(":libraries:oidc:impl")) implementation(project(":libraries:workmanager:impl")) + implementation(project(":libraries:recentemojis:impl")) } fun DependencyHandlerScope.allServicesImpl() { From 09a18ad7ca8787968c1ece9f7b2360417d40e403 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 29 Oct 2025 10:30:30 +0100 Subject: [PATCH 256/898] Rename fun in Callback for clarity. --- .../appnav/LoggedInAppScopeFlowNode.kt | 12 +- .../android/appnav/LoggedInFlowNode.kt | 54 ++++----- .../android/appnav/NotLoggedInFlowNode.kt | 6 +- .../io/element/android/appnav/RootFlowNode.kt | 8 +- .../room/joined/JoinedRoomLoadedFlowNode.kt | 42 +++---- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 2 +- .../FtueSessionVerificationFlowNode.kt | 11 +- .../ChooseSelfVerificationModeNode.kt | 16 +-- .../features/home/api/HomeEntryPoint.kt | 14 +-- .../features/home/impl/HomeFlowNode.kt | 14 +-- .../home/impl/DefaultHomeEntryPointTest.kt | 14 +-- .../licenses/impl/DependenciesFlowNode.kt | 2 +- .../impl/list/DependencyLicensesListNode.kt | 4 +- .../settings/LockScreenSettingsFlowNode.kt | 2 +- .../impl/settings/LockScreenSettingsNode.kt | 4 +- .../features/login/api/LoginEntryPoint.kt | 2 +- .../features/login/impl/LoginFlowNode.kt | 32 +++--- .../login/impl/qrcode/QrCodeLoginFlowNode.kt | 8 +- .../ChangeAccountProviderNode.kt | 4 +- .../ChooseAccountProviderNode.kt | 12 +- .../ConfirmAccountProviderNode.kt | 16 +-- .../impl/screens/onboarding/OnBoardingNode.kt | 28 ++--- .../screens/qrcode/intro/QrCodeIntroNode.kt | 8 +- .../screens/qrcode/scan/QrCodeScanNode.kt | 8 +- .../login/impl/DefaultLoginEntryPointTest.kt | 2 +- .../features/logout/api/LogoutEntryPoint.kt | 2 +- .../features/logout/impl/LogoutNode.kt | 2 +- .../impl/DefaultLogoutEntryPointTest.kt | 2 +- .../messages/api/MessagesEntryPoint.kt | 8 +- .../messages/impl/MessagesFlowNode.kt | 98 ++++++++-------- .../messages/impl/MessagesNavigator.kt | 14 +-- .../features/messages/impl/MessagesNode.kt | 108 +++++++++--------- .../messages/impl/MessagesPresenter.kt | 10 +- .../MessageComposerPresenter.kt | 2 +- .../list/PinnedMessagesListNavigator.kt | 6 +- .../pinned/list/PinnedMessagesListNode.kt | 40 +++---- .../list/PinnedMessagesListPresenter.kt | 6 +- .../impl/threads/ThreadedMessagesNode.kt | 82 ++++++------- .../impl/timeline/TimelinePresenter.kt | 10 +- .../impl/DefaultMessagesEntryPointTest.kt | 8 +- .../messages/impl/FakeMessagesNavigator.kt | 14 +-- .../list/FakePinnedMessagesListNavigator.kt | 6 +- .../poll/impl/history/PollHistoryFlowNode.kt | 2 +- .../poll/impl/history/PollHistoryNode.kt | 4 +- .../preferences/api/PreferencesEntryPoint.kt | 10 +- .../preferences/impl/PreferencesFlowNode.kt | 56 ++++----- .../preferences/impl/about/AboutNode.kt | 4 +- .../impl/developer/DeveloperSettingsNode.kt | 8 +- .../notifications/NotificationSettingsNode.kt | 16 +-- .../EditDefaultNotificationSettingNode.kt | 8 +- .../impl/root/PreferencesRootNode.kt | 56 ++++----- .../impl/DefaultPreferencesEntryPointTest.kt | 10 +- .../impl/bugreport/BugReportFlowNode.kt | 2 +- .../rageshake/impl/bugreport/BugReportNode.kt | 4 +- .../roomdetails/api/RoomDetailsEntryPoint.kt | 8 +- .../roomdetails/impl/RoomDetailsFlowNode.kt | 76 ++++++------ .../roomdetails/impl/RoomDetailsNode.kt | 60 +++++----- .../impl/members/RoomMemberListNode.kt | 8 +- .../members/details/RoomMemberDetailsNode.kt | 12 +- .../RoomNotificationSettingsNode.kt | 8 +- .../impl/DefaultRoomDetailsEntryPointTest.kt | 8 +- .../api/RoomDirectoryEntryPoint.kt | 2 +- .../impl/root/RoomDirectoryNode.kt | 2 +- .../DefaultRoomDirectoryEntryPointTest.kt | 2 +- .../securebackup/impl/SecureBackupFlowNode.kt | 8 +- .../impl/root/SecureBackupRootNode.kt | 16 +-- .../features/space/api/SpaceEntryPoint.kt | 7 +- .../features/space/impl/SpaceFlowNode.kt | 12 +- .../features/space/impl/root/SpaceNode.kt | 15 ++- .../space/impl/DefaultSpaceEntryPointTest.kt | 6 +- .../startchat/api/StartChatEntryPoint.kt | 4 +- .../features/startchat/StartChatNavigator.kt | 5 +- .../startchat/impl/StartChatFlowNode.kt | 6 +- .../JoinRoomByAddressPresenter.kt | 2 +- .../startchat/impl/root/StartChatNode.kt | 2 +- .../impl/DefaultStartChatEntryPointTest.kt | 4 +- .../startchat/impl/FakeStartChatNavigator.kt | 2 +- .../userprofile/api/UserProfileEntryPoint.kt | 2 +- .../userprofile/impl/UserProfileFlowNode.kt | 14 +-- .../userprofile/impl/root/UserProfileNode.kt | 8 +- .../impl/DefaultUserProfileEntryPointTest.kt | 2 +- .../shared/UserProfileNodeHelper.kt | 8 +- .../api/OutgoingVerificationEntryPoint.kt | 2 +- .../impl/outgoing/OutgoingVerificationNode.kt | 2 +- ...faultOutgoingVerificationEntryPointTest.kt | 2 +- .../viewfolder/impl/folder/ViewFolderNode.kt | 4 +- .../impl/root/ViewFolderFlowNode.kt | 2 +- .../api/AccountSelectEntryPoint.kt | 2 +- .../accountselect/impl/AccountSelectNode.kt | 6 +- .../DefaultAccountSelectEntryPointTest.kt | 2 +- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 4 +- .../mediaviewer/api/MediaViewerEntryPoint.kt | 4 +- .../impl/gallery/MediaGalleryNode.kt | 12 +- .../impl/gallery/root/MediaGalleryFlowNode.kt | 16 +-- .../impl/viewer/MediaViewerNode.kt | 4 +- .../impl/DefaultMediaGalleryEntryPointTest.kt | 4 +- .../impl/DefaultMediaViewerEntryPointTest.kt | 8 +- .../roomselect/impl/RoomSelectNode.kt | 4 +- .../api/NotificationTroubleShootEntryPoint.kt | 2 +- .../troubleshoot/api/PushHistoryEntryPoint.kt | 2 +- .../impl/TroubleshootNotificationsNode.kt | 2 +- .../impl/history/PushHistoryNode.kt | 2 +- ...tNotificationTroubleShootEntryPointTest.kt | 2 +- .../DefaultPushHistoryEntryPointTest.kt | 2 +- 104 files changed, 658 insertions(+), 664 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt index 9ae5aa38fe..47681dc624 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt @@ -56,8 +56,8 @@ class LoggedInAppScopeFlowNode( plugins = plugins ), DependencyInjectionGraphOwner { interface Callback : Plugin { - fun onOpenBugReport() - fun onAddAccount() + fun navigateToBugReport() + fun navigateToAddAccount() } @Parcelize @@ -81,12 +81,12 @@ class LoggedInAppScopeFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { val callback = object : LoggedInFlowNode.Callback { - override fun onOpenBugReport() { - plugins().forEach { it.onOpenBugReport() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } - override fun onAddAccount() { - plugins().forEach { it.onAddAccount() } + override fun navigateToAddAccount() { + plugins().forEach { it.navigateToAddAccount() } } } return createNode(buildContext, listOf(callback)) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 090ed70fe2..dc6ad19f4b 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -148,8 +148,8 @@ class LoggedInFlowNode( plugins = plugins ) { interface Callback : Plugin { - fun onOpenBugReport() - fun onAddAccount() + fun navigateToBugReport() + fun navigateToAddAccount() } private val loggedInFlowProcessor = LoggedInEventProcessor( @@ -282,7 +282,7 @@ class LoggedInFlowNode( data object Ftue : NavTarget @Parcelize - data object RoomDirectorySearch : NavTarget + data object RoomDirectory : NavTarget @Parcelize data class IncomingShare(val intent: Intent) : NavTarget @@ -304,32 +304,32 @@ class LoggedInFlowNode( } NavTarget.Home -> { val callback = object : HomeEntryPoint.Callback { - override fun onRoomClick(roomId: RoomId) { + override fun navigateToRoom(roomId: RoomId) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias())) } - override fun onSettingsClick() { + override fun navigateToSettings() { backstack.push(NavTarget.Settings()) } - override fun onStartChatClick() { + override fun navigateToCreateRoom() { backstack.push(NavTarget.CreateRoom) } - override fun onSetUpRecoveryClick() { + override fun navigateToSetUpRecovery() { backstack.push(NavTarget.SecureBackup(initialElement = SecureBackupEntryPoint.InitialTarget.Root)) } - override fun onSessionConfirmRecoveryKeyClick() { + override fun navigateToEnterRecoveryKey() { backstack.push(NavTarget.SecureBackup(initialElement = SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey)) } - override fun onRoomSettingsClick(roomId: RoomId) { + override fun navigateToRoomSettings(roomId: RoomId) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), initialElement = RoomNavigationTarget.Details)) } - override fun onReportBugClick() { - plugins().forEach { it.onOpenBugReport() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } } homeEntryPoint @@ -339,11 +339,11 @@ class LoggedInFlowNode( } is NavTarget.Room -> { val joinedRoomCallback = object : JoinedRoomLoadedFlowNode.Callback { - override fun onOpenRoom(roomId: RoomId, serverNames: List) { + override fun navigateToRoom(roomId: RoomId, serverNames: List) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), serverNames)) } - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { when (data) { is PermalinkData.UserLink -> { // Should not happen (handled by MessagesNode) @@ -369,7 +369,7 @@ class LoggedInFlowNode( } } - override fun onOpenGlobalNotificationSettings() { + override fun navigateToGlobalNotificationSettings() { backstack.push(NavTarget.Settings(PreferencesEntryPoint.InitialTarget.NotificationSettings)) } } @@ -384,7 +384,7 @@ class LoggedInFlowNode( } is NavTarget.UserProfile -> { val callback = object : UserProfileEntryPoint.Callback { - override fun onOpenRoom(roomId: RoomId) { + override fun navigateToRoom(roomId: RoomId) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias())) } } @@ -395,23 +395,23 @@ class LoggedInFlowNode( } is NavTarget.Settings -> { val callback = object : PreferencesEntryPoint.Callback { - override fun onAddAccount() { - plugins().forEach { it.onAddAccount() } + override fun navigateToAddAccount() { + plugins().forEach { it.navigateToAddAccount() } } - override fun onOpenBugReport() { - plugins().forEach { it.onOpenBugReport() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } - override fun onSecureBackupClick() { + override fun navigateToSecureBackup() { backstack.push(NavTarget.SecureBackup()) } - override fun onOpenRoomNotificationSettings(roomId: RoomId) { + override fun navigateToRoomNotificationSettings(roomId: RoomId) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), initialElement = RoomNavigationTarget.NotificationSettings)) } - override fun navigateTo(roomId: RoomId, eventId: EventId) { + override fun navigateToEvent(roomId: RoomId, eventId: EventId) { backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias(), initialElement = RoomNavigationTarget.Root(eventId))) } } @@ -423,12 +423,12 @@ class LoggedInFlowNode( } NavTarget.CreateRoom -> { val callback = object : StartChatEntryPoint.Callback { - override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { + override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { backstack.replace(NavTarget.Room(roomIdOrAlias = roomIdOrAlias, serverNames = serverNames)) } - override fun onOpenRoomDirectory() { - backstack.push(NavTarget.RoomDirectorySearch) + override fun navigateToRoomDirectory() { + backstack.push(NavTarget.RoomDirectory) } } @@ -450,10 +450,10 @@ class LoggedInFlowNode( NavTarget.Ftue -> { ftueEntryPoint.createNode(this, buildContext) } - NavTarget.RoomDirectorySearch -> { + NavTarget.RoomDirectory -> { roomDirectoryEntryPoint.nodeBuilder(this, buildContext) .callback(object : RoomDirectoryEntryPoint.Callback { - override fun onResultClick(roomDescription: RoomDescription) { + override fun navigateToRoom(roomDescription: RoomDescription) { backstack.push( NavTarget.Room( roomIdOrAlias = roomDescription.roomId.toRoomIdOrAlias(), diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index 08bdbadde6..f3c92f4407 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -55,7 +55,7 @@ class NotLoggedInFlowNode( ) : NodeInputs interface Callback : Plugin { - fun onOpenBugReport() + fun navigateToBugReport() } private val inputs = inputs() @@ -78,8 +78,8 @@ class NotLoggedInFlowNode( return when (navTarget) { NavTarget.Root -> { val callback = object : LoginEntryPoint.Callback { - override fun onReportProblem() { - plugins().forEach { it.onOpenBugReport() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } } loginEntryPoint diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index dc4e169d53..676cc75767 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -227,11 +227,11 @@ class RootFlowNode( } val inputs = LoggedInAppScopeFlowNode.Inputs(matrixClient) val callback = object : LoggedInAppScopeFlowNode.Callback { - override fun onOpenBugReport() { + override fun navigateToBugReport() { backstack.push(NavTarget.BugReport) } - override fun onAddAccount() { + override fun navigateToAddAccount() { backstack.push(NavTarget.NotLoggedInFlow(null)) } } @@ -239,7 +239,7 @@ class RootFlowNode( } is NavTarget.NotLoggedInFlow -> { val callback = object : NotLoggedInFlowNode.Callback { - override fun onOpenBugReport() { + override fun navigateToBugReport() { backstack.push(NavTarget.BugReport) } } @@ -266,7 +266,7 @@ class RootFlowNode( } is NavTarget.AccountSelect -> { val callback: AccountSelectEntryPoint.Callback = object : AccountSelectEntryPoint.Callback { - override fun onSelectAccount(sessionId: SessionId) { + override fun onAccountSelected(sessionId: SessionId) { lifecycleScope.launch { if (sessionId == navTarget.currentSessionId) { // Ensure that the account selection Node is removed from the backstack diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index a4e4540b92..154d8c45d0 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -76,9 +76,9 @@ class JoinedRoomLoadedFlowNode( plugins = plugins, ), DependencyInjectionGraphOwner { interface Callback : Plugin { - fun onOpenRoom(roomId: RoomId, serverNames: List) - fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun onOpenGlobalNotificationSettings() + fun navigateToRoom(roomId: RoomId, serverNames: List) + fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) + fun navigateToGlobalNotificationSettings() } data class Inputs( @@ -123,19 +123,19 @@ class JoinedRoomLoadedFlowNode( private fun createRoomDetailsNode(buildContext: BuildContext, initialTarget: RoomDetailsEntryPoint.InitialTarget): Node { val callback = object : RoomDetailsEntryPoint.Callback { - override fun onOpenGlobalNotificationSettings() { - callbacks.forEach { it.onOpenGlobalNotificationSettings() } + override fun navigateToGlobalNotificationSettings() { + callbacks.forEach { it.navigateToGlobalNotificationSettings() } } - override fun onOpenRoom(roomId: RoomId, serverNames: List) { - callbacks.forEach { it.onOpenRoom(roomId, serverNames) } + override fun navigateToRoom(roomId: RoomId, serverNames: List) { + callbacks.forEach { it.navigateToRoom(roomId, serverNames) } } - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - callbacks.forEach { it.onPermalinkClick(data, pushToBackstack) } + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { + callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack) } } - override fun forwardEvent(eventId: EventId) { + override fun startForwardEventFlow(eventId: EventId) { backstack.push(NavTarget.ForwardEvent(eventId)) } } @@ -172,7 +172,7 @@ class JoinedRoomLoadedFlowNode( override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> - callbacks.forEach { it.onOpenRoom(roomId, emptyList()) } + callbacks.forEach { it.navigateToRoom(roomId, emptyList()) } } } } @@ -186,15 +186,15 @@ class JoinedRoomLoadedFlowNode( private fun createSpaceNode(buildContext: BuildContext): Node { val callback = object : SpaceEntryPoint.Callback { - override fun onOpenRoom(roomId: RoomId, viaParameters: List) { - callbacks.forEach { it.onOpenRoom(roomId, viaParameters) } + override fun navigateToRoom(roomId: RoomId, viaParameters: List) { + callbacks.forEach { it.navigateToRoom(roomId, viaParameters) } } - override fun onOpenDetails() { + override fun navigateToRoomDetails() { backstack.push(NavTarget.RoomDetails) } - override fun onOpenMemberList() { + override fun navigateToRoomMemberList() { backstack.push(NavTarget.RoomMemberList) } } @@ -209,24 +209,24 @@ class JoinedRoomLoadedFlowNode( navTarget: NavTarget.Messages, ): Node { val callback = object : MessagesEntryPoint.Callback { - override fun onRoomDetailsClick() { + override fun navigateToRoomDetails() { backstack.push(NavTarget.RoomDetails) } - override fun onUserDataClick(userId: UserId) { + override fun navigateToRoomMemberDetails(userId: UserId) { backstack.push(NavTarget.RoomMemberDetails(userId)) } - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - callbacks.forEach { it.onPermalinkClick(data, pushToBackstack) } + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { + callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack) } } override fun forwardEvent(eventId: EventId) { backstack.push(NavTarget.ForwardEvent(eventId)) } - override fun openRoom(roomId: RoomId) { - callbacks.forEach { it.onOpenRoom(roomId, emptyList()) } + override fun navigateToRoom(roomId: RoomId) { + callbacks.forEach { it.navigateToRoom(roomId, emptyList()) } } } val params = MessagesEntryPoint.Params( diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index c9eb28397e..d9070b97bc 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -212,7 +212,7 @@ class JoinedRoomLoadedFlowNodeTest { ) val roomFlowNodeTestHelper = roomFlowNode.parentNodeTestHelper() // WHEN - fakeMessagesEntryPoint.callback?.onRoomDetailsClick() + fakeMessagesEntryPoint.callback?.navigateToRoomDetails() // THEN roomFlowNodeTestHelper.assertChildHasLifecycle(JoinedRoomLoadedFlowNode.NavTarget.RoomDetails, Lifecycle.State.CREATED) val roomDetailsNode = roomFlowNode.childNode(JoinedRoomLoadedFlowNode.NavTarget.RoomDetails)!! diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt index 02a27d381d..b36c5633dc 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt @@ -82,23 +82,22 @@ class FtueSessionVerificationFlowNode( return when (navTarget) { is NavTarget.Root -> { val callback = object : ChooseSelfVerificationModeNode.Callback { - override fun onUseAnotherDevice() { + override fun navigateToUseAnotherDevice() { backstack.push(NavTarget.UseAnotherDevice) } - override fun onUseRecoveryKey() { + override fun navigateToUseRecoveryKey() { backstack.push(NavTarget.EnterRecoveryKey) } - override fun onResetKey() { + override fun navigateToResetKey() { backstack.push(NavTarget.ResetIdentity) } - override fun onLearnMoreAboutEncryption() { + override fun navigateToLearnMoreAboutEncryption() { learnMoreUrl.value = LearnMoreConfig.DEVICE_VERIFICATION_URL } } - createNode(buildContext, plugins = listOf(callback)) } is NavTarget.UseAnotherDevice -> { @@ -116,7 +115,7 @@ class FtueSessionVerificationFlowNode( backstack.pop() } - override fun onLearnMoreAboutEncryption() { + override fun navigateToLearnMoreAboutEncryption() { // Note that this callback is never called. The "Learn more" link is not displayed // for the self session interactive verification. } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt index 99409ac2d2..d5a0f91ed7 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt @@ -29,10 +29,10 @@ class ChooseSelfVerificationModeNode( private val directLogoutView: DirectLogoutView, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onUseAnotherDevice() - fun onUseRecoveryKey() - fun onResetKey() - fun onLearnMoreAboutEncryption() + fun navigateToUseAnotherDevice() + fun navigateToUseRecoveryKey() + fun navigateToResetKey() + fun navigateToLearnMoreAboutEncryption() } private val callback = plugins().first() @@ -43,10 +43,10 @@ class ChooseSelfVerificationModeNode( ChooseSelfVerificationModeView( state = state, - onUseAnotherDevice = callback::onUseAnotherDevice, - onUseRecoveryKey = callback::onUseRecoveryKey, - onResetKey = callback::onResetKey, - onLearnMore = callback::onLearnMoreAboutEncryption, + onUseAnotherDevice = callback::navigateToUseAnotherDevice, + onUseRecoveryKey = callback::navigateToUseRecoveryKey, + onResetKey = callback::navigateToResetKey, + onLearnMore = callback::navigateToLearnMoreAboutEncryption, modifier = modifier, ) diff --git a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt index 9beb147568..daf020f26c 100644 --- a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt +++ b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt @@ -21,12 +21,12 @@ interface HomeEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onRoomClick(roomId: RoomId) - fun onStartChatClick() - fun onSettingsClick() - fun onSetUpRecoveryClick() - fun onSessionConfirmRecoveryKeyClick() - fun onRoomSettingsClick(roomId: RoomId) - fun onReportBugClick() + fun navigateToRoom(roomId: RoomId) + fun navigateToCreateRoom() + fun navigateToSettings() + fun navigateToSetUpRecovery() + fun navigateToEnterRecoveryKey() + fun navigateToRoomSettings(roomId: RoomId) + fun navigateToBugReport() } } 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 cb205960fd..7245db296e 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 @@ -116,27 +116,27 @@ class HomeFlowNode( } private fun onRoomClick(roomId: RoomId) { - plugins().forEach { it.onRoomClick(roomId) } + plugins().forEach { it.navigateToRoom(roomId) } } private fun onOpenSettings() { - plugins().forEach { it.onSettingsClick() } + plugins().forEach { it.navigateToSettings() } } private fun onStartChatClick() { - plugins().forEach { it.onStartChatClick() } + plugins().forEach { it.navigateToCreateRoom() } } private fun onSetUpRecoveryClick() { - plugins().forEach { it.onSetUpRecoveryClick() } + plugins().forEach { it.navigateToSetUpRecovery() } } private fun onSessionConfirmRecoveryKeyClick() { - plugins().forEach { it.onSessionConfirmRecoveryKeyClick() } + plugins().forEach { it.navigateToEnterRecoveryKey() } } private fun onRoomSettingsClick(roomId: RoomId) { - plugins().forEach { it.onRoomSettingsClick(roomId) } + plugins().forEach { it.navigateToRoomSettings(roomId) } } private fun onReportRoomClick(roomId: RoomId) { @@ -153,7 +153,7 @@ class HomeFlowNode( inviteFriendsUseCase.execute(activity) } RoomListMenuAction.ReportBug -> { - plugins().forEach { it.onReportBugClick() } + plugins().forEach { it.navigateToBugReport() } } } } diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt index 7d0c95befd..b2cbea8d76 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt @@ -41,13 +41,13 @@ class DefaultHomeEntryPointTest { ) } val callback = object : HomeEntryPoint.Callback { - override fun onRoomClick(roomId: RoomId) = lambdaError() - override fun onStartChatClick() = lambdaError() - override fun onSettingsClick() = lambdaError() - override fun onSetUpRecoveryClick() = lambdaError() - override fun onSessionConfirmRecoveryKeyClick() = lambdaError() - override fun onRoomSettingsClick(roomId: RoomId) = lambdaError() - override fun onReportBugClick() = lambdaError() + override fun navigateToRoom(roomId: RoomId) = lambdaError() + override fun navigateToCreateRoom() = lambdaError() + override fun navigateToSettings() = lambdaError() + override fun navigateToSetUpRecovery() = lambdaError() + override fun navigateToEnterRecoveryKey() = lambdaError() + override fun navigateToRoomSettings(roomId: RoomId) = lambdaError() + override fun navigateToBugReport() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DependenciesFlowNode.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DependenciesFlowNode.kt index 30e094e38e..ab16092065 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DependenciesFlowNode.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DependenciesFlowNode.kt @@ -52,7 +52,7 @@ class DependenciesFlowNode( return when (navTarget) { is NavTarget.LicensesList -> { val callback = object : DependencyLicensesListNode.Callback { - override fun onOpenLicense(license: DependencyLicenseItem) { + override fun navigateToLicense(license: DependencyLicenseItem) { backstack.push(NavTarget.LicenseDetails(license)) } } diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt index 7280c2ad41..56faebe71b 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt @@ -30,12 +30,12 @@ class DependencyLicensesListNode( plugins = plugins ) { interface Callback : Plugin { - fun onOpenLicense(license: DependencyLicenseItem) + fun navigateToLicense(license: DependencyLicenseItem) } private fun onOpenLicense(license: DependencyLicenseItem) { plugins() - .forEach { it.onOpenLicense(license) } + .forEach { it.navigateToLicense(license) } } @Composable diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt index 01aeaabe89..1597b584bc 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsFlowNode.kt @@ -110,7 +110,7 @@ class LockScreenSettingsFlowNode( } NavTarget.Settings -> { val callback = object : LockScreenSettingsNode.Callback { - override fun onChangePinClick() { + override fun navigateToSetupPin() { backstack.push(NavTarget.SetupPin) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt index 5e27b815bc..2dcfb0524e 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt @@ -26,11 +26,11 @@ class LockScreenSettingsNode( private val presenter: LockScreenSettingsPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onChangePinClick() + fun navigateToSetupPin() } private fun onChangePinClick() { - plugins().forEach { it.onChangePinClick() } + plugins().forEach { it.navigateToSetupPin() } } @Composable diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt index b3ef99ee19..3bb1db478b 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt @@ -19,7 +19,7 @@ interface LoginEntryPoint : FeatureEntryPoint { ) interface Callback : Plugin { - fun onReportProblem() + fun navigateToBugReport() } fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt index 4b83190f5d..ce85c617ef 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt @@ -126,13 +126,13 @@ class LoginFlowNode( return when (navTarget) { NavTarget.OnBoarding -> { val callback = object : OnBoardingNode.Callback { - override fun onSignUp() { + override fun navigateToSignUpFlow() { backstack.push( NavTarget.ConfirmAccountProvider(isAccountCreation = true) ) } - override fun onSignIn(mustChooseAccountProvider: Boolean) { + override fun navigateToSignInFlow(mustChooseAccountProvider: Boolean) { backstack.push( if (mustChooseAccountProvider) { NavTarget.ChooseAccountProvider @@ -142,23 +142,23 @@ class LoginFlowNode( ) } - override fun onSignInWithQrCode() { + override fun navigateToQrCode() { backstack.push(NavTarget.QrCode) } - override fun onReportProblem() { - plugins().forEach { it.onReportProblem() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } - override fun onOidcDetails(oidcDetails: OidcDetails) { + override fun navigateToOidc(oidcDetails: OidcDetails) { navigateToMas(oidcDetails) } - override fun onCreateAccountContinue(url: String) { + override fun navigateToCreateAccount(url: String) { backstack.push(NavTarget.CreateAccount(url)) } - override fun onLoginPasswordNeeded() { + override fun navigateToLoginPassword() { backstack.push(NavTarget.LoginPassword) } } @@ -171,15 +171,15 @@ class LoginFlowNode( } NavTarget.ChooseAccountProvider -> { val callback = object : ChooseAccountProviderNode.Callback { - override fun onOidcDetails(oidcDetails: OidcDetails) { + override fun navigateToOidc(oidcDetails: OidcDetails) { navigateToMas(oidcDetails) } - override fun onCreateAccountContinue(url: String) { + override fun navigateToCreateAccount(url: String) { backstack.push(NavTarget.CreateAccount(url)) } - override fun onLoginPasswordNeeded() { + override fun navigateToLoginPassword() { backstack.push(NavTarget.LoginPassword) } } @@ -193,19 +193,19 @@ class LoginFlowNode( isAccountCreation = navTarget.isAccountCreation, ) val callback = object : ConfirmAccountProviderNode.Callback { - override fun onOidcDetails(oidcDetails: OidcDetails) { + override fun navigateToOidc(oidcDetails: OidcDetails) { navigateToMas(oidcDetails) } - override fun onCreateAccountContinue(url: String) { + override fun navigateToCreateAccount(url: String) { backstack.push(NavTarget.CreateAccount(url)) } - override fun onLoginPasswordNeeded() { + override fun navigateToLoginPassword() { backstack.push(NavTarget.LoginPassword) } - override fun onChangeAccountProvider() { + override fun navigateToChangeAccountProvider() { backstack.push(NavTarget.ChangeAccountProvider) } } @@ -221,7 +221,7 @@ class LoginFlowNode( backstack.singleTop(confirmAccountProvider) } - override fun onOtherClick() { + override fun navigateToSearchAccountProvider() { backstack.push(NavTarget.SearchAccountProvider) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/QrCodeLoginFlowNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/QrCodeLoginFlowNode.kt index 22dcb9da9c..992bf18590 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/QrCodeLoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/qrcode/QrCodeLoginFlowNode.kt @@ -147,11 +147,11 @@ class QrCodeLoginFlowNode( return when (navTarget) { is NavTarget.Initial -> { val callback = object : QrCodeIntroNode.Callback { - override fun onCancelClicked() { + override fun cancel() { navigateUp() } - override fun onContinue() { + override fun navigateToQrCodeScan() { backstack.push(NavTarget.QrCodeScan) } } @@ -159,11 +159,11 @@ class QrCodeLoginFlowNode( } is NavTarget.QrCodeScan -> { val callback = object : QrCodeScanNode.Callback { - override fun onScannedCode(qrCodeLoginData: MatrixQrCodeLoginData) { + override fun handleScannedCode(qrCodeLoginData: MatrixQrCodeLoginData) { lifecycleScope.startAuthentication(qrCodeLoginData) } - override fun onCancelClicked() { + override fun cancel() { backstack.pop() } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt index a0587211c0..80de8c6d71 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt @@ -29,7 +29,7 @@ class ChangeAccountProviderNode( ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { fun onDone() - fun onOtherClick() + fun navigateToSearchAccountProvider() } private fun onDone() { @@ -37,7 +37,7 @@ class ChangeAccountProviderNode( } private fun onOtherClick() { - plugins().forEach { it.onOtherClick() } + plugins().forEach { it.navigateToSearchAccountProvider() } } @Composable diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt index 128d235c93..02203aaa72 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt @@ -29,21 +29,21 @@ class ChooseAccountProviderNode( private val presenter: ChooseAccountProviderPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onLoginPasswordNeeded() - fun onOidcDetails(oidcDetails: OidcDetails) - fun onCreateAccountContinue(url: String) + fun navigateToLoginPassword() + fun navigateToOidc(oidcDetails: OidcDetails) + fun navigateToCreateAccount(url: String) } private fun onOidcDetails(oidcDetails: OidcDetails) { - plugins().forEach { it.onOidcDetails(oidcDetails) } + plugins().forEach { it.navigateToOidc(oidcDetails) } } private fun onLoginPasswordNeeded() { - plugins().forEach { it.onLoginPasswordNeeded() } + plugins().forEach { it.navigateToLoginPassword() } } private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.onCreateAccountContinue(url) } + plugins().forEach { it.navigateToCreateAccount(url) } } @Composable diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt index 0d50d21a18..52df30b4fb 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt @@ -42,26 +42,26 @@ class ConfirmAccountProviderNode( ) interface Callback : Plugin { - fun onLoginPasswordNeeded() - fun onOidcDetails(oidcDetails: OidcDetails) - fun onCreateAccountContinue(url: String) - fun onChangeAccountProvider() + fun navigateToLoginPassword() + fun navigateToOidc(oidcDetails: OidcDetails) + fun navigateToCreateAccount(url: String) + fun navigateToChangeAccountProvider() } private fun onOidcDetails(data: OidcDetails) { - plugins().forEach { it.onOidcDetails(data) } + plugins().forEach { it.navigateToOidc(data) } } private fun onLoginPasswordNeeded() { - plugins().forEach { it.onLoginPasswordNeeded() } + plugins().forEach { it.navigateToLoginPassword() } } private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.onCreateAccountContinue(url) } + plugins().forEach { it.navigateToCreateAccount(url) } } private fun onChangeAccountProvider() { - plugins().forEach { it.onChangeAccountProvider() } + plugins().forEach { it.navigateToChangeAccountProvider() } } @Composable diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt index 3652a3df8d..d9968af936 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt @@ -34,13 +34,13 @@ class OnBoardingNode( plugins = plugins ) { interface Callback : Plugin { - fun onSignUp() - fun onSignIn(mustChooseAccountProvider: Boolean) - fun onSignInWithQrCode() - fun onReportProblem() - fun onLoginPasswordNeeded() - fun onOidcDetails(oidcDetails: OidcDetails) - fun onCreateAccountContinue(url: String) + fun navigateToSignUpFlow() + fun navigateToSignInFlow(mustChooseAccountProvider: Boolean) + fun navigateToQrCode() + fun navigateToBugReport() + fun navigateToLoginPassword() + fun navigateToOidc(oidcDetails: OidcDetails) + fun navigateToCreateAccount(url: String) } data class Params( @@ -55,31 +55,31 @@ class OnBoardingNode( ) private fun onSignIn(mustChooseAccountProvider: Boolean) { - plugins().forEach { it.onSignIn(mustChooseAccountProvider) } + plugins().forEach { it.navigateToSignInFlow(mustChooseAccountProvider) } } private fun onSignUp() { - plugins().forEach { it.onSignUp() } + plugins().forEach { it.navigateToSignUpFlow() } } private fun onSignInWithQrCode() { - plugins().forEach { it.onSignInWithQrCode() } + plugins().forEach { it.navigateToQrCode() } } private fun onReportProblem() { - plugins().forEach { it.onReportProblem() } + plugins().forEach { it.navigateToBugReport() } } private fun onOidcDetails(data: OidcDetails) { - plugins().forEach { it.onOidcDetails(data) } + plugins().forEach { it.navigateToOidc(data) } } private fun onLoginPasswordNeeded() { - plugins().forEach { it.onLoginPasswordNeeded() } + plugins().forEach { it.navigateToLoginPassword() } } private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.onCreateAccountContinue(url) } + plugins().forEach { it.navigateToCreateAccount(url) } } @Composable diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt index c86dc6096a..951550fc22 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt @@ -26,16 +26,16 @@ class QrCodeIntroNode( private val presenter: QrCodeIntroPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onCancelClicked() - fun onContinue() + fun cancel() + fun navigateToQrCodeScan() } private fun onCancelClicked() { - plugins().forEach { it.onCancelClicked() } + plugins().forEach { it.cancel() } } private fun onContinue() { - plugins().forEach { it.onContinue() } + plugins().forEach { it.navigateToQrCodeScan() } } @Composable diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt index f6b52522b5..554639c72a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt @@ -27,16 +27,16 @@ class QrCodeScanNode( private val presenter: QrCodeScanPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onScannedCode(qrCodeLoginData: MatrixQrCodeLoginData) - fun onCancelClicked() + fun handleScannedCode(qrCodeLoginData: MatrixQrCodeLoginData) + fun cancel() } private fun onQrCodeDataReady(qrCodeLoginData: MatrixQrCodeLoginData) { - plugins().forEach { it.onScannedCode(qrCodeLoginData) } + plugins().forEach { it.handleScannedCode(qrCodeLoginData) } } private fun onCancelClicked() { - plugins().forEach { it.onCancelClicked() } + plugins().forEach { it.cancel() } } @Composable diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt index c10d22c51a..d39cea9865 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt @@ -39,7 +39,7 @@ class DefaultLoginEntryPointTest { ) } val callback = object : LoginEntryPoint.Callback { - override fun onReportProblem() = lambdaError() + override fun navigateToBugReport() = lambdaError() } val params = LoginEntryPoint.Params( accountProvider = "ac", diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt index 17f67813ca..676216d8f4 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt @@ -21,6 +21,6 @@ interface LogoutEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onChangeRecoveryKeyClick() + fun navigateToSecureBackup() } } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt index d554dbe8f0..3860850fcf 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt @@ -27,7 +27,7 @@ class LogoutNode( private val presenter: LogoutPresenter, ) : Node(buildContext, plugins = plugins) { private fun onChangeRecoveryKeyClick() { - plugins().forEach { it.onChangeRecoveryKeyClick() } + plugins().forEach { it.navigateToSecureBackup() } } @Composable diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt index 01d1bfc6ca..7e831bccf5 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt @@ -32,7 +32,7 @@ class DefaultLogoutEntryPointTest { ) } val callback = object : LogoutEntryPoint.Callback { - override fun onChangeRecoveryKeyClick() = lambdaError() + override fun navigateToSecureBackup() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 1d689663ee..6540e03684 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -38,11 +38,11 @@ interface MessagesEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onRoomDetailsClick() - fun onUserDataClick(userId: UserId) - fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) + fun navigateToRoomDetails() + fun navigateToRoomMemberDetails(userId: UserId) + fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) fun forwardEvent(eventId: EventId) - fun openRoom(roomId: RoomId) + fun navigateToRoom(roomId: RoomId) } data class Params(val initialTarget: InitialTarget) : NodeInputs diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 73aad6f7de..c9fe66191b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -220,18 +220,18 @@ class MessagesFlowNode( return when (navTarget) { is NavTarget.Messages -> { val callback = object : MessagesNode.Callback { - override fun onRoomDetailsClick() { - callbacks.forEach { it.onRoomDetailsClick() } + override fun navigateToRoomDetails() { + callbacks.forEach { it.navigateToRoomDetails() } } - override fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { + override fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { return processEventClick( timelineMode = timelineMode, event = event, ) } - override fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { + override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { backstack.push( NavTarget.AttachmentPreview( attachment = attachments.first(), @@ -241,39 +241,39 @@ class MessagesFlowNode( ) } - override fun onUserDataClick(userId: UserId) { - callbacks.forEach { it.onUserDataClick(userId) } + override fun navigateToRoomMemberDetails(userId: UserId) { + callbacks.forEach { it.navigateToRoomMemberDetails(userId) } } - override fun onPermalinkClick(data: PermalinkData) { - callbacks.forEach { it.onPermalinkClick(data, pushToBackstack = true) } + override fun handlePermalinkClick(data: PermalinkData) { + callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = true) } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { backstack.push(NavTarget.EventDebugInfo(eventId, debugInfo)) } - override fun onForwardEventClick(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents = false)) } - override fun onReportMessage(eventId: EventId, senderId: UserId) { + override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { backstack.push(NavTarget.ReportMessage(eventId, senderId)) } - override fun onSendLocationClick() { + override fun navigateToSendLocation() { backstack.push(NavTarget.SendLocation(Timeline.Mode.Live)) } - override fun onCreatePollClick() { + override fun navigateToCreatePoll() { backstack.push(NavTarget.CreatePoll(Timeline.Mode.Live)) } - override fun onEditPollClick(eventId: EventId) { + override fun navigateToEditPoll(eventId: EventId) { backstack.push(NavTarget.EditPoll(Timeline.Mode.Live, eventId)) } - override fun onJoinCallClick(roomId: RoomId) { + override fun navigateToRoomCall(roomId: RoomId) { val callType = CallType.RoomCall( sessionId = sessionId, roomId = roomId, @@ -282,15 +282,15 @@ class MessagesFlowNode( elementCallEntryPoint.startCall(callType) } - override fun onViewAllPinnedEvents() { + override fun navigateToPinnedMessagesList() { backstack.push(NavTarget.PinnedMessagesList) } - override fun onViewKnockRequests() { + override fun navigateToKnockRequestsList() { backstack.push(NavTarget.KnockRequestsList) } - override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { + override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { backstack.push(NavTarget.Thread(threadRootId, focusedEventId)) } } @@ -311,13 +311,13 @@ class MessagesFlowNode( overlay.hide() } - override fun onViewInTimeline(eventId: EventId) { - viewInTimeline(eventId) + override fun viewInTimeline(eventId: EventId) { + this@MessagesFlowNode.viewInTimeline(eventId) } - override fun onForwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { // Need to go to the parent because of the overlay - forwardEvent(eventId) + callbacks.forEach { it.forwardEvent(eventId) } } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) @@ -352,7 +352,7 @@ class MessagesFlowNode( override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> - callbacks.forEach { it.openRoom(roomId) } + callbacks.forEach { it.navigateToRoom(roomId) } } } } @@ -392,30 +392,30 @@ class MessagesFlowNode( } NavTarget.PinnedMessagesList -> { val callback = object : PinnedMessagesListNode.Callback { - override fun onEventClick(event: TimelineItem.Event) { + override fun handleEventClick(event: TimelineItem.Event) { processEventClick( timelineMode = Timeline.Mode.PinnedEvents, event = event, ) } - override fun onUserDataClick(userId: UserId) { - callbacks.forEach { it.onUserDataClick(userId) } + override fun navigateToRoomMemberDetails(userId: UserId) { + callbacks.forEach { it.navigateToRoomMemberDetails(userId) } } - override fun onViewInTimelineClick(eventId: EventId) { - viewInTimeline(eventId) + override fun viewInTimeline(eventId: EventId) { + this@MessagesFlowNode.viewInTimeline(eventId) } - override fun onRoomPermalinkClick(data: PermalinkData.RoomLink) { - callbacks.forEach { it.onPermalinkClick(data, pushToBackstack = !room.matches(data.roomIdOrAlias)) } + override fun handlePermalinkClick(data: PermalinkData.RoomLink) { + callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = !room.matches(data.roomIdOrAlias)) } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { backstack.push(NavTarget.EventDebugInfo(eventId, debugInfo)) } - override fun onForwardEventClick(eventId: EventId) { + override fun handleForwardEventClick(eventId: EventId) { backstack.push(NavTarget.ForwardEvent(eventId = eventId, fromPinnedEvents = true)) } } @@ -430,14 +430,14 @@ class MessagesFlowNode( focusedEventId = navTarget.focusedEventId, ) val callback = object : ThreadedMessagesNode.Callback { - override fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { + override fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { return processEventClick( timelineMode = timelineMode, event = event, ) } - override fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { + override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { backstack.push( NavTarget.AttachmentPreview( attachment = attachments.first(), @@ -447,39 +447,39 @@ class MessagesFlowNode( ) } - override fun onUserDataClick(userId: UserId) { - callbacks.forEach { it.onUserDataClick(userId) } + override fun navigateToRoomMemberDetails(userId: UserId) { + callbacks.forEach { it.navigateToRoomMemberDetails(userId) } } - override fun onPermalinkClick(data: PermalinkData) { - callbacks.forEach { it.onPermalinkClick(data, pushToBackstack = true) } + override fun handlePermalinkClick(data: PermalinkData) { + callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = true) } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { backstack.push(NavTarget.EventDebugInfo(eventId, debugInfo)) } - override fun onForwardEventClick(eventId: EventId) { + override fun handleForwardEventClick(eventId: EventId) { backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents = false)) } - override fun onReportMessage(eventId: EventId, senderId: UserId) { + override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { backstack.push(NavTarget.ReportMessage(eventId, senderId)) } - override fun onSendLocationClick() { + override fun navigateToSendLocation() { backstack.push(NavTarget.SendLocation(Timeline.Mode.Thread(navTarget.threadRootId))) } - override fun onCreatePollClick() { + override fun navigateToCreatePoll() { backstack.push(NavTarget.CreatePoll(Timeline.Mode.Thread(navTarget.threadRootId))) } - override fun onEditPollClick(eventId: EventId) { + override fun navigateToEditPoll(eventId: EventId) { backstack.push(NavTarget.EditPoll(Timeline.Mode.Thread(navTarget.threadRootId), eventId)) } - override fun onJoinCallClick(roomId: RoomId) { + override fun navigateToRoomCall(roomId: RoomId) { val callType = CallType.RoomCall( sessionId = sessionId, roomId = roomId, @@ -488,7 +488,7 @@ class MessagesFlowNode( elementCallEntryPoint.startCall(callType) } - override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { + override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { backstack.push(NavTarget.Thread(threadRootId, focusedEventId)) } } @@ -502,11 +502,7 @@ class MessagesFlowNode( roomIdOrAlias = room.roomId.toRoomIdOrAlias(), eventId = eventId, ) - callbacks.forEach { it.onPermalinkClick(permalinkData, pushToBackstack = false) } - } - - private fun forwardEvent(eventId: EventId) { - callbacks.forEach { it.forwardEvent(eventId) } + callbacks.forEach { it.handlePermalinkClick(permalinkData, pushToBackstack = false) } } private fun processEventClick( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt index 25fd7f222d..7c55e23323 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt @@ -16,12 +16,12 @@ import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugIn import kotlinx.collections.immutable.ImmutableList interface MessagesNavigator { - fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) - fun onForwardEventClick(eventId: EventId) - fun onReportContentClick(eventId: EventId, senderId: UserId) - fun onEditPollClick(eventId: EventId) - fun onPreviewAttachment(attachments: ImmutableList, inReplyToEventId: EventId?) - fun onNavigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) - fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) + fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) + fun forwardEvent(eventId: EventId) + fun navigateToReportMessage(eventId: EventId, senderId: UserId) + fun navigateToEditPoll(eventId: EventId) + fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) + fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) + fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) fun onNavigateUp() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index e0e3e88891..bb2870b6af 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -114,21 +114,21 @@ class MessagesNode( ) interface Callback : Plugin { - fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean - fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) - fun onUserDataClick(userId: UserId) - fun onPermalinkClick(data: PermalinkData) - fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) - fun onForwardEventClick(eventId: EventId) - fun onReportMessage(eventId: EventId, senderId: UserId) - fun onSendLocationClick() - fun onCreatePollClick() - fun onEditPollClick(eventId: EventId) - fun onJoinCallClick(roomId: RoomId) - fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) - fun onRoomDetailsClick() - fun onViewAllPinnedEvents() - fun onViewKnockRequests() + fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean + fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) + fun navigateToRoomMemberDetails(userId: UserId) + fun handlePermalinkClick(data: PermalinkData) + fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) + fun forwardEvent(eventId: EventId) + fun navigateToReportMessage(eventId: EventId, senderId: UserId) + fun navigateToSendLocation() + fun navigateToCreatePoll() + fun navigateToEditPoll(eventId: EventId) + fun navigateToRoomCall(roomId: RoomId) + fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) + fun navigateToRoomDetails() + fun navigateToPinnedMessagesList() + fun navigateToKnockRequestsList() } override fun onBuilt() { @@ -143,16 +143,16 @@ class MessagesNode( ) } - private fun onRoomDetailsClick() { - callbacks.forEach { it.onRoomDetailsClick() } + private fun navigateToRoomDetails() { + callbacks.forEach { it.navigateToRoomDetails() } } - private fun onViewAllPinnedMessagesClick() { - callbacks.forEach { it.onViewAllPinnedEvents() } + private fun navigateToPinnedMessagesList() { + callbacks.forEach { it.navigateToPinnedMessagesList() } } - private fun onViewKnockRequestsClick() { - callbacks.forEach { it.onViewKnockRequests() } + private fun navigateToKnockRequestsList() { + callbacks.forEach { it.navigateToKnockRequestsList() } } private fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { @@ -160,13 +160,13 @@ class MessagesNode( // - if callbacks is empty, it will return true and we want to return false. // - if a callback returns false, the other callback will not be invoked. return callbacks.takeIf { it.isNotEmpty() } - ?.map { it.onEventClick(timelineMode, event) } + ?.map { it.handleEventClick(timelineMode, event) } ?.all { it } .orFalse() } - private fun onUserDataClick(userId: UserId) { - callbacks.forEach { it.onUserDataClick(userId) } + private fun navigateToRoomMemberDetails(userId: UserId) { + callbacks.forEach { it.navigateToRoomMemberDetails(userId) } } private fun onLinkClick( @@ -180,7 +180,7 @@ class MessagesNode( is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.onUserDataClick(permalink.userId) } + callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } } is PermalinkData.RoomLink -> { handleRoomLinkClick(permalink, eventSink) @@ -211,53 +211,53 @@ class MessagesNode( displaySameRoomToast() } } else { - callbacks.forEach { it.onPermalinkClick(roomLink) } + callbacks.forEach { it.handlePermalinkClick(roomLink) } } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.onShowEventDebugInfoClick(eventId, debugInfo) } + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } } - override fun onForwardEventClick(eventId: EventId) { - callbacks.forEach { it.onForwardEventClick(eventId) } + override fun forwardEvent(eventId: EventId) { + callbacks.forEach { it.forwardEvent(eventId) } } - override fun onReportContentClick(eventId: EventId, senderId: UserId) { - callbacks.forEach { it.onReportMessage(eventId, senderId) } + override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { + callbacks.forEach { it.navigateToReportMessage(eventId, senderId) } } - override fun onEditPollClick(eventId: EventId) { - callbacks.forEach { it.onEditPollClick(eventId) } + override fun navigateToEditPoll(eventId: EventId) { + callbacks.forEach { it.navigateToEditPoll(eventId) } } - override fun onPreviewAttachment(attachments: ImmutableList, inReplyToEventId: EventId?) { - callbacks.forEach { it.onPreviewAttachments(attachments, inReplyToEventId) } + override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { + callbacks.forEach { it.navigateToPreviewAttachments(attachments, inReplyToEventId) } } - override fun onNavigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { + override fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { if (roomId == room.roomId) { displaySameRoomToast() } else { val permalinkData = PermalinkData.RoomLink(roomId.toRoomIdOrAlias(), eventId, viaParameters = serverNames.toImmutableList()) - callbacks.forEach { it.onPermalinkClick(permalinkData) } + callbacks.forEach { it.handlePermalinkClick(permalinkData) } } } - override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { - callbacks.forEach { it.onOpenThread(threadRootId, focusedEventId) } + override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { + callbacks.forEach { it.navigateToThread(threadRootId, focusedEventId) } } - private fun onSendLocationClick() { - callbacks.forEach { it.onSendLocationClick() } + private fun navigateToSendLocation() { + callbacks.forEach { it.navigateToSendLocation() } } - private fun onCreatePollClick() { - callbacks.forEach { it.onCreatePollClick() } + private fun navigateToCreatePoll() { + callbacks.forEach { it.navigateToCreatePoll() } } - private fun onJoinCallClick() { - callbacks.forEach { it.onJoinCallClick(room.roomId) } + private fun navigateToRoomCall() { + callbacks.forEach { it.navigateToRoomCall(room.roomId) } } private fun displaySameRoomToast() { @@ -288,7 +288,7 @@ class MessagesNode( MessagesView( state = state, onBackClick = { state.eventSink(MessagesEvents.MarkAsFullyReadAndExit) }, - onRoomDetailsClick = this::onRoomDetailsClick, + onRoomDetailsClick = ::navigateToRoomDetails, onEventContentClick = { isLive, event -> if (isLive) { onEventClick(timelineController.mainTimelineMode(), event) @@ -301,7 +301,7 @@ class MessagesNode( } } }, - onUserDataClick = this::onUserDataClick, + onUserDataClick = ::navigateToRoomMemberDetails, onLinkClick = { url, customTab -> onLinkClick( activity = activity, @@ -311,15 +311,15 @@ class MessagesNode( customTab = customTab, ) }, - onSendLocationClick = this::onSendLocationClick, - onCreatePollClick = this::onCreatePollClick, - onJoinCallClick = this::onJoinCallClick, - onViewAllPinnedMessagesClick = this::onViewAllPinnedMessagesClick, + onSendLocationClick = ::navigateToSendLocation, + onCreatePollClick = ::navigateToCreatePoll, + onJoinCallClick = ::navigateToRoomCall, + onViewAllPinnedMessagesClick = ::navigateToPinnedMessagesList, modifier = modifier, knockRequestsBannerView = { knockRequestsBannerRenderer.View( modifier = Modifier, - onViewRequestsClick = this::onViewKnockRequestsClick + onViewRequestsClick = ::navigateToKnockRequestsList, ) }, ) @@ -327,7 +327,7 @@ class MessagesNode( state = state.roomMemberModerationState, onSelectAction = { action, target -> when (action) { - is ModerationAction.DisplayProfile -> onUserDataClick(target.userId) + is ModerationAction.DisplayProfile -> navigateToRoomMemberDetails(target.userId) else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvents.ProcessAction(action, target)) } }, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 9056437218..aae371998e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -355,7 +355,7 @@ class MessagesPresenter( is TimelineItemThreadInfo.ThreadResponse -> targetEvent.threadInfo.threadRootId is TimelineItemThreadInfo.ThreadRoot, null -> targetEvent.eventId?.toThreadId() } ?: return@launch - navigator.onOpenThread(threadId, null) + navigator.navigateToThread(threadId, null) } else { handleActionReply(targetEvent, composerState, timelineProtectionState) } @@ -463,7 +463,7 @@ class MessagesPresenter( when (targetEvent.content) { is TimelineItemPollContent -> { if (targetEvent.eventId == null) return - navigator.onEditPollClick(targetEvent.eventId) + navigator.navigateToEditPoll(targetEvent.eventId) } else -> { val composerMode = MessageComposerMode.Edit( @@ -528,17 +528,17 @@ class MessagesPresenter( } private fun handleShowDebugInfoAction(event: TimelineItem.Event) { - navigator.onShowEventDebugInfoClick(event.eventId, event.debugInfo) + navigator.navigateToEventDebugInfo(event.eventId, event.debugInfo) } private fun handleForwardAction(event: TimelineItem.Event) { if (event.eventId == null) return - navigator.onForwardEventClick(event.eventId) + navigator.forwardEvent(event.eventId) } private fun handleReportAction(event: TimelineItem.Event) { if (event.eventId == null) return - navigator.onReportContentClick(event.eventId, event.senderId) + navigator.navigateToReportMessage(event.eventId, event.senderId) } private fun handleEndPollAction( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index 9505f0d758..612797261a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -528,7 +528,7 @@ class MessageComposerPresenter( ) val mediaAttachment = Attachment.Media(localMedia) val inReplyToEventId = (messageComposerContext.composerMode as? MessageComposerMode.Reply)?.eventId - navigator.onPreviewAttachment(persistentListOf(mediaAttachment), inReplyToEventId) + navigator.navigateToPreviewAttachments(persistentListOf(mediaAttachment), inReplyToEventId) // Reset composer since the attachment will be sent in a separate flow messageComposerContext.composerMode = MessageComposerMode.Normal diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNavigator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNavigator.kt index d33ad54eed..7a890eac7b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNavigator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNavigator.kt @@ -11,7 +11,7 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo interface PinnedMessagesListNavigator { - fun onViewInTimelineClick(eventId: EventId) - fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) - fun onForwardEventClick(eventId: EventId) + fun viewInTimeline(eventId: EventId) + fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) + fun forwardEvent(eventId: EventId) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt index 8ba776c520..6d1c7b6027 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt @@ -48,12 +48,12 @@ class PinnedMessagesListNode( private val permalinkParser: PermalinkParser, ) : Node(buildContext, plugins = plugins), PinnedMessagesListNavigator { interface Callback : Plugin { - fun onEventClick(event: TimelineItem.Event) - fun onUserDataClick(userId: UserId) - fun onViewInTimelineClick(eventId: EventId) - fun onRoomPermalinkClick(data: PermalinkData.RoomLink) - fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) - fun onForwardEventClick(eventId: EventId) + fun handleEventClick(event: TimelineItem.Event) + fun navigateToRoomMemberDetails(userId: UserId) + fun viewInTimeline(eventId: EventId) + fun handlePermalinkClick(data: PermalinkData.RoomLink) + fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) + fun handleForwardEventClick(eventId: EventId) } private val presenter = presenterFactory.create( @@ -65,12 +65,12 @@ class PinnedMessagesListNode( ) private val callbacks = plugins() - private fun onEventClick(event: TimelineItem.Event) { - return callbacks.forEach { it.onEventClick(event) } + private fun handleEventClick(event: TimelineItem.Event) { + return callbacks.forEach { it.handleEventClick(event) } } - private fun onUserDataClick(user: MatrixUser) { - callbacks.forEach { it.onUserDataClick(user.userId) } + private fun navigateToRoomMemberDetails(user: MatrixUser) { + callbacks.forEach { it.navigateToRoomMemberDetails(user.userId) } } private fun onLinkClick(context: Context, url: String) { @@ -78,10 +78,10 @@ class PinnedMessagesListNode( is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.onUserDataClick(permalink.userId) } + callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } } is PermalinkData.RoomLink -> { - callbacks.forEach { it.onRoomPermalinkClick(permalink) } + callbacks.forEach { it.handlePermalinkClick(permalink) } } is PermalinkData.FallbackLink, is PermalinkData.RoomEmailInviteLink -> { @@ -90,16 +90,16 @@ class PinnedMessagesListNode( } } - override fun onViewInTimelineClick(eventId: EventId) { - callbacks.forEach { it.onViewInTimelineClick(eventId) } + override fun viewInTimeline(eventId: EventId) { + callbacks.forEach { it.viewInTimeline(eventId) } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.onShowEventDebugInfoClick(eventId, debugInfo) } + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } } - override fun onForwardEventClick(eventId: EventId) { - callbacks.forEach { it.onForwardEventClick(eventId) } + override fun forwardEvent(eventId: EventId) { + callbacks.forEach { it.handleForwardEventClick(eventId) } } @Composable @@ -113,8 +113,8 @@ class PinnedMessagesListNode( PinnedMessagesListView( state = state, onBackClick = ::navigateUp, - onEventClick = ::onEventClick, - onUserDataClick = ::onUserDataClick, + onEventClick = ::handleEventClick, + onUserDataClick = ::navigateToRoomMemberDetails, onLinkClick = { link -> onLinkClick(context, link.url) }, onLinkLongClick = { view.performHapticFeedback( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt index 50652bb6e5..6d09e12447 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt @@ -153,18 +153,18 @@ class PinnedMessagesListPresenter( ) = launch { when (action) { TimelineItemAction.ViewSource -> { - navigator.onShowEventDebugInfoClick(targetEvent.eventId, targetEvent.debugInfo) + navigator.navigateToEventDebugInfo(targetEvent.eventId, targetEvent.debugInfo) } TimelineItemAction.Forward -> { targetEvent.eventId?.let { eventId -> - navigator.onForwardEventClick(eventId) + navigator.forwardEvent(eventId) } } TimelineItemAction.Unpin -> handleUnpinAction(targetEvent) TimelineItemAction.ViewInTimeline -> { targetEvent.eventId?.let { eventId -> analyticsService.captureInteraction(Interaction.Name.PinnedMessageListViewTimeline) - navigator.onViewInTimelineClick(eventId) + navigator.viewInTimeline(eventId) } } else -> Unit diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt index 9b5121eeb5..62138e99e0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt @@ -113,18 +113,18 @@ class ThreadedMessagesNode( ) interface Callback : Plugin { - fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean - fun onPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) - fun onUserDataClick(userId: UserId) - fun onPermalinkClick(data: PermalinkData) - fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) - fun onForwardEventClick(eventId: EventId) - fun onReportMessage(eventId: EventId, senderId: UserId) - fun onSendLocationClick() - fun onCreatePollClick() - fun onEditPollClick(eventId: EventId) - fun onJoinCallClick(roomId: RoomId) - fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) + fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean + fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) + fun navigateToRoomMemberDetails(userId: UserId) + fun handlePermalinkClick(data: PermalinkData) + fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) + fun handleForwardEventClick(eventId: EventId) + fun navigateToReportMessage(eventId: EventId, senderId: UserId) + fun navigateToSendLocation() + fun navigateToCreatePoll() + fun navigateToEditPoll(eventId: EventId) + fun navigateToRoomCall(roomId: RoomId) + fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) } override fun onBuilt() { @@ -150,13 +150,13 @@ class ThreadedMessagesNode( // - if callbacks is empty, it will return true and we want to return false. // - if a callback returns false, the other callback will not be invoked. return callbacks.takeIf { it.isNotEmpty() } - ?.map { it.onEventClick(timelineMode, event) } + ?.map { it.handleEventClick(timelineMode, event) } ?.all { it } .orFalse() } - private fun onUserDataClick(userId: UserId) { - callbacks.forEach { it.onUserDataClick(userId) } + private fun navigateToRoomMemberDetails(userId: UserId) { + callbacks.forEach { it.navigateToRoomMemberDetails(userId) } } private fun onLinkClick( @@ -170,7 +170,7 @@ class ThreadedMessagesNode( is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.onUserDataClick(permalink.userId) } + callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } } is PermalinkData.RoomLink -> { handleRoomLinkClick(permalink, eventSink) @@ -204,51 +204,51 @@ class ThreadedMessagesNode( navigateUp() } } else { - callbacks.forEach { it.onPermalinkClick(roomLink) } + callbacks.forEach { it.handlePermalinkClick(roomLink) } } } - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.onShowEventDebugInfoClick(eventId, debugInfo) } + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } } - override fun onForwardEventClick(eventId: EventId) { - callbacks.forEach { it.onForwardEventClick(eventId) } + override fun forwardEvent(eventId: EventId) { + callbacks.forEach { it.handleForwardEventClick(eventId) } } - override fun onReportContentClick(eventId: EventId, senderId: UserId) { - callbacks.forEach { it.onReportMessage(eventId, senderId) } + override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { + callbacks.forEach { it.navigateToReportMessage(eventId, senderId) } } - override fun onEditPollClick(eventId: EventId) { - callbacks.forEach { it.onEditPollClick(eventId) } + override fun navigateToEditPoll(eventId: EventId) { + callbacks.forEach { it.navigateToEditPoll(eventId) } } - override fun onPreviewAttachment(attachments: ImmutableList, inReplyToEventId: EventId?) { - callbacks.forEach { it.onPreviewAttachments(attachments, inReplyToEventId) } + override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { + callbacks.forEach { it.navigateToPreviewAttachments(attachments, inReplyToEventId) } } - override fun onNavigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { + override fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { val permalinkData = PermalinkData.RoomLink(roomId.toRoomIdOrAlias(), eventId, viaParameters = serverNames.toImmutableList()) - callbacks.forEach { it.onPermalinkClick(permalinkData) } + callbacks.forEach { it.handlePermalinkClick(permalinkData) } } - override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { - callbacks.forEach { it.onOpenThread(threadRootId, focusedEventId) } + override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { + callbacks.forEach { it.navigateToThread(threadRootId, focusedEventId) } } override fun onNavigateUp() = navigateUp() - private fun onSendLocationClick() { - callbacks.forEach { it.onSendLocationClick() } + private fun navigateToSendLocation() { + callbacks.forEach { it.navigateToSendLocation() } } - private fun onCreatePollClick() { - callbacks.forEach { it.onCreatePollClick() } + private fun navigateToCreatePoll() { + callbacks.forEach { it.navigateToCreatePoll() } } - private fun onJoinCallClick() { - callbacks.forEach { it.onJoinCallClick(room.roomId) } + private fun navigateToRoomCall() { + callbacks.forEach { it.navigateToRoomCall(room.roomId) } } @Composable @@ -281,7 +281,7 @@ class ThreadedMessagesNode( } } }, - onUserDataClick = this::onUserDataClick, + onUserDataClick = this::navigateToRoomMemberDetails, onLinkClick = { url, customTab -> onLinkClick( activity = activity, @@ -291,9 +291,9 @@ class ThreadedMessagesNode( customTab = customTab, ) }, - onSendLocationClick = this::onSendLocationClick, - onCreatePollClick = this::onCreatePollClick, - onJoinCallClick = this::onJoinCallClick, + onSendLocationClick = this::navigateToSendLocation, + onCreatePollClick = this::navigateToCreatePoll, + onJoinCallClick = this::navigateToRoomCall, onViewAllPinnedMessagesClick = {}, modifier = modifier, knockRequestsBannerView = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index ae8e26bff4..8602de0532 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -185,7 +185,7 @@ class TimelinePresenter( } } is TimelineEvents.EditPoll -> { - navigator.onEditPollClick(event.pollStartId) + navigator.navigateToEditPoll(event.pollStartId) } is TimelineEvents.FocusOnEvent -> sessionCoroutineScope.launch { focusRequestState.value = FocusRequestState.Requested(event.eventId, event.debounce) @@ -210,10 +210,10 @@ class TimelinePresenter( is TimelineEvents.NavigateToPredecessorOrSuccessorRoom -> { // Navigate to the predecessor or successor room val serverNames = calculateServerNamesForRoom(room) - navigator.onNavigateToRoom(event.roomId, null, serverNames) + navigator.navigateToRoom(event.roomId, null, serverNames) } is TimelineEvents.OpenThread -> { - navigator.onOpenThread( + navigator.navigateToThread( threadRootId = event.threadRootEventId, focusedEventId = event.focusedEvent, ) @@ -314,7 +314,7 @@ class TimelinePresenter( if (timelineController.mainTimelineMode() is Timeline.Mode.Thread && threadId == null) { // We are in a thread timeline, and the event isn't part of a thread, we need to navigate back to the room focusRequestState.value = FocusRequestState.None - navigator.onNavigateToRoom(room.roomId, eventId, calculateServerNamesForRoom(room)) + navigator.navigateToRoom(room.roomId, eventId, calculateServerNamesForRoom(room)) } else { Timber.tag(tag).d("Focusing on event $eventId - thread $threadId") timelineController.focusOnEvent(eventId, threadId) @@ -331,7 +331,7 @@ class TimelinePresenter( } else { focusRequestState.value = FocusRequestState.Success(eventId = result.threadId.asEventId()) // It's part of a thread we're not in, let's open it in another timeline - navigator.onOpenThread(result.threadId, eventId) + navigator.navigateToThread(result.threadId, eventId) } } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 88c0ca8020..1df6fc25f1 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -116,11 +116,11 @@ class DefaultMessagesEntryPointTest { ) } val callback = object : MessagesEntryPoint.Callback { - override fun onRoomDetailsClick() = lambdaError() - override fun onUserDataClick(userId: UserId) = lambdaError() - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() + override fun navigateToRoomDetails() = lambdaError() + override fun navigateToRoomMemberDetails(userId: UserId) = lambdaError() + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() override fun forwardEvent(eventId: EventId) = lambdaError() - override fun openRoom(roomId: RoomId) = lambdaError() + override fun navigateToRoom(roomId: RoomId) = lambdaError() } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) val params = MessagesEntryPoint.Params(initialTarget) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt index c26e7a83e2..04b34fe778 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt @@ -26,31 +26,31 @@ class FakeMessagesNavigator( private val onOpenThreadLambda: (threadRootId: ThreadId, focusedEventId: EventId?) -> Unit = { _, _ -> lambdaError() }, private val onNavigateUpLambda: () -> Unit = { lambdaError() }, ) : MessagesNavigator { - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { onShowEventDebugInfoClickLambda(eventId, debugInfo) } - override fun onForwardEventClick(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { onForwardEventClickLambda(eventId) } - override fun onReportContentClick(eventId: EventId, senderId: UserId) { + override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { onReportContentClickLambda(eventId, senderId) } - override fun onEditPollClick(eventId: EventId) { + override fun navigateToEditPoll(eventId: EventId) { onEditPollClickLambda(eventId) } - override fun onPreviewAttachment(attachments: ImmutableList, inReplyToEventId: EventId?) { + override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { onPreviewAttachmentLambda(attachments, inReplyToEventId) } - override fun onNavigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { + override fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { onNavigateToRoomLambda(roomId, eventId, serverNames) } - override fun onOpenThread(threadRootId: ThreadId, focusedEventId: EventId?) { + override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { onOpenThreadLambda(threadRootId, focusedEventId) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/FakePinnedMessagesListNavigator.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/FakePinnedMessagesListNavigator.kt index bf0a24dd5a..fba3803806 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/FakePinnedMessagesListNavigator.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/FakePinnedMessagesListNavigator.kt @@ -12,17 +12,17 @@ import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugIn class FakePinnedMessagesListNavigator : PinnedMessagesListNavigator { var onViewInTimelineClickLambda: ((EventId) -> Unit)? = null - override fun onViewInTimelineClick(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { onViewInTimelineClickLambda?.invoke(eventId) } var onShowEventDebugInfoClickLambda: ((EventId?, TimelineItemDebugInfo) -> Unit)? = null - override fun onShowEventDebugInfoClick(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { + override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { onShowEventDebugInfoClickLambda?.invoke(eventId, debugInfo) } var onForwardEventClickLambda: ((EventId) -> Unit)? = null - override fun onForwardEventClick(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { onForwardEventClickLambda?.invoke(eventId) } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt index 19142508a1..0f8ae56887 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt @@ -64,7 +64,7 @@ class PollHistoryFlowNode( } NavTarget.Root -> { val callback = object : PollHistoryNode.Callback { - override fun onEditPoll(pollStartEventId: EventId) { + override fun navigateToEditPoll(pollStartEventId: EventId) { backstack.push(NavTarget.EditPoll(pollStartEventId)) } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt index 3fdfdb921f..3ebabe5a2f 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt @@ -30,11 +30,11 @@ class PollHistoryNode( plugins = plugins, ) { interface Callback : Plugin { - fun onEditPoll(pollStartEventId: EventId) + fun navigateToEditPoll(pollStartEventId: EventId) } private fun onEditPoll(pollStartEventId: EventId) { - plugins().forEach { it.onEditPoll(pollStartEventId) } + plugins().forEach { it.navigateToEditPoll(pollStartEventId) } } @Composable diff --git a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt index c0affde2df..b828fab0ff 100644 --- a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt +++ b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt @@ -40,10 +40,10 @@ interface PreferencesEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onAddAccount() - fun onOpenBugReport() - fun onSecureBackupClick() - fun onOpenRoomNotificationSettings(roomId: RoomId) - fun navigateTo(roomId: RoomId, eventId: EventId) + fun navigateToAddAccount() + fun navigateToBugReport() + fun navigateToSecureBackup() + fun navigateToRoomNotificationSettings(roomId: RoomId) + fun navigateToEvent(roomId: RoomId, eventId: EventId) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index e4ba87c43a..4903f9d2cf 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -120,59 +120,59 @@ class PreferencesFlowNode( return when (navTarget) { NavTarget.Root -> { val callback = object : PreferencesRootNode.Callback { - override fun onAddAccount() { - plugins().forEach { it.onAddAccount() } + override fun navigateToAddAccount() { + plugins().forEach { it.navigateToAddAccount() } } - override fun onOpenBugReport() { - plugins().forEach { it.onOpenBugReport() } + override fun navigateToBugReport() { + plugins().forEach { it.navigateToBugReport() } } - override fun onSecureBackupClick() { - plugins().forEach { it.onSecureBackupClick() } + override fun navigateToSecureBackup() { + plugins().forEach { it.navigateToSecureBackup() } } - override fun onOpenAnalytics() { + override fun navigateToAnalyticsSettings() { backstack.push(NavTarget.AnalyticsSettings) } - override fun onOpenAbout() { + override fun navigateToAbout() { backstack.push(NavTarget.About) } - override fun onOpenDeveloperSettings() { + override fun navigateToDeveloperSettings() { backstack.push(NavTarget.DeveloperSettings) } - override fun onOpenNotificationSettings() { + override fun navigateToNotificationSettings() { backstack.push(NavTarget.NotificationSettings) } - override fun onOpenLockScreenSettings() { + override fun navigateToLockScreenSettings() { backstack.push(NavTarget.LockScreenSettings) } - override fun onOpenAdvancedSettings() { + override fun navigateToAdvancedSettings() { backstack.push(NavTarget.AdvancedSettings) } - override fun onOpenLabs() { + override fun navigateToLabs() { backstack.push(NavTarget.Labs) } - override fun onOpenUserProfile(matrixUser: MatrixUser) { + override fun navigateToUserProfile(matrixUser: MatrixUser) { backstack.push(NavTarget.UserProfile(matrixUser)) } - override fun onOpenBlockedUsers() { + override fun navigateToBlockedUsers() { backstack.push(NavTarget.BlockedUsers) } - override fun onSignOutClick() { + override fun startSignOutFlow() { backstack.push(NavTarget.SignOut) } - override fun onOpenAccountDeactivation() { + override fun startAccountDeactivationFlow() { backstack.push(NavTarget.AccountDeactivation) } } @@ -180,7 +180,7 @@ class PreferencesFlowNode( } NavTarget.DeveloperSettings -> { val developerSettingsCallback = object : DeveloperSettingsNode.Callback { - override fun onPushHistoryClick() { + override fun navigateToPushHistory() { backstack.push(NavTarget.PushHistory) } } @@ -191,7 +191,7 @@ class PreferencesFlowNode( } NavTarget.About -> { val callback = object : AboutNode.Callback { - override fun openOssLicenses() { + override fun navigateToOssLicenses() { backstack.push(NavTarget.OssLicenses) } } @@ -202,11 +202,11 @@ class PreferencesFlowNode( } NavTarget.NotificationSettings -> { val notificationSettingsCallback = object : NotificationSettingsNode.Callback { - override fun editDefaultNotificationMode(isOneToOne: Boolean) { + override fun navigateToEditDefaultNotificationSetting(isOneToOne: Boolean) { backstack.push(NavTarget.EditDefaultNotificationSetting(isOneToOne)) } - override fun onTroubleshootNotificationsClick() { + override fun navigateToTroubleshootNotifications() { backstack.push(NavTarget.TroubleshootNotifications) } } @@ -223,7 +223,7 @@ class PreferencesFlowNode( } } - override fun openIgnoredUsers() { + override fun navigateToBlockedUsers() { backstack.push(NavTarget.BlockedUsers) } }) @@ -240,16 +240,16 @@ class PreferencesFlowNode( } } - override fun navigateTo(roomId: RoomId, eventId: EventId) { - plugins().forEach { it.navigateTo(roomId, eventId) } + override fun navigateToEvent(roomId: RoomId, eventId: EventId) { + plugins().forEach { it.navigateToEvent(roomId, eventId) } } }) .build() } is NavTarget.EditDefaultNotificationSetting -> { val callback = object : EditDefaultNotificationSettingNode.Callback { - override fun openRoomNotificationSettings(roomId: RoomId) { - plugins().forEach { it.onOpenRoomNotificationSettings(roomId) } + override fun navigateToRoomNotificationSettings(roomId: RoomId) { + plugins().forEach { it.navigateToRoomNotificationSettings(roomId) } } } val input = EditDefaultNotificationSettingNode.Inputs(navTarget.isOneToOne) @@ -270,8 +270,8 @@ class PreferencesFlowNode( } NavTarget.SignOut -> { val callBack: LogoutEntryPoint.Callback = object : LogoutEntryPoint.Callback { - override fun onChangeRecoveryKeyClick() { - plugins().forEach { it.onSecureBackupClick() } + override fun navigateToSecureBackup() { + plugins().forEach { it.navigateToSecureBackup() } } } logoutEntryPoint.nodeBuilder(this, buildContext) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt index 37de32bab7..564189442c 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt @@ -29,7 +29,7 @@ class AboutNode( private val presenter: AboutPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun openOssLicenses() + fun navigateToOssLicenses() } private fun onElementLegalClick( @@ -52,7 +52,7 @@ class AboutNode( onElementLegalClick(activity, isDark, elementLegal) }, onOpenSourceLicensesClick = { - plugins.filterIsInstance().forEach { it.openOssLicenses() } + plugins.filterIsInstance().forEach { it.navigateToOssLicenses() } }, modifier = modifier ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt index 6208d0123e..6f18fd44dc 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt @@ -29,13 +29,13 @@ class DeveloperSettingsNode( private val presenter: DeveloperSettingsPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onPushHistoryClick() + fun navigateToPushHistory() } private val callbacks = plugins() - private fun onPushHistoryClick() { - callbacks.forEach { it.onPushHistoryClick() } + private fun navigateToPushHistory() { + callbacks.forEach { it.navigateToPushHistory() } } @Composable @@ -51,7 +51,7 @@ class DeveloperSettingsNode( state = state, modifier = modifier, onOpenShowkase = ::openShowkase, - onPushHistoryClick = ::onPushHistoryClick, + onPushHistoryClick = ::navigateToPushHistory, onBackClick = ::navigateUp ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt index f488889c5b..2b2879a4da 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt @@ -26,18 +26,18 @@ class NotificationSettingsNode( private val presenter: NotificationSettingsPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun editDefaultNotificationMode(isOneToOne: Boolean) - fun onTroubleshootNotificationsClick() + fun navigateToEditDefaultNotificationSetting(isOneToOne: Boolean) + fun navigateToTroubleshootNotifications() } private val callbacks = plugins() - private fun openEditDefault(isOneToOne: Boolean) { - callbacks.forEach { it.editDefaultNotificationMode(isOneToOne) } + private fun navigateToEditDefaultNotificationSetting(isOneToOne: Boolean) { + callbacks.forEach { it.navigateToEditDefaultNotificationSetting(isOneToOne) } } - private fun onTroubleshootNotificationsClick() { - callbacks.forEach { it.onTroubleshootNotificationsClick() } + private fun navigateToTroubleshootNotifications() { + callbacks.forEach { it.navigateToTroubleshootNotifications() } } @Composable @@ -45,9 +45,9 @@ class NotificationSettingsNode( val state = presenter.present() NotificationSettingsView( state = state, - onOpenEditDefault = { openEditDefault(isOneToOne = it) }, + onOpenEditDefault = ::navigateToEditDefaultNotificationSetting, onBackClick = ::navigateUp, - onTroubleshootNotificationsClick = ::onTroubleshootNotificationsClick, + onTroubleshootNotificationsClick = ::navigateToTroubleshootNotifications, modifier = modifier, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt index ccba221d9a..e697089ad1 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt @@ -29,7 +29,7 @@ class EditDefaultNotificationSettingNode( presenterFactory: EditDefaultNotificationSettingPresenter.Factory ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun openRoomNotificationSettings(roomId: RoomId) + fun navigateToRoomNotificationSettings(roomId: RoomId) } data class Inputs( @@ -40,8 +40,8 @@ class EditDefaultNotificationSettingNode( private val callbacks = plugins() private val presenter = presenterFactory.create(inputs.isOneToOne) - private fun openRoomNotificationSettings(roomId: RoomId) { - callbacks.forEach { it.openRoomNotificationSettings(roomId) } + private fun navigateToRoomNotificationSettings(roomId: RoomId) { + callbacks.forEach { it.navigateToRoomNotificationSettings(roomId) } } @Composable @@ -49,7 +49,7 @@ class EditDefaultNotificationSettingNode( val state = presenter.present() EditDefaultNotificationSettingView( state = state, - openRoomNotificationSettings = { openRoomNotificationSettings(it) }, + openRoomNotificationSettings = { navigateToRoomNotificationSettings(it) }, onBackClick = ::navigateUp, modifier = modifier, ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt index 67d50a76f0..ba6edb97e0 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt @@ -34,52 +34,52 @@ class PreferencesRootNode( private val directLogoutView: DirectLogoutView, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onAddAccount() - fun onOpenBugReport() - fun onSecureBackupClick() - fun onOpenAnalytics() - fun onOpenAbout() - fun onOpenDeveloperSettings() - fun onOpenNotificationSettings() - fun onOpenLockScreenSettings() - fun onOpenAdvancedSettings() - fun onOpenLabs() - fun onOpenUserProfile(matrixUser: MatrixUser) - fun onOpenBlockedUsers() - fun onSignOutClick() - fun onOpenAccountDeactivation() + fun navigateToAddAccount() + fun navigateToBugReport() + fun navigateToSecureBackup() + fun navigateToAnalyticsSettings() + fun navigateToAbout() + fun navigateToDeveloperSettings() + fun navigateToNotificationSettings() + fun navigateToLockScreenSettings() + fun navigateToAdvancedSettings() + fun navigateToLabs() + fun navigateToUserProfile(matrixUser: MatrixUser) + fun navigateToBlockedUsers() + fun startSignOutFlow() + fun startAccountDeactivationFlow() } private fun onAddAccount() { - plugins().forEach { it.onAddAccount() } + plugins().forEach { it.navigateToAddAccount() } } private fun onOpenBugReport() { - plugins().forEach { it.onOpenBugReport() } + plugins().forEach { it.navigateToBugReport() } } private fun onSecureBackupClick() { - plugins().forEach { it.onSecureBackupClick() } + plugins().forEach { it.navigateToSecureBackup() } } private fun onOpenDeveloperSettings() { - plugins().forEach { it.onOpenDeveloperSettings() } + plugins().forEach { it.navigateToDeveloperSettings() } } private fun onOpenAdvancedSettings() { - plugins().forEach { it.onOpenAdvancedSettings() } + plugins().forEach { it.navigateToAdvancedSettings() } } private fun onOpenLabs() { - plugins().forEach { it.onOpenLabs() } + plugins().forEach { it.navigateToLabs() } } private fun onOpenAnalytics() { - plugins().forEach { it.onOpenAnalytics() } + plugins().forEach { it.navigateToAnalyticsSettings() } } private fun onOpenAbout() { - plugins().forEach { it.onOpenAbout() } + plugins().forEach { it.navigateToAbout() } } private fun onManageAccountClick( @@ -97,27 +97,27 @@ class PreferencesRootNode( } private fun onOpenNotificationSettings() { - plugins().forEach { it.onOpenNotificationSettings() } + plugins().forEach { it.navigateToNotificationSettings() } } private fun onOpenLockScreenSettings() { - plugins().forEach { it.onOpenLockScreenSettings() } + plugins().forEach { it.navigateToLockScreenSettings() } } private fun onOpenUserProfile(matrixUser: MatrixUser) { - plugins().forEach { it.onOpenUserProfile(matrixUser) } + plugins().forEach { it.navigateToUserProfile(matrixUser) } } private fun onOpenBlockedUsers() { - plugins().forEach { it.onOpenBlockedUsers() } + plugins().forEach { it.navigateToBlockedUsers() } } private fun onSignOutClick() { - plugins().forEach { it.onSignOutClick() } + plugins().forEach { it.startSignOutFlow() } } private fun onOpenAccountDeactivation() { - plugins().forEach { it.onOpenAccountDeactivation() } + plugins().forEach { it.startAccountDeactivationFlow() } } @Composable diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt index 9e1bd70376..deb15561de 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt @@ -63,11 +63,11 @@ class DefaultPreferencesEntryPointTest { ) } val callback = object : PreferencesEntryPoint.Callback { - override fun onAddAccount() = lambdaError() - override fun onOpenBugReport() = lambdaError() - override fun onSecureBackupClick() = lambdaError() - override fun onOpenRoomNotificationSettings(roomId: RoomId) = lambdaError() - override fun navigateTo(roomId: RoomId, eventId: EventId) = lambdaError() + override fun navigateToAddAccount() = lambdaError() + override fun navigateToBugReport() = lambdaError() + override fun navigateToSecureBackup() = lambdaError() + override fun navigateToRoomNotificationSettings(roomId: RoomId) = lambdaError() + override fun navigateToEvent(roomId: RoomId, eventId: EventId) = lambdaError() } val params = PreferencesEntryPoint.Params( initialElement = PreferencesEntryPoint.InitialTarget.NotificationSettings, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt index 10af89f740..4e1f599237 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt @@ -64,7 +64,7 @@ class BugReportFlowNode( this@BugReportFlowNode.onDone() } - override fun onViewLogs(basePath: String) { + override fun navigateToViewLogs(basePath: String) { backstack.push(NavTarget.ViewLogs(rootPath = basePath)) } } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt index e307dba8ec..1d3974d166 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt @@ -32,11 +32,11 @@ class BugReportNode( ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { fun onDone() - fun onViewLogs(basePath: String) + fun navigateToViewLogs(basePath: String) } private fun onViewLogs(basePath: String) { - plugins().forEach { it.onViewLogs(basePath) } + plugins().forEach { it.navigateToViewLogs(basePath) } } private fun onDone() { diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index 48fcac8ee6..4b47f6b276 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -37,10 +37,10 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs interface Callback : Plugin { - fun onOpenGlobalNotificationSettings() - fun onOpenRoom(roomId: RoomId, serverNames: List) - fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun forwardEvent(eventId: EventId) + fun navigateToGlobalNotificationSettings() + fun navigateToRoom(roomId: RoomId, serverNames: List) + fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) + fun startForwardEventFlow(eventId: EventId) } interface NodeBuilder { 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 b0540626b9..895fd9dd59 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 @@ -167,55 +167,55 @@ class RoomDetailsFlowNode( return when (navTarget) { NavTarget.RoomDetails -> { val roomDetailsCallback = object : RoomDetailsNode.Callback { - override fun openRoomMemberList() { + override fun navigateToRoomMemberList() { backstack.push(NavTarget.RoomMemberList) } - override fun editRoomDetails() { + override fun navigateToRoomDetailsEdit() { backstack.push(NavTarget.RoomDetailsEdit) } - override fun openInviteMembers() { + override fun navigateToInviteMembers() { backstack.push(NavTarget.InviteMembers) } - override fun openRoomNotificationSettings() { + override fun navigateToRoomNotificationSettings() { backstack.push(NavTarget.RoomNotificationSettings(showUserDefinedSettingStyle = false)) } - override fun openAvatarPreview(name: String, url: String) { + override fun navigateToAvatarPreview(name: String, url: String) { overlay.show(NavTarget.AvatarPreview(name, url)) } - override fun openPollHistory() { + override fun navigateToPollHistory() { backstack.push(NavTarget.PollHistory) } - override fun openMediaGallery() { + override fun navigateToMediaGallery() { backstack.push(NavTarget.MediaGallery) } - override fun openAdminSettings() { + override fun navigateToAdminSettings() { backstack.push(NavTarget.AdminSettings) } - override fun openPinnedMessagesList() { + override fun navigateToPinnedMessagesList() { backstack.push(NavTarget.PinnedMessagesList) } - override fun openKnockRequestsList() { + override fun navigateToKnockRequestsList() { backstack.push(NavTarget.KnockRequestsList) } - override fun openSecurityAndPrivacy() { + override fun navigateToSecurityAndPrivacy() { backstack.push(NavTarget.SecurityAndPrivacy) } - override fun openDmUserProfile(userId: UserId) { + override fun navigateToRoomMemberDetails(userId: UserId) { backstack.push(NavTarget.RoomMemberDetails(userId)) } - override fun onJoinCall() { + override fun navigateToRoomCall() { val inputs = CallType.RoomCall( sessionId = room.sessionId, roomId = room.roomId, @@ -224,11 +224,11 @@ class RoomDetailsFlowNode( elementCallEntryPoint.startCall(inputs) } - override fun openReportRoom() { + override fun navigateToReportRoom() { backstack.push(NavTarget.ReportRoom) } - override fun onSelectNewOwnersWhenLeaving() { + override fun navigateToSelectNewOwnersWhenLeaving() { backstack.push(NavTarget.SelectNewOwnersWhenLeaving) } } @@ -237,11 +237,11 @@ class RoomDetailsFlowNode( NavTarget.RoomMemberList -> { val roomMemberListCallback = object : RoomMemberListNode.Callback { - override fun openRoomMemberDetails(roomMemberId: UserId) { + override fun navigateToRoomMemberDetails(roomMemberId: UserId) { backstack.push(NavTarget.RoomMemberDetails(roomMemberId)) } - override fun openInviteMembers() { + override fun navigateToInviteMembers() { backstack.push(NavTarget.InviteMembers) } } @@ -259,8 +259,8 @@ class RoomDetailsFlowNode( is NavTarget.RoomNotificationSettings -> { val input = RoomNotificationSettingsNode.RoomNotificationSettingInput(navTarget.showUserDefinedSettingStyle) val callback = object : RoomNotificationSettingsNode.Callback { - override fun openGlobalNotificationSettings() { - plugins().forEach { it.onOpenGlobalNotificationSettings() } + override fun navigateToGlobalNotificationSettings() { + plugins().forEach { it.navigateToGlobalNotificationSettings() } } } createNode(buildContext, listOf(input, callback)) @@ -268,19 +268,19 @@ class RoomDetailsFlowNode( is NavTarget.RoomMemberDetails -> { val callback = object : UserProfileNodeHelper.Callback { - override fun openAvatarPreview(username: String, avatarUrl: String) { + override fun navigateToAvatarPreview(username: String, avatarUrl: String) { overlay.show(NavTarget.AvatarPreview(username, avatarUrl)) } - override fun onStartDM(roomId: RoomId) { - plugins().forEach { it.onOpenRoom(roomId, emptyList()) } + override fun navigateToRoom(roomId: RoomId) { + plugins().forEach { it.navigateToRoom(roomId, emptyList()) } } - override fun onStartCall(dmRoomId: RoomId) { + override fun startCall(dmRoomId: RoomId) { elementCallEntryPoint.startCall(CallType.RoomCall(roomId = dmRoomId, sessionId = room.sessionId)) } - override fun onVerifyUser(userId: UserId) { + override fun startVerifyUserFlow(userId: UserId) { backstack.push(NavTarget.VerifyUser(userId)) } } @@ -293,11 +293,11 @@ class RoomDetailsFlowNode( overlay.hide() } - override fun onViewInTimeline(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { // Cannot happen } - override fun onForwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { // Cannot happen } } @@ -318,18 +318,18 @@ class RoomDetailsFlowNode( backstack.pop() } - override fun onViewInTimeline(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { val permalinkData = PermalinkData.RoomLink( roomIdOrAlias = room.roomId.toRoomIdOrAlias(), eventId = eventId, ) plugins().forEach { - it.onPermalinkClick(permalinkData, pushToBackstack = false) + it.handlePermalinkClick(permalinkData, pushToBackstack = false) } } - override fun forwardEvent(eventId: EventId) { - plugins().forEach { it.forwardEvent(eventId) } + override fun forward(eventId: EventId) { + plugins().forEach { it.startForwardEventFlow(eventId) } } } mediaGalleryEntryPoint.nodeBuilder(this, buildContext) @@ -345,20 +345,20 @@ class RoomDetailsFlowNode( MessagesEntryPoint.InitialTarget.PinnedMessages ) val callback = object : MessagesEntryPoint.Callback { - override fun onRoomDetailsClick() = Unit + override fun navigateToRoomDetails() = Unit - override fun onUserDataClick(userId: UserId) = Unit + override fun navigateToRoomMemberDetails(userId: UserId) = Unit - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - plugins().forEach { it.onPermalinkClick(data, pushToBackstack) } + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { + plugins().forEach { it.handlePermalinkClick(data, pushToBackstack) } } override fun forwardEvent(eventId: EventId) { - plugins().forEach { it.forwardEvent(eventId) } + plugins().forEach { it.startForwardEventFlow(eventId) } } - override fun openRoom(roomId: RoomId) { - plugins().forEach { it.onOpenRoom(roomId, emptyList()) } + override fun navigateToRoom(roomId: RoomId) { + plugins().forEach { it.navigateToRoom(roomId, emptyList()) } } } return messagesEntryPoint.nodeBuilder(this, buildContext) @@ -388,7 +388,7 @@ class RoomDetailsFlowNode( backstack.pop() } - override fun onLearnMoreAboutEncryption() { + override fun navigateToLearnMoreAboutEncryption() { learnMoreUrl.value = LearnMoreConfig.ENCRYPTION_URL } }) 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 2ada71dbc8..ea37c0f774 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 @@ -46,21 +46,21 @@ class RoomDetailsNode( private val leaveRoomRenderer: LeaveRoomRenderer, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun openRoomMemberList() - fun openInviteMembers() - fun editRoomDetails() - fun openRoomNotificationSettings() - fun openAvatarPreview(name: String, url: String) - fun openPollHistory() - fun openMediaGallery() - fun openAdminSettings() - fun openPinnedMessagesList() - fun openKnockRequestsList() - fun openSecurityAndPrivacy() - fun openDmUserProfile(userId: UserId) - fun onJoinCall() - fun openReportRoom() - fun onSelectNewOwnersWhenLeaving() + fun navigateToRoomMemberList() + fun navigateToInviteMembers() + fun navigateToRoomDetailsEdit() + fun navigateToRoomNotificationSettings() + fun navigateToAvatarPreview(name: String, url: String) + fun navigateToPollHistory() + fun navigateToMediaGallery() + fun navigateToAdminSettings() + fun navigateToPinnedMessagesList() + fun navigateToKnockRequestsList() + fun navigateToSecurityAndPrivacy() + fun navigateToRoomMemberDetails(userId: UserId) + fun navigateToRoomCall() + fun navigateToReportRoom() + fun navigateToSelectNewOwnersWhenLeaving() } private val callback = plugins().first() @@ -74,27 +74,27 @@ class RoomDetailsNode( } private fun openRoomMemberList() { - callback.openRoomMemberList() + callback.navigateToRoomMemberList() } private fun openRoomNotificationSettings() { - callback.openRoomNotificationSettings() + callback.navigateToRoomNotificationSettings() } private fun invitePeople() { - callback.openInviteMembers() + callback.navigateToInviteMembers() } private fun openPollHistory() { - callback.openPollHistory() + callback.navigateToPollHistory() } private fun openMediaGallery() { - callback.openMediaGallery() + callback.navigateToMediaGallery() } private fun onJoinCall() { - callback.onJoinCall() + callback.navigateToRoomCall() } private fun CoroutineScope.onShareRoom(context: Context) = launch { @@ -113,39 +113,39 @@ class RoomDetailsNode( } private fun onEditRoomDetails() { - callback.editRoomDetails() + callback.navigateToRoomDetailsEdit() } private fun openAvatarPreview(name: String, url: String) { - callback.openAvatarPreview(name, url) + callback.navigateToAvatarPreview(name, url) } private fun openAdminSettings() { - callback.openAdminSettings() + callback.navigateToAdminSettings() } private fun openPinnedMessages() { - callback.openPinnedMessagesList() + callback.navigateToPinnedMessagesList() } private fun openKnockRequestsLists() { - callback.openKnockRequestsList() + callback.navigateToKnockRequestsList() } private fun openSecurityAndPrivacy() { - callback.openSecurityAndPrivacy() + callback.navigateToSecurityAndPrivacy() } private fun onProfileClick(userId: UserId) { - callback.openDmUserProfile(userId) + callback.navigateToRoomMemberDetails(userId) } private fun onReportRoomClick() { - callback.openReportRoom() + callback.navigateToReportRoom() } private fun onSelectNewOwnersWhenLeaving() { - return callback.onSelectNewOwnersWhenLeaving() + return callback.navigateToSelectNewOwnersWhenLeaving() } private val stateFlow = launchMolecule { presenter.present() } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt index cc7a6e2151..27a0bceb66 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt @@ -35,8 +35,8 @@ class RoomMemberListNode( private val roomMemberModerationRenderer: RoomMemberModerationRenderer, ) : Node(buildContext, plugins = plugins), RoomMemberListNavigator { interface Callback : Plugin { - fun openRoomMemberDetails(roomMemberId: UserId) - fun openInviteMembers() + fun navigateToRoomMemberDetails(roomMemberId: UserId) + fun navigateToInviteMembers() } private val callbacks = plugins() @@ -51,13 +51,13 @@ class RoomMemberListNode( override fun openRoomMemberDetails(roomMemberId: UserId) { callbacks.forEach { - it.openRoomMemberDetails(roomMemberId) + it.navigateToRoomMemberDetails(roomMemberId) } } override fun openInviteMembers() { callbacks.forEach { - it.openInviteMembers() + it.navigateToInviteMembers() } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt index 3b364c6f92..52aa7924e6 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsNode.kt @@ -62,12 +62,12 @@ class RoomMemberDetailsNode( userProfileNodeHelper.onShareUser(context, permalinkBuilder) } - fun onStartDM(roomId: RoomId) { - callback.onStartDM(roomId) + fun navigateToRoom(roomId: RoomId) { + callback.navigateToRoom(roomId) } fun onStartCall(roomId: RoomId) { - callback.onStartCall(roomId) + callback.startCall(roomId) } val state = presenter.present() @@ -77,10 +77,10 @@ class RoomMemberDetailsNode( modifier = modifier, goBack = this::navigateUp, onShareUser = ::onShareUser, - onOpenDm = ::onStartDM, + onOpenDm = ::navigateToRoom, onStartCall = ::onStartCall, - openAvatarPreview = callback::openAvatarPreview, - onVerifyClick = callback::onVerifyUser, + openAvatarPreview = callback::navigateToAvatarPreview, + onVerifyClick = callback::startVerifyUserFlow, ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt index 0e5a9b23b1..ec78bf56af 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt @@ -35,13 +35,13 @@ class RoomNotificationSettingsNode( val showUserDefinedSettingStyle: Boolean ) : NodeInputs interface Callback : Plugin { - fun openGlobalNotificationSettings() + fun navigateToGlobalNotificationSettings() } private val inputs = inputs() private val callbacks = plugins() - private fun openGlobalNotificationSettings() { - callbacks.forEach { it.openGlobalNotificationSettings() } + private fun navigateToGlobalNotificationSettings() { + callbacks.forEach { it.navigateToGlobalNotificationSettings() } } private val presenter = presenterFactory.create(inputs.showUserDefinedSettingStyle) @@ -59,7 +59,7 @@ class RoomNotificationSettingsNode( RoomNotificationSettingsView( state = state, modifier = modifier, - onShowGlobalNotifications = this::openGlobalNotificationSettings, + onShowGlobalNotifications = this::navigateToGlobalNotificationSettings, onBackClick = this::navigateUp, ) } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index a9d528ace5..0872567523 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -94,10 +94,10 @@ class DefaultRoomDetailsEntryPointTest { ) } val callback = object : RoomDetailsEntryPoint.Callback { - override fun onOpenGlobalNotificationSettings() = lambdaError() - override fun onOpenRoom(roomId: RoomId, serverNames: List) = lambdaError() - override fun onPermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() - override fun forwardEvent(eventId: EventId) = lambdaError() + override fun navigateToGlobalNotificationSettings() = lambdaError() + override fun navigateToRoom(roomId: RoomId, serverNames: List) = lambdaError() + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() + override fun startForwardEventFlow(eventId: EventId) = lambdaError() } val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, diff --git a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt index 892719554b..7a1764106a 100644 --- a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt @@ -21,6 +21,6 @@ interface RoomDirectoryEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onResultClick(roomDescription: RoomDescription) + fun navigateToRoom(roomDescription: RoomDescription) } } diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt index 03d2be6e35..5bc492b7a8 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt @@ -29,7 +29,7 @@ class RoomDirectoryNode( ) : Node(buildContext, plugins = plugins) { private fun onResultClick(roomDescription: RoomDescription) { plugins().forEach { - it.onResultClick(roomDescription) + it.navigateToRoom(roomDescription) } } diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt index d544f55000..50d15b66aa 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt @@ -35,7 +35,7 @@ class DefaultRoomDirectoryEntryPointTest { ) } val callback = object : RoomDirectoryEntryPoint.Callback { - override fun onResultClick(roomDescription: RoomDescription) = lambdaError() + override fun navigateToRoom(roomDescription: RoomDescription) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt index 4d79f8ea1b..63f6282dc8 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt @@ -77,19 +77,19 @@ class SecureBackupFlowNode( return when (navTarget) { NavTarget.Root -> { val callback = object : SecureBackupRootNode.Callback { - override fun onSetupClick() { + override fun navigateToSetup() { backstack.push(NavTarget.Setup) } - override fun onChangeClick() { + override fun navigateToChange() { backstack.push(NavTarget.Change) } - override fun onDisableClick() { + override fun navigateToDisable() { backstack.push(NavTarget.Disable) } - override fun onConfirmRecoveryKeyClick() { + override fun navigateToEnterRecoveryKey() { backstack.push(NavTarget.EnterRecoveryKey) } } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt index 6d4db197d3..e8d13a3d38 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt @@ -32,26 +32,26 @@ class SecureBackupRootNode( plugins = plugins ) { interface Callback : Plugin { - fun onSetupClick() - fun onChangeClick() - fun onDisableClick() - fun onConfirmRecoveryKeyClick() + fun navigateToSetup() + fun navigateToChange() + fun navigateToDisable() + fun navigateToEnterRecoveryKey() } private fun onSetupClick() { - plugins().forEach { it.onSetupClick() } + plugins().forEach { it.navigateToSetup() } } private fun onChangeClick() { - plugins().forEach { it.onChangeClick() } + plugins().forEach { it.navigateToChange() } } private fun onDisableClick() { - plugins().forEach { it.onDisableClick() } + plugins().forEach { it.navigateToDisable() } } private fun onConfirmRecoveryKeyClick() { - plugins().forEach { it.onConfirmRecoveryKeyClick() } + plugins().forEach { it.navigateToEnterRecoveryKey() } } private fun onLearnMoreClick(uriHandler: UriHandler) { diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index 9dd61c6dff..e939a75d15 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -31,9 +31,8 @@ interface SpaceEntryPoint : FeatureEntryPoint { ) : NodeInputs interface Callback : Plugin { - fun onOpenRoom(roomId: RoomId, viaParameters: List) - fun onOpenDetails() - - fun onOpenMemberList() + fun navigateToRoom(roomId: RoomId, viaParameters: List) + fun navigateToRoomDetails() + fun navigateToRoomMemberList() } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index f73a3d31ff..a9f8a79ed6 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -80,19 +80,19 @@ class SpaceFlowNode( } NavTarget.Root -> { val callback = object : SpaceNode.Callback { - override fun onOpenRoom(roomId: RoomId, viaParameters: List) { - callback.onOpenRoom(roomId, viaParameters) + override fun navigateToRoom(roomId: RoomId, viaParameters: List) { + callback.navigateToRoom(roomId, viaParameters) } - override fun onOpenDetails() { - callback.onOpenDetails() + override fun navigateToRoomDetails() { + callback.navigateToRoomDetails() } override fun onOpenMemberList() { - callback.onOpenMemberList() + callback.navigateToRoomMemberList() } - override fun onLeaveSpace() { + override fun startLeaveSpaceFlow() { backstack.push(NavTarget.Leave) } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index f02107dad2..978dc8dcbf 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -40,11 +40,10 @@ class SpaceNode( private val acceptDeclineInviteView: AcceptDeclineInviteView, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onOpenRoom(roomId: RoomId, viaParameters: List) - fun onOpenDetails() - + fun navigateToRoom(roomId: RoomId, viaParameters: List) + fun navigateToRoomDetails() fun onOpenMemberList() - fun onLeaveSpace() + fun startLeaveSpaceFlow() } private val callback = plugins.filterIsInstance().single() @@ -74,13 +73,13 @@ class SpaceNode( state = state, onBackClick = ::navigateUp, onLeaveSpaceClick = { - callback.onLeaveSpace() + callback.startLeaveSpaceFlow() }, onRoomClick = { spaceRoom -> - callback.onOpenRoom(spaceRoom.roomId, spaceRoom.via) + callback.navigateToRoom(spaceRoom.roomId, spaceRoom.via) }, onDetailsClick = { - callback.onOpenDetails() + callback.navigateToRoomDetails() }, onShareSpace = { onShareRoom(context) @@ -92,7 +91,7 @@ class SpaceNode( acceptDeclineInviteView.Render( state = state.acceptDeclineInviteState, onAcceptInviteSuccess = { roomId -> - callback.onOpenRoom(roomId, emptyList()) + callback.navigateToRoom(roomId, emptyList()) }, onDeclineInviteSuccess = { roomId -> // No action needed diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 2d43ef0d39..3cf6e398f2 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -44,9 +44,9 @@ class DefaultSpaceEntryPointTest { ) } val callback = object : SpaceEntryPoint.Callback { - override fun onOpenRoom(roomId: RoomId, viaParameters: List) = lambdaError() - override fun onOpenDetails() = lambdaError() - override fun onOpenMemberList() = lambdaError() + override fun navigateToRoom(roomId: RoomId, viaParameters: List) = lambdaError() + override fun navigateToRoomDetails() = lambdaError() + override fun navigateToRoomMemberList() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .inputs(nodeInputs) diff --git a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt index 17b9b902e2..ca200bed1a 100644 --- a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt +++ b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt @@ -21,7 +21,7 @@ interface StartChatEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) - fun onOpenRoomDirectory() + fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) + fun navigateToRoomDirectory() } } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/StartChatNavigator.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/StartChatNavigator.kt index a45b4dddab..70babb2928 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/StartChatNavigator.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/StartChatNavigator.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.architecture.overlay.operation.show import io.element.android.libraries.matrix.api.core.RoomIdOrAlias interface StartChatNavigator : Plugin { - fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) + fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) fun onCreateNewRoom() fun onShowJoinRoomByAddress() fun onDismissJoinRoomByAddress() @@ -30,7 +30,8 @@ class DefaultStartChatNavigator( private val openRoom: (RoomIdOrAlias, List) -> Unit, private val openRoomDirectory: () -> Unit, ) : StartChatNavigator { - override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = openRoom(roomIdOrAlias, serverNames) + override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = + openRoom(roomIdOrAlias, serverNames) override fun onOpenRoomDirectory() = openRoomDirectory() diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt index 30d1f3a2cf..e875dcc748 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt @@ -64,10 +64,10 @@ class StartChatFlowNode( backstack = backstack, overlay = overlay, openRoom = { roomIdOrAlias, viaServers -> - plugins().forEach { it.onOpenRoom(roomIdOrAlias, viaServers) } + plugins().forEach { it.onRoomCreated(roomIdOrAlias, viaServers) } }, openRoomDirectory = { - plugins().forEach { it.onOpenRoomDirectory() } + plugins().forEach { it.navigateToRoomDirectory() } } ) @@ -79,7 +79,7 @@ class StartChatFlowNode( NavTarget.NewRoom -> { val callback = object : CreateRoomEntryPoint.Callback { override fun onRoomCreated(roomId: RoomId) { - navigator.onOpenRoom(roomId.toRoomIdOrAlias(), emptyList()) + navigator.onRoomCreated(roomId.toRoomIdOrAlias(), emptyList()) } } createRoomEntryPoint.nodeBuilder(parentNode = this, buildContext = buildContext) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt index 540c1a4784..350a59de73 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt @@ -94,7 +94,7 @@ class JoinRoomByAddressPresenter( private fun onRoomFound(state: RoomAddressState.RoomFound) { navigator.onDismissJoinRoomByAddress() - navigator.onOpenRoom( + navigator.onRoomCreated( roomIdOrAlias = state.resolved.roomId.toRoomIdOrAlias(), serverNames = state.resolved.servers ) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatNode.kt index 9a9ca85160..b5cc7f2506 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatNode.kt @@ -53,7 +53,7 @@ class StartChatNode( onCloseClick = this::navigateUp, onNewRoomClick = navigator::onCreateNewRoom, onOpenDM = { - navigator.onOpenRoom(roomIdOrAlias = it.toRoomIdOrAlias(), serverNames = emptyList()) + navigator.onRoomCreated(roomIdOrAlias = it.toRoomIdOrAlias(), serverNames = emptyList()) }, onJoinByAddressClick = navigator::onShowJoinRoomByAddress, onInviteFriendsClick = { invitePeople(activity) }, diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt index 8f4a41a3fa..6da424c01a 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt @@ -40,8 +40,8 @@ class DefaultStartChatEntryPointTest { ) } val callback = object : StartChatEntryPoint.Callback { - override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = lambdaError() - override fun onOpenRoomDirectory() = lambdaError() + override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = lambdaError() + override fun navigateToRoomDirectory() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/FakeStartChatNavigator.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/FakeStartChatNavigator.kt index 9de00e0a4c..95a8801fd7 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/FakeStartChatNavigator.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/FakeStartChatNavigator.kt @@ -17,7 +17,7 @@ class FakeStartChatNavigator( private val dismissJoinRoomByAddressLambda: () -> Unit = {}, private val openRoomDirectoryLambda: () -> Unit = {}, ) : StartChatNavigator { - override fun onOpenRoom(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { + override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) { openRoomLambda(roomIdOrAlias, serverNames) } diff --git a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt index 70968aad61..20f4a10955 100644 --- a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt +++ b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt @@ -19,7 +19,7 @@ interface UserProfileEntryPoint : FeatureEntryPoint { data class Params(val userId: UserId) : NodeInputs interface Callback : Plugin { - fun onOpenRoom(roomId: RoomId) + fun navigateToRoom(roomId: RoomId) } interface NodeBuilder { diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index da3adef973..c9df5024be 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -73,19 +73,19 @@ class UserProfileFlowNode( return when (navTarget) { NavTarget.Root -> { val callback = object : UserProfileNodeHelper.Callback { - override fun openAvatarPreview(username: String, avatarUrl: String) { + override fun navigateToAvatarPreview(username: String, avatarUrl: String) { backstack.push(NavTarget.AvatarPreview(username, avatarUrl)) } - override fun onStartDM(roomId: RoomId) { - plugins().forEach { it.onOpenRoom(roomId) } + override fun navigateToRoom(roomId: RoomId) { + plugins().forEach { it.navigateToRoom(roomId) } } - override fun onStartCall(dmRoomId: RoomId) { + override fun startCall(dmRoomId: RoomId) { elementCallEntryPoint.startCall(CallType.RoomCall(sessionId = sessionId, roomId = dmRoomId)) } - override fun onVerifyUser(userId: UserId) { + override fun startVerifyUserFlow(userId: UserId) { backstack.push(NavTarget.VerifyUser(userId)) } } @@ -98,11 +98,11 @@ class UserProfileFlowNode( backstack.pop() } - override fun onViewInTimeline(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { // Cannot happen } - override fun onForwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { // Cannot happen } } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfileNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfileNode.kt index 735957946a..c182bcb26c 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfileNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfileNode.kt @@ -63,7 +63,7 @@ class UserProfileNode( } fun onStartDM(roomId: RoomId) { - callback.onStartDM(roomId) + callback.navigateToRoom(roomId) } val state = presenter.present() @@ -74,9 +74,9 @@ class UserProfileNode( goBack = this::navigateUp, onShareUser = ::onShareUser, onOpenDm = ::onStartDM, - onStartCall = callback::onStartCall, - openAvatarPreview = callback::openAvatarPreview, - onVerifyClick = callback::onVerifyUser, + onStartCall = callback::startCall, + openAvatarPreview = callback::navigateToAvatarPreview, + onVerifyClick = callback::startVerifyUserFlow, ) } } diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt index 75bc434048..493b9045cc 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt @@ -67,7 +67,7 @@ class DefaultUserProfileEntryPointTest { ) } val callback = object : UserProfileEntryPoint.Callback { - override fun onOpenRoom(roomId: RoomId) { + override fun navigateToRoom(roomId: RoomId) { lambdaError() } } diff --git a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileNodeHelper.kt b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileNodeHelper.kt index 61f4669769..af5f9691e0 100644 --- a/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileNodeHelper.kt +++ b/features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileNodeHelper.kt @@ -21,10 +21,10 @@ class UserProfileNodeHelper( private val userId: UserId, ) { interface Callback : NodeInputs { - fun openAvatarPreview(username: String, avatarUrl: String) - fun onStartDM(roomId: RoomId) - fun onStartCall(dmRoomId: RoomId) - fun onVerifyUser(userId: UserId) + fun navigateToAvatarPreview(username: String, avatarUrl: String) + fun navigateToRoom(roomId: RoomId) + fun startCall(dmRoomId: RoomId) + fun startVerifyUserFlow(userId: UserId) } fun onShareUser( diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt index 60536504d2..0d4fe76156 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt @@ -29,7 +29,7 @@ interface OutgoingVerificationEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onLearnMoreAboutEncryption() + fun navigateToLearnMoreAboutEncryption() fun onBack() fun onDone() } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt index 9941ce58fe..c5a04f7834 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt @@ -42,7 +42,7 @@ class OutgoingVerificationNode( OutgoingVerificationView( state = state, modifier = modifier, - onLearnMoreClick = callback::onLearnMoreAboutEncryption, + onLearnMoreClick = callback::navigateToLearnMoreAboutEncryption, onFinish = callback::onDone, onBack = callback::onBack, ) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt index 52ff36dbd6..7e152383f9 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt @@ -34,7 +34,7 @@ class DefaultOutgoingVerificationEntryPointTest { ) } val callback = object : OutgoingVerificationEntryPoint.Callback { - override fun onLearnMoreAboutEncryption() = lambdaError() + override fun navigateToLearnMoreAboutEncryption() = lambdaError() override fun onBack() = lambdaError() override fun onDone() = lambdaError() } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt index 4c57ea4135..b7c6fe1bd1 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt @@ -35,7 +35,7 @@ class ViewFolderNode( interface Callback : Plugin { fun onBackClick() - fun onNavigateTo(item: Item) + fun navigateToItem(item: Item) } private val inputs: Inputs = inputs() @@ -50,7 +50,7 @@ class ViewFolderNode( } private fun onNavigateTo(item: Item) { - plugins().forEach { it.onNavigateTo(item) } + plugins().forEach { it.navigateToItem(item) } } @Composable diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt index d57824f2fd..3c7935464b 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt @@ -111,7 +111,7 @@ class ViewFolderFlowNode( onDone() } - override fun onNavigateTo(item: Item) { + override fun navigateToItem(item: Item) { when (item) { Item.Parent -> { // Should not happen when in Root since parent is not accessible from root (canGoUp set to false) diff --git a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt index 72da3491de..112293eb6a 100644 --- a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt +++ b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt @@ -22,7 +22,7 @@ interface AccountSelectEntryPoint : FeatureEntryPoint { } interface Callback : Plugin { - fun onSelectAccount(sessionId: SessionId) + fun onAccountSelected(sessionId: SessionId) fun onCancel() } } diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt index 5478d9fe43..f0a543340c 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt @@ -32,8 +32,8 @@ class AccountSelectNode( callbacks.forEach { it.onCancel() } } - private fun onSelectAccount(sessionId: SessionId) { - callbacks.forEach { it.onSelectAccount(sessionId) } + private fun onAccountSelected(sessionId: SessionId) { + callbacks.forEach { it.onAccountSelected(sessionId) } } @Composable @@ -42,7 +42,7 @@ class AccountSelectNode( AccountSelectView( state = state, onDismiss = ::onDismiss, - onSelectAccount = ::onSelectAccount, + onSelectAccount = ::onAccountSelected, modifier = modifier, ) } diff --git a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt index d61dcc89ba..230248d421 100644 --- a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt +++ b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt @@ -32,7 +32,7 @@ class DefaultAccountSelectEntryPointTest { ) } val callback = object : AccountSelectEntryPoint.Callback { - override fun onSelectAccount(sessionId: SessionId) = lambdaError() + override fun onAccountSelected(sessionId: SessionId) = lambdaError() override fun onCancel() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index 119c1002c8..702ce181db 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -23,7 +23,7 @@ interface MediaGalleryEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onBackClick() - fun onViewInTimeline(eventId: EventId) - fun forwardEvent(eventId: EventId) + fun viewInTimeline(eventId: EventId) + fun forward(eventId: EventId) } } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index b16de69b98..da1227d66b 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -30,8 +30,8 @@ interface MediaViewerEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onDone() - fun onViewInTimeline(eventId: EventId) - fun onForwardEvent(eventId: EventId) + fun viewInTimeline(eventId: EventId) + fun forwardEvent(eventId: EventId) } data class Params( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt index 6ee31c6520..ff1359b672 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt @@ -38,9 +38,9 @@ class MediaGalleryNode( interface Callback : Plugin { fun onBackClick() - fun onItemClick(item: MediaItem.Event) - fun onViewInTimeline(eventId: EventId) - fun onForward(eventId: EventId) + fun showItem(item: MediaItem.Event) + fun viewInTimeline(eventId: EventId) + fun forward(eventId: EventId) } private fun onBackClick() { @@ -51,19 +51,19 @@ class MediaGalleryNode( override fun onViewInTimelineClick(eventId: EventId) { plugins().forEach { - it.onViewInTimeline(eventId) + it.viewInTimeline(eventId) } } override fun onForwardClick(eventId: EventId) { plugins().forEach { - it.onForward(eventId) + it.forward(eventId) } } private fun onItemClick(item: MediaItem.Event) { plugins().forEach { - it.onItemClick(item) + it.showItem(item) } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index 76f025006f..b72a3fbd46 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -78,13 +78,13 @@ class MediaGalleryFlowNode( private fun onViewInTimeline(eventId: EventId) { plugins().forEach { - it.onViewInTimeline(eventId) + it.viewInTimeline(eventId) } } private fun forwardEvent(eventId: EventId) { plugins().forEach { - it.forwardEvent(eventId) + it.forward(eventId) } } @@ -96,15 +96,15 @@ class MediaGalleryFlowNode( this@MediaGalleryFlowNode.onBackClick() } - override fun onViewInTimeline(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { this@MediaGalleryFlowNode.onViewInTimeline(eventId) } - override fun onForward(eventId: EventId) { + override fun forward(eventId: EventId) { forwardEvent(eventId) } - override fun onItemClick(item: MediaItem.Event) { + override fun showItem(item: MediaItem.Event) { val mode = when (item) { is MediaItem.Audio, is MediaItem.Voice, @@ -131,13 +131,13 @@ class MediaGalleryFlowNode( overlay.hide() } - override fun onViewInTimeline(eventId: EventId) { + override fun viewInTimeline(eventId: EventId) { this@MediaGalleryFlowNode.onViewInTimeline(eventId) } - override fun onForwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId) { // Need to go to the parent because of the overlay - forwardEvent(eventId) + this@MediaGalleryFlowNode.forwardEvent(eventId) } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index ee874156cd..a62784555a 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -67,13 +67,13 @@ class MediaViewerNode( override fun onViewInTimelineClick(eventId: EventId) { plugins().forEach { - it.onViewInTimeline(eventId) + it.viewInTimeline(eventId) } } override fun onForwardClick(eventId: EventId) { plugins().forEach { - it.onForwardEvent(eventId) + it.forwardEvent(eventId) } } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 38040426e1..8d38615ff3 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -42,8 +42,8 @@ class DefaultMediaGalleryEntryPointTest { } val callback = object : MediaGalleryEntryPoint.Callback { override fun onBackClick() = lambdaError() - override fun onViewInTimeline(eventId: EventId) = lambdaError() - override fun forwardEvent(eventId: EventId) = lambdaError() + override fun viewInTimeline(eventId: EventId) = lambdaError() + override fun forward(eventId: EventId) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index a1f60cc124..ab31b5611e 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -71,8 +71,8 @@ class DefaultMediaViewerEntryPointTest { } val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() - override fun onViewInTimeline(eventId: EventId) = lambdaError() - override fun onForwardEvent(eventId: EventId) = lambdaError() + override fun viewInTimeline(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId) = lambdaError() } val params = createMediaViewerEntryPointParams() val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) @@ -115,8 +115,8 @@ class DefaultMediaViewerEntryPointTest { } val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() - override fun onViewInTimeline(eventId: EventId) = lambdaError() - override fun onForwardEvent(eventId: EventId) = lambdaError() + override fun viewInTimeline(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .avatar( diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt index a7e6dc0cb0..e72c45ed22 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt @@ -42,7 +42,7 @@ class RoomSelectNode( callbacks.forEach { it.onCancel() } } - private fun onSubmit(roomIds: List) { + private fun onRoomSelected(roomIds: List) { callbacks.forEach { it.onRoomSelected(roomIds) } } @@ -52,7 +52,7 @@ class RoomSelectNode( RoomSelectView( state = state, onDismiss = ::onDismiss, - onSubmit = ::onSubmit, + onSubmit = ::onRoomSelected, modifier = modifier ) } diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt index bf0c6bb883..034abe9400 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt @@ -22,6 +22,6 @@ interface NotificationTroubleShootEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onDone() - fun openIgnoredUsers() + fun navigateToBlockedUsers() } } diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt index 0eab9b8e5a..bd0753d5cd 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt @@ -24,6 +24,6 @@ interface PushHistoryEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onDone() - fun navigateTo(roomId: RoomId, eventId: EventId) + fun navigateToEvent(roomId: RoomId, eventId: EventId) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt index 508010a3d6..9ab1156d49 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt @@ -43,7 +43,7 @@ class TroubleshootNotificationsNode( override fun openIgnoredUsers() { plugins().forEach { - it.openIgnoredUsers() + it.navigateToBlockedUsers() } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt index 69070298ec..e8b17bf2ca 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt @@ -39,7 +39,7 @@ class PushHistoryNode( override fun navigateTo(roomId: RoomId, eventId: EventId) { plugins().forEach { - it.navigateTo(roomId, eventId) + it.navigateToEvent(roomId, eventId) } } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt index e0d817a4ca..a506502fc1 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt @@ -34,7 +34,7 @@ class DefaultNotificationTroubleShootEntryPointTest { } val callback = object : NotificationTroubleShootEntryPoint.Callback { override fun onDone() = lambdaError() - override fun openIgnoredUsers() = lambdaError() + override fun navigateToBlockedUsers() = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt index 858956488c..aa73649c62 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt @@ -46,7 +46,7 @@ class DefaultPushHistoryEntryPointTest { } val callback = object : PushHistoryEntryPoint.Callback { override fun onDone() = lambdaError() - override fun navigateTo(roomId: RoomId, eventId: EventId) = lambdaError() + override fun navigateToEvent(roomId: RoomId, eventId: EventId) = lambdaError() } val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) .callback(callback) From 596b7f00fc95d7cd4f3b71b668f90527259fc209 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 08:36:14 +0100 Subject: [PATCH 257/898] More renaming --- .../roomdetails/impl/RoomDetailsNode.kt | 100 ++++-------------- .../features/space/impl/SpaceFlowNode.kt | 2 +- .../features/space/impl/root/SpaceNode.kt | 4 +- 3 files changed, 25 insertions(+), 81 deletions(-) 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 ea37c0f774..c439c2ce49 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 @@ -63,7 +63,7 @@ class RoomDetailsNode( fun navigateToSelectNewOwnersWhenLeaving() } - private val callback = plugins().first() + private val callback = plugins().single() init { lifecycle.subscribe( @@ -73,30 +73,6 @@ class RoomDetailsNode( ) } - private fun openRoomMemberList() { - callback.navigateToRoomMemberList() - } - - private fun openRoomNotificationSettings() { - callback.navigateToRoomNotificationSettings() - } - - private fun invitePeople() { - callback.navigateToInviteMembers() - } - - private fun openPollHistory() { - callback.navigateToPollHistory() - } - - private fun openMediaGallery() { - callback.navigateToMediaGallery() - } - - private fun onJoinCall() { - callback.navigateToRoomCall() - } - private fun CoroutineScope.onShareRoom(context: Context) = launch { room.getPermalink() .onSuccess { permalink -> @@ -112,42 +88,6 @@ class RoomDetailsNode( } } - private fun onEditRoomDetails() { - callback.navigateToRoomDetailsEdit() - } - - private fun openAvatarPreview(name: String, url: String) { - callback.navigateToAvatarPreview(name, url) - } - - private fun openAdminSettings() { - callback.navigateToAdminSettings() - } - - private fun openPinnedMessages() { - callback.navigateToPinnedMessagesList() - } - - private fun openKnockRequestsLists() { - callback.navigateToKnockRequestsList() - } - - private fun openSecurityAndPrivacy() { - callback.navigateToSecurityAndPrivacy() - } - - private fun onProfileClick(userId: UserId) { - callback.navigateToRoomMemberDetails(userId) - } - - private fun onReportRoomClick() { - callback.navigateToReportRoom() - } - - private fun onSelectNewOwnersWhenLeaving() { - return callback.navigateToSelectNewOwnersWhenLeaving() - } - private val stateFlow = launchMolecule { presenter.present() } fun onNewOwnersSelected() { @@ -165,34 +105,38 @@ class RoomDetailsNode( fun onActionClick(action: RoomDetailsAction) { when (action) { - RoomDetailsAction.Edit -> onEditRoomDetails() - RoomDetailsAction.AddTopic -> onEditRoomDetails() + RoomDetailsAction.Edit -> { + callback.navigateToRoomDetailsEdit() + } + RoomDetailsAction.AddTopic -> { + callback.navigateToRoomDetailsEdit() + } } } RoomDetailsView( state = state, modifier = modifier, - goBack = this::navigateUp, + goBack = ::navigateUp, onActionClick = ::onActionClick, onShareRoom = ::onShareRoom, - openRoomMemberList = ::openRoomMemberList, - openRoomNotificationSettings = ::openRoomNotificationSettings, - invitePeople = ::invitePeople, - openAvatarPreview = ::openAvatarPreview, - openPollHistory = ::openPollHistory, - openMediaGallery = ::openMediaGallery, - openAdminSettings = this::openAdminSettings, - onJoinCallClick = ::onJoinCall, - onPinnedMessagesClick = ::openPinnedMessages, - onKnockRequestsClick = ::openKnockRequestsLists, - onSecurityAndPrivacyClick = ::openSecurityAndPrivacy, - onProfileClick = ::onProfileClick, - onReportRoomClick = ::onReportRoomClick, + openRoomMemberList = callback::navigateToRoomMemberList, + openRoomNotificationSettings = callback::navigateToRoomNotificationSettings, + invitePeople = callback::navigateToInviteMembers, + openAvatarPreview = callback::navigateToAvatarPreview, + openPollHistory = callback::navigateToPollHistory, + openMediaGallery = callback::navigateToMediaGallery, + openAdminSettings = callback::navigateToAdminSettings, + onJoinCallClick = callback::navigateToRoomCall, + onPinnedMessagesClick = callback::navigateToPinnedMessagesList, + onKnockRequestsClick = callback::navigateToKnockRequestsList, + onSecurityAndPrivacyClick = callback::navigateToSecurityAndPrivacy, + onProfileClick = callback::navigateToRoomMemberDetails, + onReportRoomClick = callback::navigateToReportRoom, leaveRoomView = { leaveRoomRenderer.Render( state = state.leaveRoomState, - onSelectNewOwners = { onSelectNewOwnersWhenLeaving() }, + onSelectNewOwners = { callback.navigateToSelectNewOwnersWhenLeaving() }, modifier = Modifier ) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index a9f8a79ed6..fb3de4a9be 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -88,7 +88,7 @@ class SpaceFlowNode( callback.navigateToRoomDetails() } - override fun onOpenMemberList() { + override fun navigateToRoomMemberList() { callback.navigateToRoomMemberList() } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 978dc8dcbf..28481651eb 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -42,7 +42,7 @@ class SpaceNode( interface Callback : Plugin { fun navigateToRoom(roomId: RoomId, viaParameters: List) fun navigateToRoomDetails() - fun onOpenMemberList() + fun navigateToRoomMemberList() fun startLeaveSpaceFlow() } @@ -85,7 +85,7 @@ class SpaceNode( onShareRoom(context) }, onViewMembersClick = { - callback.onOpenMemberList() + callback.navigateToRoomMemberList() }, acceptDeclineInviteView = { acceptDeclineInviteView.Render( From 5197154f5462c30329de23dd5772d885a45aa8a1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 09:14:41 +0100 Subject: [PATCH 258/898] Ensure a Callback and only one is provided in the Plugin. Also reduce boilerplate code in Nodes. --- .../appnav/LoggedInAppScopeFlowNode.kt | 8 +- .../android/appnav/LoggedInFlowNode.kt | 9 +- .../android/appnav/NotLoggedInFlowNode.kt | 5 +- .../android/appnav/loggedin/LoggedInNode.kt | 10 +-- .../room/joined/JoinedRoomLoadedFlowNode.kt | 17 ++-- .../createroom/impl/CreateRoomFlowNode.kt | 8 +- .../impl/addpeople/AddPeopleNode.kt | 9 +- .../impl/configureroom/ConfigureRoomNode.kt | 8 +- .../forward/impl/ForwardMessagesNode.kt | 11 +-- .../FtueSessionVerificationFlowNode.kt | 18 ++-- .../ChooseSelfVerificationModeNode.kt | 4 +- .../features/home/impl/HomeFlowNode.kt | 55 ++++-------- .../impl/list/DependencyLicensesListNode.kt | 9 +- .../impl/settings/LockScreenSettingsNode.kt | 8 +- .../impl/setup/LockScreenSetupFlowNode.kt | 10 +-- .../setup/biometric/SetupBiometricNode.kt | 8 +- .../lockscreen/impl/unlock/PinUnlockNode.kt | 10 +-- .../features/login/impl/LoginFlowNode.kt | 5 +- .../ChangeAccountProviderNode.kt | 14 +-- .../ChooseAccountProviderNode.kt | 20 ++--- .../ConfirmAccountProviderNode.kt | 26 ++---- .../impl/screens/onboarding/OnBoardingNode.kt | 45 ++-------- .../confirmation/QrCodeConfirmationNode.kt | 9 +- .../screens/qrcode/error/QrCodeErrorNode.kt | 9 +- .../screens/qrcode/intro/QrCodeIntroNode.kt | 14 +-- .../screens/qrcode/scan/QrCodeScanNode.kt | 14 +-- .../SearchAccountProviderNode.kt | 8 +- .../features/logout/impl/LogoutNode.kt | 8 +- .../messages/impl/MessagesFlowNode.kt | 24 +++--- .../features/messages/impl/MessagesNode.kt | 82 +++++------------- .../pinned/list/PinnedMessagesListNode.kt | 27 ++---- .../impl/threads/ThreadedMessagesNode.kt | 62 ++++--------- .../poll/impl/history/PollHistoryNode.kt | 8 +- .../preferences/impl/PreferencesFlowNode.kt | 16 ++-- .../preferences/impl/about/AboutNode.kt | 7 +- .../impl/developer/DeveloperSettingsNode.kt | 10 +-- .../notifications/NotificationSettingsNode.kt | 16 +--- .../EditDefaultNotificationSettingNode.kt | 10 +-- .../impl/root/PreferencesRootNode.kt | 86 ++++--------------- .../impl/bugreport/BugReportFlowNode.kt | 8 +- .../rageshake/impl/bugreport/BugReportNode.kt | 14 +-- .../impl/RoomAliasResolverNode.kt | 10 +-- .../roomdetails/impl/RoomDetailsFlowNode.kt | 20 ++--- .../roomdetails/impl/RoomDetailsNode.kt | 4 +- .../impl/members/RoomMemberListNode.kt | 12 +-- .../RoomNotificationSettingsNode.kt | 15 ++-- .../RolesAndPermissionsNode.kt | 4 +- .../impl/root/RoomDirectoryNode.kt | 11 +-- .../securebackup/impl/SecureBackupFlowNode.kt | 8 +- .../enter/SecureBackupEnterRecoveryKeyNode.kt | 4 +- .../impl/reset/ResetIdentityFlowNode.kt | 6 +- .../impl/reset/root/ResetIdentityRootNode.kt | 3 +- .../impl/root/SecureBackupRootNode.kt | 26 ++---- .../android/features/share/impl/ShareNode.kt | 11 +-- .../features/space/impl/SpaceFlowNode.kt | 3 +- .../features/space/impl/root/SpaceNode.kt | 3 +- .../startchat/impl/StartChatFlowNode.kt | 11 +-- .../userprofile/impl/UserProfileFlowNode.kt | 5 +- .../impl/incoming/IncomingVerificationNode.kt | 5 +- .../impl/outgoing/OutgoingVerificationNode.kt | 5 +- .../viewfolder/impl/file/ViewFileNode.kt | 9 +- .../viewfolder/impl/folder/ViewFolderNode.kt | 15 +--- .../impl/root/ViewFolderFlowNode.kt | 9 +- .../accountselect/impl/AccountSelectNode.kt | 16 +--- .../libraries/architecture/NodeCallback.kt | 16 ++++ .../impl/gallery/MediaGalleryNode.kt | 26 ++---- .../impl/gallery/root/MediaGalleryFlowNode.kt | 30 ++----- .../impl/viewer/MediaViewerNode.kt | 21 ++--- .../impl/troubleshoot/IgnoredUsersTest.kt | 2 +- .../impl/troubleshoot/IgnoredUsersTestTest.kt | 2 +- .../roomselect/impl/RoomSelectNode.kt | 17 +--- .../test/NotificationTroubleshootNavigator.kt | 2 +- .../impl/TroubleshootNotificationsNode.kt | 17 ++-- .../impl/history/PushHistoryNode.kt | 14 +-- .../TroubleshootNotificationsPresenterTest.kt | 2 +- .../FakeNotificationTroubleshootNavigator.kt | 2 +- 76 files changed, 374 insertions(+), 741 deletions(-) create mode 100644 libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/NodeCallback.kt diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt index 47681dc624..5e160ed49f 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt @@ -21,13 +21,13 @@ 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 com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.SessionGraphFactory import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.DependencyInjectionGraphOwner @@ -60,6 +60,8 @@ class LoggedInAppScopeFlowNode( fun navigateToAddAccount() } + private val callback: Callback = callback() + @Parcelize object NavTarget : Parcelable @@ -82,11 +84,11 @@ class LoggedInAppScopeFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { val callback = object : LoggedInFlowNode.Callback { override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } override fun navigateToAddAccount() { - plugins().forEach { it.navigateToAddAccount() } + callback.navigateToAddAccount() } } return createNode(buildContext, listOf(callback)) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index dc6ad19f4b..466abc9e36 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -24,7 +24,6 @@ import com.bumble.appyx.core.navigation.NavKey import com.bumble.appyx.core.navigation.model.permanent.PermanentNavModel 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.BackStack.State.ACTIVE import com.bumble.appyx.navmodel.backstack.BackStack.State.CREATED @@ -67,6 +66,7 @@ import io.element.android.features.userprofile.api.UserProfileEntryPoint import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.waitForChildAttached import io.element.android.libraries.architecture.waitForNavTargetAttached @@ -152,6 +152,7 @@ class LoggedInFlowNode( fun navigateToAddAccount() } + private val callback: Callback = callback() private val loggedInFlowProcessor = LoggedInEventProcessor( snackbarDispatcher = snackbarDispatcher, roomMembershipObserver = matrixClient.roomMembershipObserver, @@ -329,7 +330,7 @@ class LoggedInFlowNode( } override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } } homeEntryPoint @@ -396,11 +397,11 @@ class LoggedInFlowNode( is NavTarget.Settings -> { val callback = object : PreferencesEntryPoint.Callback { override fun navigateToAddAccount() { - plugins().forEach { it.navigateToAddAccount() } + callback.navigateToAddAccount() } override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToAddAccount() } override fun navigateToSecureBackup() { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index f3c92f4407..bb0ffa82c1 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -18,7 +18,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted @@ -29,6 +28,7 @@ import io.element.android.features.login.api.LoginParams import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.designsystem.utils.ForceOrientationInMobileDevices import io.element.android.libraries.designsystem.utils.ScreenOrientation @@ -58,6 +58,7 @@ class NotLoggedInFlowNode( fun navigateToBugReport() } + private val callback: Callback = callback() private val inputs = inputs() override fun onBuilt() { @@ -79,7 +80,7 @@ class NotLoggedInFlowNode( NavTarget.Root -> { val callback = object : LoginEntryPoint.Callback { override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } } loginEntryPoint diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt index edc2be05db..9f4187cb9c 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInNode.kt @@ -12,10 +12,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -32,18 +32,14 @@ class LoggedInNode( fun navigateToNotificationTroubleshoot() } - private fun navigateToNotificationTroubleshoot() { - plugins().forEach { - it.navigateToNotificationTroubleshoot() - } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val loggedInState = loggedInPresenter.present() LoggedInView( state = loggedInState, - navigateToNotificationTroubleshoot = ::navigateToNotificationTroubleshoot, + navigateToNotificationTroubleshoot = callback::navigateToNotificationTroubleshoot, modifier = modifier ) } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 154d8c45d0..760adfab25 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -31,6 +31,7 @@ import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.architecture.waitForChildAttached import io.element.android.libraries.di.DependencyInjectionGraphOwner @@ -87,7 +88,7 @@ class JoinedRoomLoadedFlowNode( ) : NodeInputs private val inputs: Inputs = inputs() - private val callbacks = plugins.filterIsInstance() + private val callback: Callback = callback() override val graph = roomGraphFactory.create(inputs.room) init { @@ -124,15 +125,15 @@ class JoinedRoomLoadedFlowNode( private fun createRoomDetailsNode(buildContext: BuildContext, initialTarget: RoomDetailsEntryPoint.InitialTarget): Node { val callback = object : RoomDetailsEntryPoint.Callback { override fun navigateToGlobalNotificationSettings() { - callbacks.forEach { it.navigateToGlobalNotificationSettings() } + callback.navigateToGlobalNotificationSettings() } override fun navigateToRoom(roomId: RoomId, serverNames: List) { - callbacks.forEach { it.navigateToRoom(roomId, serverNames) } + callback.navigateToRoom(roomId, serverNames) } override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack) } + callback.handlePermalinkClick(data, pushToBackstack) } override fun startForwardEventFlow(eventId: EventId) { @@ -172,7 +173,7 @@ class JoinedRoomLoadedFlowNode( override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> - callbacks.forEach { it.navigateToRoom(roomId, emptyList()) } + callback.navigateToRoom(roomId, emptyList()) } } } @@ -187,7 +188,7 @@ class JoinedRoomLoadedFlowNode( private fun createSpaceNode(buildContext: BuildContext): Node { val callback = object : SpaceEntryPoint.Callback { override fun navigateToRoom(roomId: RoomId, viaParameters: List) { - callbacks.forEach { it.navigateToRoom(roomId, viaParameters) } + callback.navigateToRoom(roomId, viaParameters) } override fun navigateToRoomDetails() { @@ -218,7 +219,7 @@ class JoinedRoomLoadedFlowNode( } override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack) } + callback.handlePermalinkClick(data, pushToBackstack) } override fun forwardEvent(eventId: EventId) { @@ -226,7 +227,7 @@ class JoinedRoomLoadedFlowNode( } override fun navigateToRoom(roomId: RoomId) { - callbacks.forEach { it.navigateToRoom(roomId, emptyList()) } + callback.navigateToRoom(roomId, emptyList()) } } val params = MessagesEntryPoint.Params( diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt index 8f46103ba5..809edc933e 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/CreateRoomFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.replace import dev.zacsweers.metro.Assisted @@ -24,6 +23,7 @@ import io.element.android.features.createroom.impl.addpeople.AddPeopleNode import io.element.android.features.createroom.impl.configureroom.ConfigureRoomNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @@ -42,9 +42,7 @@ class CreateRoomFlowNode( buildContext = buildContext, plugins = plugins ) { - private fun onRoomCreated(roomId: RoomId) { - plugins().forEach { it.onRoomCreated(roomId) } - } + private val callback: CreateRoomEntryPoint.Callback = callback() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { @@ -60,7 +58,7 @@ class CreateRoomFlowNode( val inputs = AddPeopleNode.Inputs(navTarget.roomId) val callback: AddPeopleNode.Callback = object : AddPeopleNode.Callback { override fun onFinish() { - onRoomCreated(navTarget.roomId) + callback.onRoomCreated(navTarget.roomId) } } createNode(buildContext, plugins = listOf(inputs, callback)) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt index 9ea89912cb..5db56043d9 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleNode.kt @@ -12,13 +12,13 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.invitepeople.api.InvitePeoplePresenter import io.element.android.features.invitepeople.api.InvitePeopleRenderer import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @@ -39,10 +39,7 @@ class AddPeopleNode( fun onFinish() } - private fun onFinish() { - plugins().forEach { it.onFinish() } - } - + private val callback: Callback = callback() private val roomId = inputs().roomId private val invitePeoplePresenter = invitePeoplePresenterFactory.create( joinedRoom = null, @@ -54,7 +51,7 @@ class AddPeopleNode( val state = invitePeoplePresenter.present() AddPeopleView( state = state, - onFinish = ::onFinish, + onFinish = callback::onFinish, ) { invitePeopleRenderer.Render(state, Modifier) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt index 9e721d28bd..3c57c0b59d 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt @@ -13,11 +13,11 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.services.analytics.api.AnalyticsService @@ -42,9 +42,7 @@ class ConfigureRoomNode( ) } - private fun onCreateRoomSuccess(roomId: RoomId) { - plugins().forEach { it.onCreateRoomSuccess(roomId) } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -53,7 +51,7 @@ class ConfigureRoomNode( state = state, modifier = modifier, onBackClick = this::navigateUp, - onCreateRoomSuccess = ::onCreateRoomSuccess, + onCreateRoomSuccess = callback::onCreateRoomSuccess, ) } } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index 27e95898d2..6fb1b2dc0e 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -22,6 +22,7 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.EventId @@ -55,8 +56,8 @@ class ForwardMessagesNode( ) : NodeInputs private val inputs = inputs() + private val callback: ForwardEntryPoint.Callback = callback() private val presenter = presenterFactory.create(inputs.eventId.value, inputs.timelineProvider) - private val callbacks = plugins.filterIsInstance() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { val callback = object : RoomSelectEntryPoint.Callback { @@ -65,7 +66,7 @@ class ForwardMessagesNode( } override fun onCancel() { - onForwardDone(emptyList()) + callback.onDone(emptyList()) } } @@ -86,12 +87,8 @@ class ForwardMessagesNode( val state = presenter.present() ForwardMessagesView( state = state, - onForwardSuccess = ::onForwardDone, + onForwardSuccess = callback::onDone, ) } } - - private fun onForwardDone(roomIds: List) { - callbacks.forEach { it.onDone(roomIds) } - } } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt index b36c5633dc..47f2da3455 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt @@ -15,7 +15,6 @@ import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.newRoot import com.bumble.appyx.navmodel.backstack.operation.pop @@ -29,6 +28,7 @@ import io.element.android.features.securebackup.api.SecureBackupEntryPoint import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.designsystem.utils.OpenUrlInTabView import io.element.android.libraries.di.SessionScope @@ -69,6 +69,8 @@ class FtueSessionVerificationFlowNode( fun onDone() } + private val callback: Callback = callback() + private val secureBackupEntryPointCallback = object : SecureBackupEntryPoint.Callback { override fun onDone() { lifecycleScope.launch { @@ -102,13 +104,15 @@ class FtueSessionVerificationFlowNode( } is NavTarget.UseAnotherDevice -> { outgoingVerificationEntryPoint.nodeBuilder(this, buildContext) - .params(OutgoingVerificationEntryPoint.Params( - showDeviceVerifiedScreen = true, - verificationRequest = VerificationRequest.Outgoing.CurrentSession, - )) + .params( + OutgoingVerificationEntryPoint.Params( + showDeviceVerifiedScreen = true, + verificationRequest = VerificationRequest.Outgoing.CurrentSession, + ) + ) .callback(object : OutgoingVerificationEntryPoint.Callback { override fun onDone() { - plugins().forEach { it.onDone() } + callback.onDone() } override fun onBack() { @@ -133,7 +137,7 @@ class FtueSessionVerificationFlowNode( .params(SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity)) .callback(object : SecureBackupEntryPoint.Callback { override fun onDone() { - plugins().forEach { it.onDone() } + callback.onDone() } }) .build() diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt index d5a0f91ed7..ac2aa09b22 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeNode.kt @@ -12,12 +12,12 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.logout.api.direct.DirectLogoutView import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -35,7 +35,7 @@ class ChooseSelfVerificationModeNode( fun navigateToLearnMoreAboutEncryption() } - private val callback = plugins().first() + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { 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 7245db296e..eb3a8bd880 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 @@ -21,7 +21,6 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node 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 @@ -44,6 +43,7 @@ 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.architecture.callback import io.element.android.libraries.deeplink.api.usecase.InviteFriendsUseCase import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.MatrixClient @@ -78,6 +78,7 @@ class HomeFlowNode( buildContext = buildContext, plugins = plugins ) { + private val callback: HomeEntryPoint.Callback = callback() private val stateFlow = launchMolecule { presenter.present() } override fun onBuilt() { @@ -115,35 +116,11 @@ class HomeFlowNode( data class SelectNewOwnersWhenLeavingRoom(val roomId: RoomId) : NavTarget } - private fun onRoomClick(roomId: RoomId) { - plugins().forEach { it.navigateToRoom(roomId) } - } - - private fun onOpenSettings() { - plugins().forEach { it.navigateToSettings() } - } - - private fun onStartChatClick() { - plugins().forEach { it.navigateToCreateRoom() } - } - - private fun onSetUpRecoveryClick() { - plugins().forEach { it.navigateToSetUpRecovery() } - } - - private fun onSessionConfirmRecoveryKeyClick() { - plugins().forEach { it.navigateToEnterRecoveryKey() } - } - - private fun onRoomSettingsClick(roomId: RoomId) { - plugins().forEach { it.navigateToRoomSettings(roomId) } - } - - private fun onReportRoomClick(roomId: RoomId) { + private fun navigateToReportRoom(roomId: RoomId) { backstack.push(NavTarget.ReportRoom(roomId)) } - private fun onDeclineInviteAndBlockUserClick(roomSummary: RoomListRoomSummary) { + private fun navigateToDeclineInviteAndBlockUser(roomSummary: RoomListRoomSummary) { backstack.push(NavTarget.DeclineInviteAndBlockUser(roomSummary.toInviteData())) } @@ -153,12 +130,12 @@ class HomeFlowNode( inviteFriendsUseCase.execute(activity) } RoomListMenuAction.ReportBug -> { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } } } - private fun onSelectNewOwnersWhenLeavingRoom(roomId: RoomId) { + private fun navigateToSelectNewOwnersWhenLeavingRoom(roomId: RoomId) { backstack.push(NavTarget.SelectNewOwnersWhenLeavingRoom(roomId)) } @@ -172,20 +149,20 @@ class HomeFlowNode( val activity = requireNotNull(LocalActivity.current) HomeView( homeState = state, - onRoomClick = this::onRoomClick, - onSettingsClick = this::onOpenSettings, - onStartChatClick = this::onStartChatClick, - onSetUpRecoveryClick = this::onSetUpRecoveryClick, - onConfirmRecoveryKeyClick = this::onSessionConfirmRecoveryKeyClick, - onRoomSettingsClick = this::onRoomSettingsClick, + onRoomClick = callback::navigateToRoom, + onSettingsClick = callback::navigateToSettings, + onStartChatClick = callback::navigateToCreateRoom, + onSetUpRecoveryClick = callback::navigateToSetUpRecovery, + onConfirmRecoveryKeyClick = callback::navigateToEnterRecoveryKey, + onRoomSettingsClick = callback::navigateToRoomSettings, onMenuActionClick = { onMenuActionClick(activity, it) }, - onReportRoomClick = this::onReportRoomClick, - onDeclineInviteAndBlockUser = this::onDeclineInviteAndBlockUserClick, + onReportRoomClick = ::navigateToReportRoom, + onDeclineInviteAndBlockUser = ::navigateToDeclineInviteAndBlockUser, modifier = modifier, acceptDeclineInviteView = { acceptDeclineInviteView.Render( state = state.roomListState.acceptDeclineInviteState, - onAcceptInviteSuccess = this::onRoomClick, + onAcceptInviteSuccess = callback::navigateToRoom, onDeclineInviteSuccess = { }, modifier = Modifier ) @@ -193,7 +170,7 @@ class HomeFlowNode( leaveRoomView = { leaveRoomRenderer.Render( state = state.roomListState.leaveRoomState, - onSelectNewOwners = this::onSelectNewOwnersWhenLeavingRoom, + onSelectNewOwners = ::navigateToSelectNewOwnersWhenLeavingRoom, modifier = Modifier ) } diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt index 56faebe71b..00493a0489 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListNode.kt @@ -12,12 +12,12 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.licenses.impl.model.DependencyLicenseItem +import io.element.android.libraries.architecture.callback @ContributesNode(AppScope::class) @AssistedInject @@ -33,10 +33,7 @@ class DependencyLicensesListNode( fun navigateToLicense(license: DependencyLicenseItem) } - private fun onOpenLicense(license: DependencyLicenseItem) { - plugins() - .forEach { it.navigateToLicense(license) } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -44,7 +41,7 @@ class DependencyLicensesListNode( DependencyLicensesListView( state = state, onBackClick = ::navigateUp, - onOpenLicense = ::onOpenLicense, + onOpenLicense = callback::navigateToLicense, ) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt index 2dcfb0524e..d7a87e4ff4 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsNode.kt @@ -12,10 +12,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -29,9 +29,7 @@ class LockScreenSettingsNode( fun navigateToSetupPin() } - private fun onChangePinClick() { - plugins().forEach { it.navigateToSetupPin() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -39,7 +37,7 @@ class LockScreenSettingsNode( LockScreenSettingsView( state = state, onBackClick = this::navigateUp, - onChangePinClick = this::onChangePinClick, + onChangePinClick = callback::navigateToSetupPin, modifier = modifier, ) } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt index 263cc8ea54..92ffd94a87 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/LockScreenSetupFlowNode.kt @@ -14,7 +14,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.newRoot import dev.zacsweers.metro.Assisted @@ -27,6 +26,7 @@ import io.element.android.features.lockscreen.impl.setup.biometric.SetupBiometri import io.element.android.features.lockscreen.impl.setup.pin.SetupPinNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import kotlinx.parcelize.Parcelize @@ -50,9 +50,7 @@ class LockScreenSetupFlowNode( fun onSetupDone() } - private fun onSetupDone() { - plugins().forEach { it.onSetupDone() } - } + private val callback: Callback = callback() sealed interface NavTarget : Parcelable { @Parcelize @@ -67,7 +65,7 @@ class LockScreenSetupFlowNode( if (biometricAuthenticatorManager.hasAvailableAuthenticator) { backstack.newRoot(NavTarget.Biometric) } else { - onSetupDone() + callback.onSetupDone() } } } @@ -91,7 +89,7 @@ class LockScreenSetupFlowNode( NavTarget.Biometric -> { val callback = object : SetupBiometricNode.Callback { override fun onBiometricSetupDone() { - onSetupDone() + callback.onSetupDone() } } createNode(buildContext, plugins = listOf(callback)) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt index 64da1a321c..9ffd52e4bc 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricNode.kt @@ -13,10 +13,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -30,16 +30,14 @@ class SetupBiometricNode( fun onBiometricSetupDone() } - private fun onSetupDone() { - plugins().forEach { it.onBiometricSetupDone() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() LaunchedEffect(state.isBiometricSetupDone) { if (state.isBiometricSetupDone) { - onSetupDone() + callback.onBiometricSetupDone() } } SetupBiometricView( diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt index fba460f6ee..b1d45c348c 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockNode.kt @@ -13,10 +13,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -30,18 +30,14 @@ class PinUnlockNode( fun onUnlock() } - private fun onUnlock() { - plugins().forEach { - it.onUnlock() - } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() LaunchedEffect(state.isUnlocked) { if (state.isUnlocked) { - onUnlock() + callback.onUnlock() } } PinUnlockView( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt index ce85c617ef..208109d6f9 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/LoginFlowNode.kt @@ -18,7 +18,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.push import com.bumble.appyx.navmodel.backstack.operation.singleTop @@ -41,6 +40,7 @@ import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTa import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.matrix.api.auth.OidcDetails @@ -70,6 +70,7 @@ class LoginFlowNode( val loginHint: String?, ) : NodeInputs + private val callback: LoginEntryPoint.Callback = callback() private var activity: Activity? = null private var darkTheme: Boolean = false @@ -147,7 +148,7 @@ class LoginFlowNode( } override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } override fun navigateToOidc(oidcDetails: OidcDetails) { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt index 80de8c6d71..b63b7cf011 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderNode.kt @@ -13,12 +13,12 @@ import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.util.openLearnMorePage +import io.element.android.libraries.architecture.callback @ContributesNode(AppScope::class) @AssistedInject @@ -32,13 +32,7 @@ class ChangeAccountProviderNode( fun navigateToSearchAccountProvider() } - private fun onDone() { - plugins().forEach { it.onDone() } - } - - private fun onOtherClick() { - plugins().forEach { it.navigateToSearchAccountProvider() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -49,8 +43,8 @@ class ChangeAccountProviderNode( modifier = modifier, onBackClick = ::navigateUp, onLearnMoreClick = { openLearnMorePage(context) }, - onSuccess = ::onDone, - onOtherProviderClick = ::onOtherClick, + onSuccess = callback::onDone, + onOtherProviderClick = callback::navigateToSearchAccountProvider, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt index 02203aaa72..2b65c2a70f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderNode.kt @@ -13,12 +13,12 @@ import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.util.openLearnMorePage +import io.element.android.libraries.architecture.callback import io.element.android.libraries.matrix.api.auth.OidcDetails @ContributesNode(AppScope::class) @@ -34,17 +34,7 @@ class ChooseAccountProviderNode( fun navigateToCreateAccount(url: String) } - private fun onOidcDetails(oidcDetails: OidcDetails) { - plugins().forEach { it.navigateToOidc(oidcDetails) } - } - - private fun onLoginPasswordNeeded() { - plugins().forEach { it.navigateToLoginPassword() } - } - - private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.navigateToCreateAccount(url) } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -54,10 +44,10 @@ class ChooseAccountProviderNode( state = state, modifier = modifier, onBackClick = ::navigateUp, - onOidcDetails = ::onOidcDetails, - onNeedLoginPassword = ::onLoginPasswordNeeded, + onOidcDetails = callback::navigateToOidc, + onNeedLoginPassword = callback::navigateToLoginPassword, onLearnMoreClick = { openLearnMorePage(context) }, - onCreateAccountContinue = ::onCreateAccountContinue, + onCreateAccountContinue = callback::navigateToCreateAccount, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt index 52df30b4fb..e849d0d404 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderNode.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.util.openLearnMorePage import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.matrix.api.auth.OidcDetails @@ -48,21 +48,7 @@ class ConfirmAccountProviderNode( fun navigateToChangeAccountProvider() } - private fun onOidcDetails(data: OidcDetails) { - plugins().forEach { it.navigateToOidc(data) } - } - - private fun onLoginPasswordNeeded() { - plugins().forEach { it.navigateToLoginPassword() } - } - - private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.navigateToCreateAccount(url) } - } - - private fun onChangeAccountProvider() { - plugins().forEach { it.navigateToChangeAccountProvider() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -71,10 +57,10 @@ class ConfirmAccountProviderNode( ConfirmAccountProviderView( state = state, modifier = modifier, - onOidcDetails = ::onOidcDetails, - onNeedLoginPassword = ::onLoginPasswordNeeded, - onCreateAccountContinue = ::onCreateAccountContinue, - onChange = ::onChangeAccountProvider, + onOidcDetails = callback::navigateToOidc, + onNeedLoginPassword = callback::navigateToLoginPassword, + onCreateAccountContinue = callback::navigateToCreateAccount, + onChange = callback::navigateToChangeAccountProvider, onLearnMoreClick = { openLearnMorePage(context) }, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt index d9968af936..f90483778a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingNode.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.util.openLearnMorePage import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.matrix.api.auth.OidcDetails @@ -48,40 +48,13 @@ class OnBoardingNode( val loginHint: String?, ) : NodeInputs + private val callback: Callback = callback() private val params = inputs() private val presenter = presenterFactory.create( params = params, ) - private fun onSignIn(mustChooseAccountProvider: Boolean) { - plugins().forEach { it.navigateToSignInFlow(mustChooseAccountProvider) } - } - - private fun onSignUp() { - plugins().forEach { it.navigateToSignUpFlow() } - } - - private fun onSignInWithQrCode() { - plugins().forEach { it.navigateToQrCode() } - } - - private fun onReportProblem() { - plugins().forEach { it.navigateToBugReport() } - } - - private fun onOidcDetails(data: OidcDetails) { - plugins().forEach { it.navigateToOidc(data) } - } - - private fun onLoginPasswordNeeded() { - plugins().forEach { it.navigateToLoginPassword() } - } - - private fun onCreateAccountContinue(url: String) { - plugins().forEach { it.navigateToCreateAccount(url) } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() @@ -89,14 +62,14 @@ class OnBoardingNode( OnBoardingView( state = state, modifier = modifier, - onSignIn = ::onSignIn, - onCreateAccount = ::onSignUp, - onSignInWithQrCode = ::onSignInWithQrCode, - onReportProblem = ::onReportProblem, - onOidcDetails = ::onOidcDetails, - onNeedLoginPassword = ::onLoginPasswordNeeded, + onSignIn = callback::navigateToSignInFlow, + onCreateAccount = callback::navigateToSignUpFlow, + onSignInWithQrCode = callback::navigateToQrCode, + onReportProblem = callback::navigateToBugReport, + onOidcDetails = callback::navigateToOidc, + onNeedLoginPassword = callback::navigateToLoginPassword, onLearnMoreClick = { openLearnMorePage(context) }, - onCreateAccountContinue = ::onCreateAccountContinue, + onCreateAccountContinue = callback::navigateToCreateAccount, onBackClick = ::navigateUp, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/confirmation/QrCodeConfirmationNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/confirmation/QrCodeConfirmationNode.kt index 8b8d5b2dd5..7a3689dd3c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/confirmation/QrCodeConfirmationNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/confirmation/QrCodeConfirmationNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.di.QrCodeLoginScope +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs @ContributesNode(QrCodeLoginScope::class) @@ -29,17 +29,14 @@ class QrCodeConfirmationNode( fun onCancel() } + private val callback: Callback = callback() private val step = inputs() - private fun onCancel() { - plugins().forEach { it.onCancel() } - } - @Composable override fun View(modifier: Modifier) { QrCodeConfirmationView( step = step, - onCancel = ::onCancel, + onCancel = callback::onCancel, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/error/QrCodeErrorNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/error/QrCodeErrorNode.kt index 7b46c2e45c..294037a1f7 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/error/QrCodeErrorNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/error/QrCodeErrorNode.kt @@ -12,12 +12,12 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.di.QrCodeLoginScope import io.element.android.features.login.impl.qrcode.QrCodeErrorScreenType +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.core.meta.BuildMeta @@ -32,10 +32,7 @@ class QrCodeErrorNode( fun onRetry() } - private fun onRetry() { - plugins().forEach { it.onRetry() } - } - + private val callback: Callback = callback() private val qrCodeErrorScreenType = inputs() @Composable @@ -44,7 +41,7 @@ class QrCodeErrorNode( modifier = modifier, errorScreenType = qrCodeErrorScreenType, appName = buildMeta.productionApplicationName, - onRetry = ::onRetry, + onRetry = callback::onRetry, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt index 951550fc22..719df8f423 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.di.QrCodeLoginScope +import io.element.android.libraries.architecture.callback @ContributesNode(QrCodeLoginScope::class) @AssistedInject @@ -30,21 +30,15 @@ class QrCodeIntroNode( fun navigateToQrCodeScan() } - private fun onCancelClicked() { - plugins().forEach { it.cancel() } - } - - private fun onContinue() { - plugins().forEach { it.navigateToQrCodeScan() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() QrCodeIntroView( state = state, - onBackClick = ::onCancelClicked, - onContinue = ::onContinue, + onBackClick = callback::cancel, + onContinue = callback::navigateToQrCodeScan, modifier = modifier ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt index 554639c72a..44eab816c1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.di.QrCodeLoginScope +import io.element.android.libraries.architecture.callback import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginData @ContributesNode(QrCodeLoginScope::class) @@ -31,21 +31,15 @@ class QrCodeScanNode( fun cancel() } - private fun onQrCodeDataReady(qrCodeLoginData: MatrixQrCodeLoginData) { - plugins().forEach { it.handleScannedCode(qrCodeLoginData) } - } - - private fun onCancelClicked() { - plugins().forEach { it.cancel() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() QrCodeScanView( state = state, - onQrCodeDataReady = ::onQrCodeDataReady, - onBackClick = ::onCancelClicked, + onQrCodeDataReady = callback::handleScannedCode, + onBackClick = callback::cancel, modifier = modifier ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt index dc6084032e..5def2bc830 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderNode.kt @@ -13,12 +13,12 @@ import androidx.compose.ui.platform.LocalContext import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.login.impl.util.openLearnMorePage +import io.element.android.libraries.architecture.callback @ContributesNode(AppScope::class) @AssistedInject @@ -31,9 +31,7 @@ class SearchAccountProviderNode( fun onDone() } - private fun onDone() { - plugins().forEach { it.onDone() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -44,7 +42,7 @@ class SearchAccountProviderNode( modifier = modifier, onBackClick = ::navigateUp, onLearnMoreClick = { openLearnMorePage(context) }, - onSuccess = ::onDone, + onSuccess = callback::onDone, ) } } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt index 3860850fcf..7cf717df68 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.logout.api.LogoutEntryPoint +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -26,16 +26,14 @@ class LogoutNode( @Assisted plugins: List, private val presenter: LogoutPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onChangeRecoveryKeyClick() { - plugins().forEach { it.navigateToSecureBackup() } - } + private val callback: LogoutEntryPoint.Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() LogoutView( state = state, - onChangeRecoveryKeyClick = ::onChangeRecoveryKeyClick, + onChangeRecoveryKeyClick = callback::navigateToSecureBackup, onBackClick = ::navigateUp, modifier = modifier, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index c9fe66191b..a65595788a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -16,7 +16,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -55,6 +54,7 @@ import io.element.android.features.poll.api.create.CreatePollEntryPoint import io.element.android.features.poll.api.create.CreatePollMode import io.element.android.libraries.architecture.BackstackWithOverlayBox import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.overlay.Overlay import io.element.android.libraries.architecture.overlay.operation.hide @@ -182,7 +182,7 @@ class MessagesFlowNode( data class Thread(val threadRootId: ThreadId, val focusedEventId: EventId?) : NavTarget } - private val callbacks = plugins() + private val callback: MessagesEntryPoint.Callback = callback() override fun onBuilt() { super.onBuilt() @@ -221,7 +221,7 @@ class MessagesFlowNode( is NavTarget.Messages -> { val callback = object : MessagesNode.Callback { override fun navigateToRoomDetails() { - callbacks.forEach { it.navigateToRoomDetails() } + callback.navigateToRoomDetails() } override fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { @@ -242,11 +242,11 @@ class MessagesFlowNode( } override fun navigateToRoomMemberDetails(userId: UserId) { - callbacks.forEach { it.navigateToRoomMemberDetails(userId) } + callback.navigateToRoomMemberDetails(userId) } override fun handlePermalinkClick(data: PermalinkData) { - callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = true) } + callback.handlePermalinkClick(data, pushToBackstack = true) } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { @@ -317,7 +317,7 @@ class MessagesFlowNode( override fun forwardEvent(eventId: EventId) { // Need to go to the parent because of the overlay - callbacks.forEach { it.forwardEvent(eventId) } + callback.forwardEvent(eventId) } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) @@ -352,7 +352,7 @@ class MessagesFlowNode( override fun onDone(roomIds: List) { backstack.pop() roomIds.singleOrNull()?.let { roomId -> - callbacks.forEach { it.navigateToRoom(roomId) } + callback.navigateToRoom(roomId) } } } @@ -400,7 +400,7 @@ class MessagesFlowNode( } override fun navigateToRoomMemberDetails(userId: UserId) { - callbacks.forEach { it.navigateToRoomMemberDetails(userId) } + callback.navigateToRoomMemberDetails(userId) } override fun viewInTimeline(eventId: EventId) { @@ -408,7 +408,7 @@ class MessagesFlowNode( } override fun handlePermalinkClick(data: PermalinkData.RoomLink) { - callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = !room.matches(data.roomIdOrAlias)) } + callback.handlePermalinkClick(data, pushToBackstack = !room.matches(data.roomIdOrAlias)) } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { @@ -448,11 +448,11 @@ class MessagesFlowNode( } override fun navigateToRoomMemberDetails(userId: UserId) { - callbacks.forEach { it.navigateToRoomMemberDetails(userId) } + callback.navigateToRoomMemberDetails(userId) } override fun handlePermalinkClick(data: PermalinkData) { - callbacks.forEach { it.handlePermalinkClick(data, pushToBackstack = true) } + callback.handlePermalinkClick(data, pushToBackstack = true) } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { @@ -502,7 +502,7 @@ class MessagesFlowNode( roomIdOrAlias = room.roomId.toRoomIdOrAlias(), eventId = eventId, ) - callbacks.forEach { it.handlePermalinkClick(permalinkData, pushToBackstack = false) } + callback.handlePermalinkClick(permalinkData, pushToBackstack = false) } private fun processEventClick( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index bb2870b6af..9647ffca17 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -24,7 +24,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -48,8 +47,8 @@ import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTa import io.element.android.libraries.androidutils.system.openUrlInExternalApp import io.element.android.libraries.androidutils.system.toast import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs -import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.annotations.ApplicationContext @@ -93,13 +92,12 @@ class MessagesNode( private val knockRequestsBannerRenderer: KnockRequestsBannerRenderer, private val roomMemberModerationRenderer: RoomMemberModerationRenderer, ) : Node(buildContext, plugins = plugins), MessagesNavigator { - private val callbacks = plugins() - data class Inputs( val focusedEventId: EventId?, ) : NodeInputs private val inputs = inputs() + private val callback: Callback = callback() private val timelineController = TimelineController(room, room.liveTimeline) private val presenter = presenterFactory.create( @@ -143,32 +141,6 @@ class MessagesNode( ) } - private fun navigateToRoomDetails() { - callbacks.forEach { it.navigateToRoomDetails() } - } - - private fun navigateToPinnedMessagesList() { - callbacks.forEach { it.navigateToPinnedMessagesList() } - } - - private fun navigateToKnockRequestsList() { - callbacks.forEach { it.navigateToKnockRequestsList() } - } - - private fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { - // Note: cannot use `callbacks.all { it.onEventClick(event) }` because: - // - if callbacks is empty, it will return true and we want to return false. - // - if a callback returns false, the other callback will not be invoked. - return callbacks.takeIf { it.isNotEmpty() } - ?.map { it.handleEventClick(timelineMode, event) } - ?.all { it } - .orFalse() - } - - private fun navigateToRoomMemberDetails(userId: UserId) { - callbacks.forEach { it.navigateToRoomMemberDetails(userId) } - } - private fun onLinkClick( activity: Activity, darkTheme: Boolean, @@ -180,7 +152,7 @@ class MessagesNode( is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } + callback.navigateToRoomMemberDetails(permalink.userId) } is PermalinkData.RoomLink -> { handleRoomLinkClick(permalink, eventSink) @@ -211,28 +183,28 @@ class MessagesNode( displaySameRoomToast() } } else { - callbacks.forEach { it.handlePermalinkClick(roomLink) } + callback.handlePermalinkClick(roomLink) } } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } + callback.navigateToEventDebugInfo(eventId, debugInfo) } override fun forwardEvent(eventId: EventId) { - callbacks.forEach { it.forwardEvent(eventId) } + callback.forwardEvent(eventId) } override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { - callbacks.forEach { it.navigateToReportMessage(eventId, senderId) } + callback.navigateToReportMessage(eventId, senderId) } override fun navigateToEditPoll(eventId: EventId) { - callbacks.forEach { it.navigateToEditPoll(eventId) } + callback.navigateToEditPoll(eventId) } override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { - callbacks.forEach { it.navigateToPreviewAttachments(attachments, inReplyToEventId) } + callback.navigateToPreviewAttachments(attachments, inReplyToEventId) } override fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { @@ -240,24 +212,12 @@ class MessagesNode( displaySameRoomToast() } else { val permalinkData = PermalinkData.RoomLink(roomId.toRoomIdOrAlias(), eventId, viaParameters = serverNames.toImmutableList()) - callbacks.forEach { it.handlePermalinkClick(permalinkData) } + callback.handlePermalinkClick(permalinkData) } } override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { - callbacks.forEach { it.navigateToThread(threadRootId, focusedEventId) } - } - - private fun navigateToSendLocation() { - callbacks.forEach { it.navigateToSendLocation() } - } - - private fun navigateToCreatePoll() { - callbacks.forEach { it.navigateToCreatePoll() } - } - - private fun navigateToRoomCall() { - callbacks.forEach { it.navigateToRoomCall(room.roomId) } + callback.navigateToThread(threadRootId, focusedEventId) } private fun displaySameRoomToast() { @@ -288,20 +248,20 @@ class MessagesNode( MessagesView( state = state, onBackClick = { state.eventSink(MessagesEvents.MarkAsFullyReadAndExit) }, - onRoomDetailsClick = ::navigateToRoomDetails, + onRoomDetailsClick = callback::navigateToRoomDetails, onEventContentClick = { isLive, event -> if (isLive) { - onEventClick(timelineController.mainTimelineMode(), event) + callback.handleEventClick(timelineController.mainTimelineMode(), event) } else { val detachedTimelineMode = timelineController.detachedTimelineMode() if (detachedTimelineMode != null) { - onEventClick(detachedTimelineMode, event) + callback.handleEventClick(detachedTimelineMode, event) } else { false } } }, - onUserDataClick = ::navigateToRoomMemberDetails, + onUserDataClick = callback::navigateToRoomMemberDetails, onLinkClick = { url, customTab -> onLinkClick( activity = activity, @@ -311,15 +271,15 @@ class MessagesNode( customTab = customTab, ) }, - onSendLocationClick = ::navigateToSendLocation, - onCreatePollClick = ::navigateToCreatePoll, - onJoinCallClick = ::navigateToRoomCall, - onViewAllPinnedMessagesClick = ::navigateToPinnedMessagesList, + onSendLocationClick = callback::navigateToSendLocation, + onCreatePollClick = callback::navigateToCreatePoll, + onJoinCallClick = { callback.navigateToRoomCall(room.roomId) }, + onViewAllPinnedMessagesClick = callback::navigateToPinnedMessagesList, modifier = modifier, knockRequestsBannerView = { knockRequestsBannerRenderer.View( modifier = Modifier, - onViewRequestsClick = ::navigateToKnockRequestsList, + onViewRequestsClick = callback::navigateToKnockRequestsList, ) }, ) @@ -327,7 +287,7 @@ class MessagesNode( state = state.roomMemberModerationState, onSelectAction = { action, target -> when (action) { - is ModerationAction.DisplayProfile -> navigateToRoomMemberDetails(target.userId) + is ModerationAction.DisplayProfile -> callback.navigateToRoomMemberDetails(target.userId) else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvents.ProcessAction(action, target)) } }, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt index 6d1c7b6027..130d9fe678 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt @@ -17,7 +17,6 @@ import androidx.compose.ui.platform.LocalView import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -27,6 +26,7 @@ import io.element.android.features.messages.impl.timeline.di.TimelineItemPresent import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.androidutils.system.copyToClipboard import io.element.android.libraries.androidutils.system.openUrlInExternalApp +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.UserId @@ -34,7 +34,6 @@ import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.permalink.PermalinkParser import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.ui.strings.CommonStrings @ContributesNode(RoomScope::class) @@ -56,6 +55,7 @@ class PinnedMessagesListNode( fun handleForwardEventClick(eventId: EventId) } + private val callback: Callback = callback() private val presenter = presenterFactory.create( navigator = this, actionListPresenter = actionListPresenterFactory.create( @@ -63,25 +63,16 @@ class PinnedMessagesListNode( timelineMode = Timeline.Mode.PinnedEvents, ) ) - private val callbacks = plugins() - - private fun handleEventClick(event: TimelineItem.Event) { - return callbacks.forEach { it.handleEventClick(event) } - } - - private fun navigateToRoomMemberDetails(user: MatrixUser) { - callbacks.forEach { it.navigateToRoomMemberDetails(user.userId) } - } private fun onLinkClick(context: Context, url: String) { when (val permalink = permalinkParser.parse(url)) { is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } + callback.navigateToRoomMemberDetails(permalink.userId) } is PermalinkData.RoomLink -> { - callbacks.forEach { it.handlePermalinkClick(permalink) } + callback.handlePermalinkClick(permalink) } is PermalinkData.FallbackLink, is PermalinkData.RoomEmailInviteLink -> { @@ -91,15 +82,15 @@ class PinnedMessagesListNode( } override fun viewInTimeline(eventId: EventId) { - callbacks.forEach { it.viewInTimeline(eventId) } + callback.viewInTimeline(eventId) } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } + callback.navigateToEventDebugInfo(eventId, debugInfo) } override fun forwardEvent(eventId: EventId) { - callbacks.forEach { it.handleForwardEventClick(eventId) } + callback.handleForwardEventClick(eventId) } @Composable @@ -113,8 +104,8 @@ class PinnedMessagesListNode( PinnedMessagesListView( state = state, onBackClick = ::navigateUp, - onEventClick = ::handleEventClick, - onUserDataClick = ::navigateToRoomMemberDetails, + onEventClick = callback::handleEventClick, + onUserDataClick = { callback.navigateToRoomMemberDetails(it.userId) }, onLinkClick = { link -> onLinkClick(context, link.url) }, onLinkLongClick = { view.performHapticFeedback( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt index 62138e99e0..5ce1b76956 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt @@ -22,7 +22,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -44,8 +43,8 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab import io.element.android.libraries.androidutils.system.openUrlInExternalApp import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs -import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.utils.OnLifecycleEvent import io.element.android.libraries.di.RoomScope import io.element.android.libraries.di.annotations.SessionCoroutineScope @@ -88,14 +87,13 @@ class ThreadedMessagesNode( private val permalinkParser: PermalinkParser, private val appNavigationStateService: AppNavigationStateService, ) : Node(buildContext, plugins = plugins), MessagesNavigator { - private val callbacks = plugins() - data class Inputs( val threadRootEventId: ThreadId, val focusedEventId: EventId?, ) : NodeInputs private val inputs = inputs() + private val callback: Callback = callback() // TODO use a loading state node to preload this instead of using `runBlocking` private val threadedTimeline = runBlocking { room.createTimeline(CreateTimelineParams.Threaded(threadRootEventId = inputs.threadRootEventId)).getOrThrow() } @@ -145,20 +143,6 @@ class ThreadedMessagesNode( ) } - private fun onEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event): Boolean { - // Note: cannot use `callbacks.all { it.onEventClick(event) }` because: - // - if callbacks is empty, it will return true and we want to return false. - // - if a callback returns false, the other callback will not be invoked. - return callbacks.takeIf { it.isNotEmpty() } - ?.map { it.handleEventClick(timelineMode, event) } - ?.all { it } - .orFalse() - } - - private fun navigateToRoomMemberDetails(userId: UserId) { - callbacks.forEach { it.navigateToRoomMemberDetails(userId) } - } - private fun onLinkClick( activity: Activity, darkTheme: Boolean, @@ -170,7 +154,7 @@ class ThreadedMessagesNode( is PermalinkData.UserLink -> { // Open the room member profile, it will fallback to // the user profile if the user is not in the room - callbacks.forEach { it.navigateToRoomMemberDetails(permalink.userId) } + callback.navigateToRoomMemberDetails(permalink.userId) } is PermalinkData.RoomLink -> { handleRoomLinkClick(permalink, eventSink) @@ -204,53 +188,41 @@ class ThreadedMessagesNode( navigateUp() } } else { - callbacks.forEach { it.handlePermalinkClick(roomLink) } + callback.handlePermalinkClick(roomLink) } } override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { - callbacks.forEach { it.navigateToEventDebugInfo(eventId, debugInfo) } + callback.navigateToEventDebugInfo(eventId, debugInfo) } override fun forwardEvent(eventId: EventId) { - callbacks.forEach { it.handleForwardEventClick(eventId) } + callback.handleForwardEventClick(eventId) } override fun navigateToReportMessage(eventId: EventId, senderId: UserId) { - callbacks.forEach { it.navigateToReportMessage(eventId, senderId) } + callback.navigateToReportMessage(eventId, senderId) } override fun navigateToEditPoll(eventId: EventId) { - callbacks.forEach { it.navigateToEditPoll(eventId) } + callback.navigateToEditPoll(eventId) } override fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) { - callbacks.forEach { it.navigateToPreviewAttachments(attachments, inReplyToEventId) } + callback.navigateToPreviewAttachments(attachments, inReplyToEventId) } override fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) { val permalinkData = PermalinkData.RoomLink(roomId.toRoomIdOrAlias(), eventId, viaParameters = serverNames.toImmutableList()) - callbacks.forEach { it.handlePermalinkClick(permalinkData) } + callback.handlePermalinkClick(permalinkData) } override fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) { - callbacks.forEach { it.navigateToThread(threadRootId, focusedEventId) } + callback.navigateToThread(threadRootId, focusedEventId) } override fun onNavigateUp() = navigateUp() - private fun navigateToSendLocation() { - callbacks.forEach { it.navigateToSendLocation() } - } - - private fun navigateToCreatePoll() { - callbacks.forEach { it.navigateToCreatePoll() } - } - - private fun navigateToRoomCall() { - callbacks.forEach { it.navigateToRoomCall(room.roomId) } - } - @Composable override fun View(modifier: Modifier) { val activity = requireNotNull(LocalActivity.current) @@ -271,17 +243,17 @@ class ThreadedMessagesNode( onRoomDetailsClick = {}, onEventContentClick = { isLive, event -> if (isLive) { - onEventClick(timelineController.mainTimelineMode(), event) + callback.handleEventClick(timelineController.mainTimelineMode(), event) } else { val detachedTimelineMode = timelineController.detachedTimelineMode() if (detachedTimelineMode != null) { - onEventClick(detachedTimelineMode, event) + callback.handleEventClick(detachedTimelineMode, event) } else { false } } }, - onUserDataClick = this::navigateToRoomMemberDetails, + onUserDataClick = callback::navigateToRoomMemberDetails, onLinkClick = { url, customTab -> onLinkClick( activity = activity, @@ -291,9 +263,9 @@ class ThreadedMessagesNode( customTab = customTab, ) }, - onSendLocationClick = this::navigateToSendLocation, - onCreatePollClick = this::navigateToCreatePoll, - onJoinCallClick = this::navigateToRoomCall, + onSendLocationClick = callback::navigateToSendLocation, + onCreatePollClick = callback::navigateToCreatePoll, + onJoinCallClick = { callback.navigateToRoomCall(room.roomId) }, onViewAllPinnedMessagesClick = {}, modifier = modifier, knockRequestsBannerView = {}, diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt index 3ebabe5a2f..714e7763e6 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryNode.kt @@ -12,10 +12,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId @@ -33,16 +33,14 @@ class PollHistoryNode( fun navigateToEditPoll(pollStartEventId: EventId) } - private fun onEditPoll(pollStartEventId: EventId) { - plugins().forEach { it.navigateToEditPoll(pollStartEventId) } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { PollHistoryView( state = presenter.present(), modifier = modifier, - onEditPoll = ::onEditPoll, + onEditPoll = callback::navigateToEditPoll, goBack = this::navigateUp, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index 4903f9d2cf..8f3bc6eb5c 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -38,6 +37,7 @@ import io.element.android.features.preferences.impl.user.editprofile.EditUserPro import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.appyx.canPop +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.EventId @@ -116,20 +116,22 @@ class PreferencesFlowNode( data object OssLicenses : NavTarget } + private val callback: PreferencesEntryPoint.Callback = callback() + override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Root -> { val callback = object : PreferencesRootNode.Callback { override fun navigateToAddAccount() { - plugins().forEach { it.navigateToAddAccount() } + callback.navigateToAddAccount() } override fun navigateToBugReport() { - plugins().forEach { it.navigateToBugReport() } + callback.navigateToBugReport() } override fun navigateToSecureBackup() { - plugins().forEach { it.navigateToSecureBackup() } + callback.navigateToSecureBackup() } override fun navigateToAnalyticsSettings() { @@ -241,7 +243,7 @@ class PreferencesFlowNode( } override fun navigateToEvent(roomId: RoomId, eventId: EventId) { - plugins().forEach { it.navigateToEvent(roomId, eventId) } + callback.navigateToEvent(roomId, eventId) } }) .build() @@ -249,7 +251,7 @@ class PreferencesFlowNode( is NavTarget.EditDefaultNotificationSetting -> { val callback = object : EditDefaultNotificationSettingNode.Callback { override fun navigateToRoomNotificationSettings(roomId: RoomId) { - plugins().forEach { it.navigateToRoomNotificationSettings(roomId) } + callback.navigateToRoomNotificationSettings(roomId) } } val input = EditDefaultNotificationSettingNode.Inputs(navTarget.isOneToOne) @@ -271,7 +273,7 @@ class PreferencesFlowNode( NavTarget.SignOut -> { val callBack: LogoutEntryPoint.Callback = object : LogoutEntryPoint.Callback { override fun navigateToSecureBackup() { - plugins().forEach { it.navigateToSecureBackup() } + callback.navigateToSecureBackup() } } logoutEntryPoint.nodeBuilder(this, buildContext) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt index 564189442c..a4e67f0ef3 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/about/AboutNode.kt @@ -19,6 +19,7 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -32,6 +33,8 @@ class AboutNode( fun navigateToOssLicenses() } + private val callback: Callback = callback() + private fun onElementLegalClick( activity: Activity, darkTheme: Boolean, @@ -51,9 +54,7 @@ class AboutNode( onElementLegalClick = { elementLegal -> onElementLegalClick(activity, isDark, elementLegal) }, - onOpenSourceLicensesClick = { - plugins.filterIsInstance().forEach { it.navigateToOssLicenses() } - }, + onOpenSourceLicensesClick = callback::navigateToOssLicenses, modifier = modifier ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt index 6f18fd44dc..385e99c3e3 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsNode.kt @@ -14,10 +14,10 @@ import com.airbnb.android.showkase.models.Showkase import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.designsystem.showkase.getBrowserIntent import io.element.android.libraries.di.SessionScope @@ -32,11 +32,7 @@ class DeveloperSettingsNode( fun navigateToPushHistory() } - private val callbacks = plugins() - - private fun navigateToPushHistory() { - callbacks.forEach { it.navigateToPushHistory() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -51,7 +47,7 @@ class DeveloperSettingsNode( state = state, modifier = modifier, onOpenShowkase = ::openShowkase, - onPushHistoryClick = ::navigateToPushHistory, + onPushHistoryClick = callback::navigateToPushHistory, onBackClick = ::navigateUp ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt index 2b2879a4da..b2338c7cc2 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsNode.kt @@ -12,10 +12,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -30,24 +30,16 @@ class NotificationSettingsNode( fun navigateToTroubleshootNotifications() } - private val callbacks = plugins() - - private fun navigateToEditDefaultNotificationSetting(isOneToOne: Boolean) { - callbacks.forEach { it.navigateToEditDefaultNotificationSetting(isOneToOne) } - } - - private fun navigateToTroubleshootNotifications() { - callbacks.forEach { it.navigateToTroubleshootNotifications() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() NotificationSettingsView( state = state, - onOpenEditDefault = ::navigateToEditDefaultNotificationSetting, + onOpenEditDefault = callback::navigateToEditDefaultNotificationSetting, onBackClick = ::navigateUp, - onTroubleshootNotificationsClick = ::navigateToTroubleshootNotifications, + onTroubleshootNotificationsClick = callback::navigateToTroubleshootNotifications, modifier = modifier, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt index e697089ad1..823b3657e0 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @@ -36,20 +36,16 @@ class EditDefaultNotificationSettingNode( val isOneToOne: Boolean ) : NodeInputs + private val callback: Callback = callback() private val inputs = inputs() - private val callbacks = plugins() private val presenter = presenterFactory.create(inputs.isOneToOne) - private fun navigateToRoomNotificationSettings(roomId: RoomId) { - callbacks.forEach { it.navigateToRoomNotificationSettings(roomId) } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() EditDefaultNotificationSettingView( state = state, - openRoomNotificationSettings = { navigateToRoomNotificationSettings(it) }, + openRoomNotificationSettings = callback::navigateToRoomNotificationSettings, onBackClick = ::navigateUp, modifier = modifier, ) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt index ba6edb97e0..4d3f482e7e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/root/PreferencesRootNode.kt @@ -14,7 +14,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -22,6 +21,7 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.features.logout.api.direct.DirectLogoutEvents import io.element.android.features.logout.api.direct.DirectLogoutView import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.user.MatrixUser @@ -50,37 +50,7 @@ class PreferencesRootNode( fun startAccountDeactivationFlow() } - private fun onAddAccount() { - plugins().forEach { it.navigateToAddAccount() } - } - - private fun onOpenBugReport() { - plugins().forEach { it.navigateToBugReport() } - } - - private fun onSecureBackupClick() { - plugins().forEach { it.navigateToSecureBackup() } - } - - private fun onOpenDeveloperSettings() { - plugins().forEach { it.navigateToDeveloperSettings() } - } - - private fun onOpenAdvancedSettings() { - plugins().forEach { it.navigateToAdvancedSettings() } - } - - private fun onOpenLabs() { - plugins().forEach { it.navigateToLabs() } - } - - private fun onOpenAnalytics() { - plugins().forEach { it.navigateToAnalyticsSettings() } - } - - private fun onOpenAbout() { - plugins().forEach { it.navigateToAbout() } - } + private val callback: Callback = callback() private fun onManageAccountClick( activity: Activity, @@ -96,30 +66,6 @@ class PreferencesRootNode( } } - private fun onOpenNotificationSettings() { - plugins().forEach { it.navigateToNotificationSettings() } - } - - private fun onOpenLockScreenSettings() { - plugins().forEach { it.navigateToLockScreenSettings() } - } - - private fun onOpenUserProfile(matrixUser: MatrixUser) { - plugins().forEach { it.navigateToUserProfile(matrixUser) } - } - - private fun onOpenBlockedUsers() { - plugins().forEach { it.navigateToBlockedUsers() } - } - - private fun onSignOutClick() { - plugins().forEach { it.startSignOutFlow() } - } - - private fun onOpenAccountDeactivation() { - plugins().forEach { it.startAccountDeactivationFlow() } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() @@ -129,27 +75,27 @@ class PreferencesRootNode( state = state, modifier = modifier, onBackClick = this::navigateUp, - onAddAccountClick = this::onAddAccount, - onOpenRageShake = this::onOpenBugReport, - onOpenAnalytics = this::onOpenAnalytics, - onOpenAbout = this::onOpenAbout, - onSecureBackupClick = this::onSecureBackupClick, - onOpenDeveloperSettings = this::onOpenDeveloperSettings, - onOpenAdvancedSettings = this::onOpenAdvancedSettings, - onOpenLabs = this::onOpenLabs, + onAddAccountClick = callback::navigateToAddAccount, + onOpenRageShake = callback::navigateToBugReport, + onOpenAnalytics = callback::navigateToAnalyticsSettings, + onOpenAbout = callback::navigateToAbout, + onSecureBackupClick = callback::navigateToSecureBackup, + onOpenDeveloperSettings = callback::navigateToDeveloperSettings, + onOpenAdvancedSettings = callback::navigateToAdvancedSettings, + onOpenLabs = callback::navigateToLabs, onManageAccountClick = { onManageAccountClick(activity, it, isDark) }, - onOpenNotificationSettings = this::onOpenNotificationSettings, - onOpenLockScreenSettings = this::onOpenLockScreenSettings, - onOpenUserProfile = this::onOpenUserProfile, - onOpenBlockedUsers = this::onOpenBlockedUsers, + onOpenNotificationSettings = callback::navigateToNotificationSettings, + onOpenLockScreenSettings = callback::navigateToLockScreenSettings, + onOpenUserProfile = callback::navigateToUserProfile, + onOpenBlockedUsers = callback::navigateToBlockedUsers, onSignOutClick = { if (state.directLogoutState.canDoDirectSignOut) { state.directLogoutState.eventSink(DirectLogoutEvents.Logout(ignoreSdkError = false)) } else { - onSignOutClick() + callback.startSignOutFlow() } }, - onDeactivateClick = this::onOpenAccountDeactivation + onDeactivateClick = callback::startAccountDeactivationFlow ) directLogoutView.Render(state = state.directLogoutState) diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt index 4e1f599237..2893fa4d09 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -25,6 +24,7 @@ import io.element.android.features.rageshake.api.bugreport.BugReportEntryPoint import io.element.android.features.viewfolder.api.ViewFolderEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import kotlinx.parcelize.Parcelize @@ -42,9 +42,7 @@ class BugReportFlowNode( buildContext = buildContext, plugins = plugins ) { - private fun onDone() { - plugins().forEach { it.onDone() } - } + private val callback: BugReportEntryPoint.Callback = callback() sealed interface NavTarget : Parcelable { @Parcelize @@ -61,7 +59,7 @@ class BugReportFlowNode( NavTarget.Root -> { val callback = object : BugReportNode.Callback { override fun onDone() { - this@BugReportFlowNode.onDone() + callback.onDone() } override fun navigateToViewLogs(basePath: String) { diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt index 1d3974d166..b270f0cf3b 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportNode.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.rageshake.api.reporter.BugReporter import io.element.android.libraries.androidutils.system.toast +import io.element.android.libraries.architecture.callback import io.element.android.libraries.ui.strings.CommonStrings @ContributesNode(AppScope::class) @@ -35,13 +35,7 @@ class BugReportNode( fun navigateToViewLogs(basePath: String) } - private fun onViewLogs(basePath: String) { - plugins().forEach { it.navigateToViewLogs(basePath) } - } - - private fun onDone() { - plugins().forEach { it.onDone() } - } + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { @@ -53,12 +47,12 @@ class BugReportNode( onBackClick = { navigateUp() }, onSuccess = { activity?.toast(CommonStrings.common_report_submitted) - onDone() + callback.onDone() }, onViewLogs = { // Force a logcat dump bugReporter.saveLogCat() - onViewLogs(bugReporter.logDirectory().absolutePath) + callback.navigateToViewLogs(bugReporter.logDirectory().absolutePath) } ) } diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverNode.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverNode.kt index d7b3242def..656017b484 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverNode.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverNode.kt @@ -12,14 +12,13 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.roomaliasesolver.api.RoomAliasResolverEntryPoint +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias @ContributesNode(SessionScope::class) @AssistedInject @@ -28,22 +27,19 @@ class RoomAliasResolverNode( @Assisted plugins: List, presenterFactory: RoomAliasResolverPresenter.Factory, ) : Node(buildContext, plugins = plugins) { + private val callback: RoomAliasResolverEntryPoint.Callback = callback() private val inputs = inputs() private val presenter = presenterFactory.create( inputs.roomAlias ) - private fun onAliasResolved(data: ResolvedRoomAlias) { - plugins().forEach { it.onAliasResolved(data) } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() RoomAliasResolverView( state = state, - onSuccess = ::onAliasResolved, + onSuccess = callback::onAliasResolved, onBackClick = ::navigateUp, modifier = modifier ) 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 895fd9dd59..8ca5745ad1 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 @@ -16,7 +16,6 @@ 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.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 @@ -45,6 +44,7 @@ import io.element.android.features.userprofile.shared.UserProfileNodeHelper import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint import io.element.android.libraries.architecture.BackstackWithOverlayBox import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.overlay.operation.hide import io.element.android.libraries.architecture.overlay.operation.show @@ -146,6 +146,8 @@ class RoomDetailsFlowNode( data object SelectNewOwnersWhenLeaving : NavTarget } + private val callback: RoomDetailsEntryPoint.Callback = callback() + override fun onBuilt() { super.onBuilt() whenChildrenAttached { @@ -260,7 +262,7 @@ class RoomDetailsFlowNode( val input = RoomNotificationSettingsNode.RoomNotificationSettingInput(navTarget.showUserDefinedSettingStyle) val callback = object : RoomNotificationSettingsNode.Callback { override fun navigateToGlobalNotificationSettings() { - plugins().forEach { it.navigateToGlobalNotificationSettings() } + callback.navigateToGlobalNotificationSettings() } } createNode(buildContext, listOf(input, callback)) @@ -273,7 +275,7 @@ class RoomDetailsFlowNode( } override fun navigateToRoom(roomId: RoomId) { - plugins().forEach { it.navigateToRoom(roomId, emptyList()) } + callback.navigateToRoom(roomId, emptyList()) } override fun startCall(dmRoomId: RoomId) { @@ -323,13 +325,11 @@ class RoomDetailsFlowNode( roomIdOrAlias = room.roomId.toRoomIdOrAlias(), eventId = eventId, ) - plugins().forEach { - it.handlePermalinkClick(permalinkData, pushToBackstack = false) - } + callback.handlePermalinkClick(permalinkData, pushToBackstack = false) } override fun forward(eventId: EventId) { - plugins().forEach { it.startForwardEventFlow(eventId) } + callback.startForwardEventFlow(eventId) } } mediaGalleryEntryPoint.nodeBuilder(this, buildContext) @@ -350,15 +350,15 @@ class RoomDetailsFlowNode( override fun navigateToRoomMemberDetails(userId: UserId) = Unit override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) { - plugins().forEach { it.handlePermalinkClick(data, pushToBackstack) } + callback.handlePermalinkClick(data, pushToBackstack) } override fun forwardEvent(eventId: EventId) { - plugins().forEach { it.startForwardEventFlow(eventId) } + callback.startForwardEventFlow(eventId) } override fun navigateToRoom(roomId: RoomId) { - plugins().forEach { it.navigateToRoom(roomId, emptyList()) } + callback.navigateToRoom(roomId, emptyList()) } } return messagesEntryPoint.nodeBuilder(this, buildContext) 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 c439c2ce49..4af3d454d9 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 @@ -18,7 +18,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen @@ -26,6 +25,7 @@ import io.element.android.annotations.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.architecture.callback 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 @@ -63,7 +63,7 @@ class RoomDetailsNode( fun navigateToSelectNewOwnersWhenLeaving() } - private val callback = plugins().single() + private val callback: Callback = callback() init { lifecycle.subscribe( diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt index 27a0bceb66..092326928a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListNode.kt @@ -13,7 +13,6 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen @@ -21,6 +20,7 @@ import io.element.android.annotations.ContributesNode import io.element.android.features.roommembermoderation.api.ModerationAction import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.UserId import io.element.android.services.analytics.api.AnalyticsService @@ -39,7 +39,7 @@ class RoomMemberListNode( fun navigateToInviteMembers() } - private val callbacks = plugins() + private val callback: Callback = callback() init { lifecycle.subscribe( @@ -50,15 +50,11 @@ class RoomMemberListNode( } override fun openRoomMemberDetails(roomMemberId: UserId) { - callbacks.forEach { - it.navigateToRoomMemberDetails(roomMemberId) - } + callback.navigateToRoomMemberDetails(roomMemberId) } override fun openInviteMembers() { - callbacks.forEach { - it.navigateToInviteMembers() - } + callback.navigateToInviteMembers() } override fun exitRoomMemberList() { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt index ec78bf56af..ab4b288803 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsNode.kt @@ -13,12 +13,12 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.RoomScope import io.element.android.services.analytics.api.AnalyticsService @@ -34,17 +34,16 @@ class RoomNotificationSettingsNode( data class RoomNotificationSettingInput( val showUserDefinedSettingStyle: Boolean ) : NodeInputs + interface Callback : Plugin { fun navigateToGlobalNotificationSettings() } - private val inputs = inputs() - private val callbacks = plugins() - private fun navigateToGlobalNotificationSettings() { - callbacks.forEach { it.navigateToGlobalNotificationSettings() } - } + private val callback: Callback = callback() + private val inputs = inputs() private val presenter = presenterFactory.create(inputs.showUserDefinedSettingStyle) + init { lifecycle.subscribe( onResume = { @@ -59,8 +58,8 @@ class RoomNotificationSettingsNode( RoomNotificationSettingsView( state = state, modifier = modifier, - onShowGlobalNotifications = this::navigateToGlobalNotificationSettings, - onBackClick = this::navigateUp, + onShowGlobalNotifications = callback::navigateToGlobalNotificationSettings, + onBackClick = ::navigateUp, ) } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt index a430b0f6a5..29394398d3 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt @@ -14,10 +14,10 @@ import androidx.lifecycle.lifecycleScope import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.RoomMember @@ -45,7 +45,7 @@ class RolesAndPermissionsNode( override fun onBackClick() {} } - private val callback = plugins().first() + private val callback: Callback = callback() @Stable private val navigator = object : RolesAndPermissionsNavigator by callback { diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt index 5bc492b7a8..ec01ea3ba6 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryNode.kt @@ -12,12 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.roomdirectory.api.RoomDescription import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -27,18 +26,14 @@ class RoomDirectoryNode( @Assisted plugins: List, private val presenter: RoomDirectoryPresenter, ) : Node(buildContext, plugins = plugins) { - private fun onResultClick(roomDescription: RoomDescription) { - plugins().forEach { - it.navigateToRoom(roomDescription) - } - } + private val callback: RoomDirectoryEntryPoint.Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() RoomDirectoryView( state = state, - onResultClick = ::onResultClick, + onResultClick = callback::navigateToRoom, onBackClick = ::navigateUp, modifier = modifier ) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt index 63f6282dc8..586f37b664 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/SecureBackupFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -29,6 +28,7 @@ import io.element.android.features.securebackup.impl.setup.SecureBackupSetupNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.appyx.canPop +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import kotlinx.parcelize.Parcelize @@ -71,7 +71,7 @@ class SecureBackupFlowNode( data object ResetIdentity : NavTarget } - private val callbacks = plugins() + private val callback: SecureBackupEntryPoint.Callback = callback() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { @@ -116,7 +116,7 @@ class SecureBackupFlowNode( if (backstack.canPop()) { backstack.pop() } else { - callbacks.forEach { it.onDone() } + callback.onDone() } } } @@ -125,7 +125,7 @@ class SecureBackupFlowNode( is NavTarget.ResetIdentity -> { val callback = object : ResetIdentityFlowNode.Callback { override fun onDone() { - callbacks.forEach { it.onDone() } + callback.onDone() } } createNode(buildContext, listOf(callback)) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt index 77d1fe8f32..ba4848ca82 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyNode.kt @@ -12,10 +12,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -29,7 +29,7 @@ class SecureBackupEnterRecoveryKeyNode( fun onEnterRecoveryKeySuccess() } - private val callback = plugins().first() + private val callback: Callback = callback() @Composable override fun View(modifier: Modifier) { diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt index dfc9425ebe..5f94d556c7 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt @@ -20,7 +20,6 @@ import androidx.lifecycle.LifecycleOwner import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.push import dev.zacsweers.metro.Assisted @@ -33,6 +32,7 @@ import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTa import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.designsystem.components.ProgressDialog import io.element.android.libraries.di.SessionScope @@ -63,6 +63,8 @@ class ResetIdentityFlowNode( fun onDone() } + private val callback: Callback = callback() + sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget @@ -86,7 +88,7 @@ class ResetIdentityFlowNode( cancelResetJob() resetIdentityFlowManager.whenResetIsDone { - plugins().forEach { it.onDone() } + callback.onDone() } } } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootNode.kt index 8267242f97..aee266b249 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootNode.kt @@ -15,6 +15,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -27,8 +28,8 @@ class ResetIdentityRootNode( fun onContinue() } + private val callback: Callback = callback() private val presenter = ResetIdentityRootPresenter() - private val callback: Callback = plugins.filterIsInstance().first() @Composable override fun View(modifier: Modifier) { diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt index e8d13a3d38..6b29bb6928 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootNode.kt @@ -14,11 +14,11 @@ import androidx.compose.ui.platform.UriHandler import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appconfig.LearnMoreConfig +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -38,21 +38,7 @@ class SecureBackupRootNode( fun navigateToEnterRecoveryKey() } - private fun onSetupClick() { - plugins().forEach { it.navigateToSetup() } - } - - private fun onChangeClick() { - plugins().forEach { it.navigateToChange() } - } - - private fun onDisableClick() { - plugins().forEach { it.navigateToDisable() } - } - - private fun onConfirmRecoveryKeyClick() { - plugins().forEach { it.navigateToEnterRecoveryKey() } - } + private val callback: Callback = callback() private fun onLearnMoreClick(uriHandler: UriHandler) { uriHandler.openUri(LearnMoreConfig.SECURE_BACKUP_URL) @@ -65,10 +51,10 @@ class SecureBackupRootNode( SecureBackupRootView( state = state, onBackClick = ::navigateUp, - onSetupClick = ::onSetupClick, - onChangeClick = ::onChangeClick, - onDisableClick = ::onDisableClick, - onConfirmRecoveryKeyClick = ::onConfirmRecoveryKeyClick, + onSetupClick = callback::navigateToSetup, + onChangeClick = callback::navigateToChange, + onDisableClick = callback::navigateToDisable, + onConfirmRecoveryKeyClick = callback::navigateToEnterRecoveryKey, onLearnMoreClick = { onLearnMoreClick(uriHandler) }, modifier = modifier, ) diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt index 12d2f5bff5..c36f5cc97d 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt @@ -23,6 +23,7 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.share.api.ShareEntryPoint import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @@ -52,7 +53,7 @@ class ShareNode( private val inputs = inputs() private val presenter = presenterFactory.create(inputs.intent) - private val callbacks = plugins.filterIsInstance() + private val callback: ShareEntryPoint.Callback = callback() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { val callback = object : RoomSelectEntryPoint.Callback { @@ -61,7 +62,7 @@ class ShareNode( } override fun onCancel() { - onShareDone(emptyList()) + callback.onDone(emptyList()) } } @@ -82,12 +83,8 @@ class ShareNode( val state = presenter.present() ShareView( state = state, - onShareSuccess = ::onShareDone, + onShareSuccess = callback::onDone, ) } } - - private fun onShareDone(roomIds: List) { - callbacks.forEach { it.onDone(roomIds) } - } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index fb3de4a9be..1ef496d319 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -28,6 +28,7 @@ import io.element.android.features.space.impl.leave.LeaveSpaceNode import io.element.android.features.space.impl.root.SpaceNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.DependencyInjectionGraphOwner @@ -52,7 +53,7 @@ class SpaceFlowNode( plugins = plugins, ), DependencyInjectionGraphOwner { private val inputs: SpaceEntryPoint.Inputs = inputs() - private val callback = plugins.filterIsInstance().single() + private val callback: SpaceEntryPoint.Callback = callback() private val spaceRoomList = spaceService.spaceRoomList(inputs.roomId) override val graph = graphFactory.create(spaceRoomList) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 28481651eb..174fa71ee8 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -22,6 +22,7 @@ import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteV import io.element.android.features.space.impl.di.SpaceFlowScope import io.element.android.libraries.androidutils.R import io.element.android.libraries.androidutils.system.startSharePlainTextIntent +import io.element.android.libraries.architecture.callback import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.spaces.SpaceRoomList @@ -46,7 +47,7 @@ class SpaceNode( fun startLeaveSpaceFlow() } - private val callback = plugins.filterIsInstance().single() + private val callback: Callback = callback() private fun onShareRoom(context: Context) = lifecycleScope.launch { matrixClient.getRoom(spaceRoomList.roomId)?.use { room -> diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt index e875dcc748..55ff1d46f9 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt @@ -16,7 +16,6 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.navigation.transition.JumpToEndTransitionHandler 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 dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject @@ -29,6 +28,7 @@ import io.element.android.features.startchat.impl.root.StartChatNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.OverlayView +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.RoomId @@ -60,15 +60,12 @@ class StartChatFlowNode( data object JoinByAddress : NavTarget } + private val callback: StartChatEntryPoint.Callback = callback() private val navigator = DefaultStartChatNavigator( backstack = backstack, overlay = overlay, - openRoom = { roomIdOrAlias, viaServers -> - plugins().forEach { it.onRoomCreated(roomIdOrAlias, viaServers) } - }, - openRoomDirectory = { - plugins().forEach { it.navigateToRoomDirectory() } - } + openRoom = callback::onRoomCreated, + openRoomDirectory = callback::navigateToRoomDirectory, ) override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index c9df5024be..45b1e95f14 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -28,6 +27,7 @@ import io.element.android.features.userprofile.shared.UserProfileNodeHelper import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope @@ -67,6 +67,7 @@ class UserProfileFlowNode( data class VerifyUser(val userId: UserId) : NavTarget } + private val callback: UserProfileEntryPoint.Callback = callback() private val inputs = inputs() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { @@ -78,7 +79,7 @@ class UserProfileFlowNode( } override fun navigateToRoom(roomId: RoomId) { - plugins().forEach { it.navigateToRoom(roomId) } + callback.navigateToRoom(roomId) } override fun startCall(dmRoomId: RoomId) { diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationNode.kt index a17054b9e6..fed3014925 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope @@ -28,13 +28,14 @@ class IncomingVerificationNode( presenterFactory: IncomingVerificationPresenter.Factory, ) : Node(buildContext, plugins = plugins), IncomingVerificationNavigator { + private val callback: IncomingVerificationEntryPoint.Callback = callback() private val presenter = presenterFactory.create( verificationRequest = inputs().verificationRequest, navigator = this, ) override fun onFinish() { - plugins().forEach { it.onDone() } + callback.onDone() } @Composable diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt index c5a04f7834..fa5ba8d3f8 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope @@ -27,8 +27,7 @@ class OutgoingVerificationNode( @Assisted plugins: List, presenterFactory: OutgoingVerificationPresenter.Factory, ) : Node(buildContext, plugins = plugins) { - private val callback = plugins().first() - + private val callback: OutgoingVerificationEntryPoint.Callback = callback() private val inputs = inputs() private val presenter = presenterFactory.create( diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileNode.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileNode.kt index 41369dda07..e474073e6f 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileNode.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/file/ViewFileNode.kt @@ -12,12 +12,12 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs @ContributesNode(AppScope::class) @@ -36,6 +36,7 @@ class ViewFileNode( fun onBackClick() } + private val callback: Callback = callback() private val inputs: Inputs = inputs() private val presenter = presenterFactory.create( @@ -43,17 +44,13 @@ class ViewFileNode( name = inputs.name, ) - private fun onBackClick() { - plugins().forEach { it.onBackClick() } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() ViewFileView( state = state, modifier = modifier, - onBackClick = ::onBackClick, + onBackClick = callback::onBackClick, ) } } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt index b7c6fe1bd1..faea81c084 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/folder/ViewFolderNode.kt @@ -12,13 +12,13 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.viewfolder.impl.model.Item import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs @ContributesNode(AppScope::class) @@ -38,6 +38,7 @@ class ViewFolderNode( fun navigateToItem(item: Item) } + private val callback: Callback = callback() private val inputs: Inputs = inputs() private val presenter = presenterFactory.create( @@ -45,22 +46,14 @@ class ViewFolderNode( path = inputs.path, ) - private fun onBackClick() { - plugins().forEach { it.onBackClick() } - } - - private fun onNavigateTo(item: Item) { - plugins().forEach { it.navigateToItem(item) } - } - @Composable override fun View(modifier: Modifier) { val state = presenter.present() ViewFolderView( state = state, modifier = modifier, - onNavigateTo = ::onNavigateTo, - onBackClick = ::onBackClick, + onNavigateTo = callback::navigateToItem, + onBackClick = callback::onBackClick, ) } } diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt index 3c7935464b..4695576f9d 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/root/ViewFolderFlowNode.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import com.bumble.appyx.navmodel.backstack.operation.pop import com.bumble.appyx.navmodel.backstack.operation.push @@ -28,6 +27,7 @@ import io.element.android.features.viewfolder.impl.model.Item import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs import kotlinx.parcelize.Parcelize @@ -65,6 +65,7 @@ class ViewFolderFlowNode( val rootPath: String, ) : NodeInputs + private val callback: ViewFolderEntryPoint.Callback = callback() private val inputs: Inputs = inputs() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { @@ -108,7 +109,7 @@ class ViewFolderFlowNode( ): Node { val callback: ViewFolderNode.Callback = object : ViewFolderNode.Callback { override fun onBackClick() { - onDone() + callback.onDone() } override fun navigateToItem(item: Item) { @@ -133,8 +134,4 @@ class ViewFolderFlowNode( override fun View(modifier: Modifier) { BackstackView() } - - private fun onDone() { - plugins().forEach { it.onDone() } - } } diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt index f0a543340c..c1a0fbff65 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/AccountSelectNode.kt @@ -17,7 +17,7 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.libraries.accountselect.api.AccountSelectEntryPoint -import io.element.android.libraries.matrix.api.core.SessionId +import io.element.android.libraries.architecture.callback @ContributesNode(AppScope::class) @AssistedInject @@ -26,23 +26,15 @@ class AccountSelectNode( @Assisted plugins: List, private val presenter: AccountSelectPresenter, ) : Node(buildContext, plugins = plugins) { - private val callbacks = plugins.filterIsInstance() - - private fun onDismiss() { - callbacks.forEach { it.onCancel() } - } - - private fun onAccountSelected(sessionId: SessionId) { - callbacks.forEach { it.onAccountSelected(sessionId) } - } + private val callback: AccountSelectEntryPoint.Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() AccountSelectView( state = state, - onDismiss = ::onDismiss, - onSelectAccount = ::onAccountSelected, + onDismiss = callback::onCancel, + onSelectAccount = callback::onAccountSelected, modifier = modifier, ) } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/NodeCallback.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/NodeCallback.kt new file mode 100644 index 0000000000..5054f62290 --- /dev/null +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/NodeCallback.kt @@ -0,0 +1,16 @@ +/* + * 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.architecture + +import com.bumble.appyx.core.node.Node +import com.bumble.appyx.core.plugin.Plugin +import com.bumble.appyx.core.plugin.plugins + +inline fun Node.callback(): I { + return requireNotNull(plugins().singleOrNull()) { "Make sure to actually pass a Callback plugin to your node" } +} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt index ff1359b672..d784f972d0 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryNode.kt @@ -13,10 +13,10 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.mediaviewer.impl.gallery.di.LocalMediaItemPresenterFactories @@ -43,28 +43,14 @@ class MediaGalleryNode( fun forward(eventId: EventId) } - private fun onBackClick() { - plugins().forEach { - it.onBackClick() - } - } + private val callback: Callback = callback() override fun onViewInTimelineClick(eventId: EventId) { - plugins().forEach { - it.viewInTimeline(eventId) - } + callback.viewInTimeline(eventId) } override fun onForwardClick(eventId: EventId) { - plugins().forEach { - it.forward(eventId) - } - } - - private fun onItemClick(item: MediaItem.Event) { - plugins().forEach { - it.showItem(item) - } + callback.forward(eventId) } @Composable @@ -75,8 +61,8 @@ class MediaGalleryNode( val state = presenter.present() MediaGalleryView( state = state, - onBackClick = ::onBackClick, - onItemClick = ::onItemClick, + onBackClick = callback::onBackClick, + onItemClick = callback::showItem, modifier = modifier, ) } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index b72a3fbd46..a57b9203f4 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import com.bumble.appyx.navmodel.backstack.BackStack import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.libraries.architecture.BackstackWithOverlayBox import io.element.android.libraries.architecture.BaseFlowNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.overlay.Overlay import io.element.android.libraries.architecture.overlay.operation.hide @@ -70,38 +70,22 @@ class MediaGalleryFlowNode( ) : NavTarget } - private fun onBackClick() { - plugins().forEach { - it.onBackClick() - } - } - - private fun onViewInTimeline(eventId: EventId) { - plugins().forEach { - it.viewInTimeline(eventId) - } - } - - private fun forwardEvent(eventId: EventId) { - plugins().forEach { - it.forward(eventId) - } - } + private val callback: MediaGalleryEntryPoint.Callback = callback() override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Root -> { val callback = object : MediaGalleryNode.Callback { override fun onBackClick() { - this@MediaGalleryFlowNode.onBackClick() + callback.onBackClick() } override fun viewInTimeline(eventId: EventId) { - this@MediaGalleryFlowNode.onViewInTimeline(eventId) + callback.viewInTimeline(eventId) } override fun forward(eventId: EventId) { - forwardEvent(eventId) + callback.forward(eventId) } override fun showItem(item: MediaItem.Event) { @@ -132,12 +116,12 @@ class MediaGalleryFlowNode( } override fun viewInTimeline(eventId: EventId) { - this@MediaGalleryFlowNode.onViewInTimeline(eventId) + callback.viewInTimeline(eventId) } override fun forwardEvent(eventId: EventId) { // Need to go to the parent because of the overlay - this@MediaGalleryFlowNode.forwardEvent(eventId) + callback.forward(eventId) } } mediaViewerEntryPoint.nodeBuilder(this, buildContext) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index a62784555a..79a95c4648 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -15,7 +15,6 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -23,6 +22,7 @@ import io.element.android.compound.colors.SemanticColorsLightDark import io.element.android.compound.theme.ForcedDarkElementTheme import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.viewfolder.api.TextFileViewer +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.audio.api.AudioFocus import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -57,28 +57,19 @@ class MediaViewerNode( private val enterpriseService: EnterpriseService, ) : Node(buildContext, plugins = plugins), MediaViewerNavigator { + private val callback: MediaViewerEntryPoint.Callback = callback() private val inputs = inputs() - private fun onDone() { - plugins().forEach { - it.onDone() - } - } - override fun onViewInTimelineClick(eventId: EventId) { - plugins().forEach { - it.viewInTimeline(eventId) - } + callback.viewInTimeline(eventId) } override fun onForwardClick(eventId: EventId) { - plugins().forEach { - it.forwardEvent(eventId) - } + callback.forwardEvent(eventId) } override fun onItemDeleted() { - onDone() + callback.onDone() } private val mediaGallerySource = if (inputs.mode == MediaViewerEntryPoint.MediaViewerMode.SingleMedia) { @@ -153,7 +144,7 @@ class MediaViewerNode( textFileViewer = textFileViewer, modifier = modifier, audioFocus = audioFocus, - onBackClick = ::onDone, + onBackClick = callback::onDone, ) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTest.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTest.kt index 93e855c94d..e753e4d9e0 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTest.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTest.kt @@ -62,7 +62,7 @@ class IgnoredUsersTest( coroutineScope: CoroutineScope, navigator: NotificationTroubleshootNavigator, ) { - navigator.openIgnoredUsers() + navigator.navigateToBlockedUsers() } override suspend fun reset() = delegate.reset() diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTestTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTestTest.kt index e38baa7321..eebfd9d15b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTestTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/troubleshoot/IgnoredUsersTestTest.kt @@ -39,7 +39,7 @@ class IgnoredUsersTestTest { ) val openIgnoredUsersResult = lambdaRecorder {} val navigator = object : NotificationTroubleshootNavigator { - override fun openIgnoredUsers() = openIgnoredUsersResult() + override fun navigateToBlockedUsers() = openIgnoredUsersResult() } sut.quickFix( coroutineScope = backgroundScope, diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt index e72c45ed22..5c05dcf6ec 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectNode.kt @@ -16,9 +16,9 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.libraries.architecture.NodeInputs +import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.SessionScope -import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint import io.element.android.libraries.roomselect.api.RoomSelectMode @@ -35,24 +35,15 @@ class RoomSelectNode( private val inputs: Inputs = inputs() private val presenter = presenterFactory.create(inputs.mode) - - private val callbacks = plugins.filterIsInstance() - - private fun onDismiss() { - callbacks.forEach { it.onCancel() } - } - - private fun onRoomSelected(roomIds: List) { - callbacks.forEach { it.onRoomSelected(roomIds) } - } + private val callback: RoomSelectEntryPoint.Callback = callback() @Composable override fun View(modifier: Modifier) { val state = presenter.present() RoomSelectView( state = state, - onDismiss = ::onDismiss, - onSubmit = ::onRoomSelected, + onDismiss = callback::onCancel, + onSubmit = callback::onRoomSelected, modifier = modifier ) } diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootNavigator.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootNavigator.kt index 0cce358072..75c8a83ae7 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootNavigator.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/test/NotificationTroubleshootNavigator.kt @@ -8,5 +8,5 @@ package io.element.android.libraries.troubleshoot.api.test interface NotificationTroubleshootNavigator { - fun openIgnoredUsers() + fun navigateToBlockedUsers() } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt index 9ab1156d49..22ccda67ce 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEntryPoint import io.element.android.libraries.troubleshoot.api.test.NotificationTroubleshootNavigator @@ -31,20 +31,13 @@ class TroubleshootNotificationsNode( factory: TroubleshootNotificationsPresenter.Factory, ) : Node(buildContext, plugins = plugins), NotificationTroubleshootNavigator { + private val callback: NotificationTroubleShootEntryPoint.Callback = callback() private val presenter = factory.create( navigator = this, ) - private fun onDone() { - plugins().forEach { - it.onDone() - } - } - - override fun openIgnoredUsers() { - plugins().forEach { - it.navigateToBlockedUsers() - } + override fun navigateToBlockedUsers() { + callback.navigateToBlockedUsers() } @Composable @@ -53,7 +46,7 @@ class TroubleshootNotificationsNode( val state = presenter.present() TroubleshootNotificationsView( state = state, - onBackClick = ::onDone, + onBackClick = callback::onDone, modifier = modifier, ) } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt index e8b17bf2ca..532c2230ee 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryNode.kt @@ -12,11 +12,11 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -31,16 +31,10 @@ class PushHistoryNode( presenterFactory: PushHistoryPresenter.Factory, private val screenTracker: ScreenTracker, ) : Node(buildContext, plugins = plugins), PushHistoryNavigator { - private fun onDone() { - plugins().forEach { - it.onDone() - } - } + private val callback: PushHistoryEntryPoint.Callback = callback() override fun navigateTo(roomId: RoomId, eventId: EventId) { - plugins().forEach { - it.navigateToEvent(roomId, eventId) - } + callback.navigateToEvent(roomId, eventId) } private val presenter = presenterFactory.create(this) @@ -51,7 +45,7 @@ class PushHistoryNode( val state = presenter.present() PushHistoryView( state = state, - onBackClick = ::onDone, + onBackClick = callback::onDone, modifier = modifier, ) } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt index f8be5a5696..751328578d 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenterTest.kt @@ -180,7 +180,7 @@ private fun createTroubleshootTestSuite( internal fun createTroubleshootNotificationsPresenter( navigator: NotificationTroubleshootNavigator = object : NotificationTroubleshootNavigator { - override fun openIgnoredUsers() = lambdaError() + override fun navigateToBlockedUsers() = lambdaError() }, troubleshootTestSuite: TroubleshootTestSuite = createTroubleshootTestSuite(), ): TroubleshootNotificationsPresenter { diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleshootNavigator.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleshootNavigator.kt index 63445e5a3e..ea736b6a7b 100644 --- a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleshootNavigator.kt +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleshootNavigator.kt @@ -13,5 +13,5 @@ import io.element.android.tests.testutils.lambda.lambdaError class FakeNotificationTroubleshootNavigator( private val openIgnoredUsersResult: () -> Unit = { lambdaError() }, ) : NotificationTroubleshootNavigator { - override fun openIgnoredUsers() = openIgnoredUsersResult() + override fun navigateToBlockedUsers() = openIgnoredUsersResult() } From 566515ca8875cc4bc10d7e2ff2a58bfed58b4c88 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 11:37:59 +0100 Subject: [PATCH 259/898] Remove NodeBuilder to ensure that Params and Callback are always provided. --- .../android/appnav/LoggedInFlowNode.kt | 84 +++++++++------- .../android/appnav/NotLoggedInFlowNode.kt | 19 ++-- .../io/element/android/appnav/RootFlowNode.kt | 24 +++-- .../android/appnav/room/RoomFlowNode.kt | 20 ++-- .../room/joined/JoinedRoomLoadedFlowNode.kt | 40 ++++---- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 95 +++++++------------ .../FakeJoinedRoomLoadedFlowNodeCallback.kt | 18 ++++ .../api/ChangeRoomMemberRolesEntryPoint.kt | 13 ++- .../DefaultChangeRoomMemberRolesEntyPoint.kt | 36 +++---- ...faultChangeRoomMemberRolesEntyPointTest.kt | 10 +- .../createroom/api/CreateRoomEntryPoint.kt | 7 +- .../impl/DefaultCreateRoomEntryPoint.kt | 16 +--- .../impl/DefaultCreateRoomEntryPointTest.kt | 8 +- .../features/forward/api/ForwardEntryPoint.kt | 8 +- .../forward/impl/DefaultForwardEntryPoint.kt | 29 ++---- .../forward/impl/ForwardMessagesNode.kt | 10 +- .../impl/DefaultForwardEntryPointTest.kt | 19 ++-- .../features/ftue/impl/FtueFlowNode.kt | 9 +- .../FtueSessionVerificationFlowNode.kt | 42 ++++---- .../ftue/impl/DefaultFtueEntryPointTest.kt | 12 +-- .../features/home/api/HomeEntryPoint.kt | 6 +- .../home/impl/DefaultHomeEntryPoint.kt | 16 +--- .../features/home/impl/HomeFlowNode.kt | 10 +- .../home/impl/DefaultHomeEntryPointTest.kt | 10 +- .../location/api/SendLocationEntryPoint.kt | 9 +- .../send/DefaultSendLocationEntryPoint.kt | 20 ++-- .../send/DefaultSendLocationEntryPointTest.kt | 7 +- .../lockscreen/api/LockScreenEntryPoint.kt | 7 +- .../impl/DefaultLockScreenEntryPoint.kt | 30 +++--- .../impl/DefaultLockScreenEntryPointTest.kt | 18 ++-- .../features/login/api/LoginEntryPoint.kt | 8 +- .../login/impl/DefaultLoginEntryPoint.kt | 29 ++---- .../login/impl/DefaultLoginEntryPointTest.kt | 10 +- .../features/logout/api/LogoutEntryPoint.kt | 7 +- .../logout/impl/DefaultLogoutEntryPoint.kt | 16 +--- .../impl/DefaultLogoutEntryPointTest.kt | 8 +- .../messages/api/MessagesEntryPoint.kt | 8 +- .../impl/DefaultMessagesEntryPoint.kt | 25 +---- .../messages/impl/MessagesFlowNode.kt | 60 ++++++------ .../impl/DefaultMessagesEntryPointTest.kt | 38 ++++++-- .../poll/api/create/CreatePollEntryPoint.kt | 7 +- .../create/DefaultCreatePollEntryPoint.kt | 19 +--- .../poll/impl/history/PollHistoryFlowNode.kt | 10 +- .../create/DefaultCreatePollEntryPointTest.kt | 8 +- .../DefaultPollHistoryEntryPointTest.kt | 6 +- .../preferences/api/PreferencesEntryPoint.kt | 8 +- .../impl/DefaultPreferencesEntryPoint.kt | 29 ++---- .../preferences/impl/PreferencesFlowNode.kt | 39 +++++--- .../impl/DefaultPreferencesEntryPointTest.kt | 36 +++++-- .../api/bugreport/BugReportEntryPoint.kt | 7 +- .../impl/bugreport/BugReportFlowNode.kt | 11 ++- .../bugreport/DefaultBugReportEntryPoint.kt | 16 +--- .../DefaultBugReportEntryPointTest.kt | 15 ++- .../api/RoomAliasResolverEntryPoint.kt | 8 +- .../DefaultRoomAliasResolverEntryPoint.kt | 29 ++---- .../DefaultRoomAliasResolverEntryPointTest.kt | 10 +- .../roomdetails/api/RoomDetailsEntryPoint.kt | 8 +- .../impl/DefaultRoomDetailsEntryPoint.kt | 29 ++---- .../roomdetails/impl/RoomDetailsFlowNode.kt | 57 ++++++----- .../RolesAndPermissionsFlowNode.kt | 20 ++-- .../impl/DefaultRoomDetailsEntryPointTest.kt | 47 +++++++-- .../api/RoomDirectoryEntryPoint.kt | 7 +- .../impl/DefaultRoomDirectoryEntryPoint.kt | 16 +--- .../DefaultRoomDirectoryEntryPointTest.kt | 8 +- .../api/SecureBackupEntryPoint.kt | 8 +- .../impl/DefaultSecureBackupEntryPoint.kt | 29 ++---- .../impl/DefaultSecureBackupEntryPointTest.kt | 10 +- .../features/share/api/ShareEntryPoint.kt | 11 +-- .../share/impl/DefaultShareEntryPoint.kt | 27 ++---- .../android/features/share/impl/ShareNode.kt | 10 +- .../share/impl/DefaultShareEntryPointTest.kt | 19 ++-- .../signedout/api/SignedOutEntryPoint.kt | 7 +- .../impl/DefaultSignedOutEntryPoint.kt | 19 +--- .../impl/DefaultSignedOutEntryPointTest.kt | 8 +- .../features/space/api/SpaceEntryPoint.kt | 12 +-- .../space/impl/DefaultSpaceEntryPoint.kt | 23 +---- .../space/impl/DefaultSpaceEntryPointTest.kt | 10 +- .../startchat/api/StartChatEntryPoint.kt | 6 +- .../impl/DefaultStartChatEntryPoint.kt | 16 +--- .../startchat/impl/StartChatFlowNode.kt | 8 +- .../impl/DefaultStartChatEntryPointTest.kt | 14 ++- .../userprofile/api/UserProfileEntryPoint.kt | 8 +- .../impl/DefaultUserProfileEntryPoint.kt | 29 ++---- .../userprofile/impl/UserProfileFlowNode.kt | 38 ++++++-- .../impl/DefaultUserProfileEntryPointTest.kt | 25 +++-- .../api/IncomingVerificationEntryPoint.kt | 8 +- .../api/OutgoingVerificationEntryPoint.kt | 8 +- .../DefaultIncomingVerificationEntryPoint.kt | 26 ++--- .../DefaultOutgoingVerificationEntryPoint.kt | 26 ++--- ...faultIncomingVerificationEntryPointTest.kt | 10 +- ...faultOutgoingVerificationEntryPointTest.kt | 10 +- .../viewfolder/api/ViewFolderEntryPoint.kt | 8 +- .../impl/DefaultViewFolderEntryPoint.kt | 27 ++---- .../impl/DefaultViewFolderEntryPointTest.kt | 10 +- .../api/AccountSelectEntryPoint.kt | 7 +- .../impl/DefaultAccountSelectEntryPoint.kt | 16 +--- .../DefaultAccountSelectEntryPointTest.kt | 8 +- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 7 +- .../mediaviewer/api/MediaViewerEntryPoint.kt | 9 +- .../impl/DefaultMediaGalleryEntryPoint.kt | 19 +--- .../impl/DefaultMediaViewerEntryPoint.kt | 83 +++++++--------- .../impl/gallery/root/MediaGalleryFlowNode.kt | 26 ++--- .../impl/DefaultMediaGalleryEntryPointTest.kt | 16 +++- .../impl/DefaultMediaViewerEntryPointTest.kt | 27 +++--- .../roomselect/api/RoomSelectEntryPoint.kt | 7 +- .../impl/DefaultRoomSelectEntryPoint.kt | 27 ++---- .../impl/DefaultRoomSelectEntryPointTest.kt | 10 +- .../api/NotificationTroubleShootEntryPoint.kt | 7 +- .../troubleshoot/api/PushHistoryEntryPoint.kt | 7 +- ...faultNotificationTroubleShootEntryPoint.kt | 16 +--- .../history/DefaultPushHistoryEntryPoint.kt | 16 +--- ...tNotificationTroubleShootEntryPointTest.kt | 8 +- .../DefaultPushHistoryEntryPointTest.kt | 8 +- ...Template Module Feature Entry Point API.kt | 7 +- ...te Module Feature Entry Point Flow Impl.kt | 16 +--- 115 files changed, 954 insertions(+), 1174 deletions(-) create mode 100644 appnav/src/test/kotlin/io/element/android/appnav/room/joined/FakeJoinedRoomLoadedFlowNodeCallback.kt diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 466abc9e36..ae61a03281 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -333,10 +333,11 @@ class LoggedInFlowNode( callback.navigateToBugReport() } } - homeEntryPoint - .nodeBuilder(this, buildContext) - .callback(callback) - .build() + homeEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } is NavTarget.Room -> { val joinedRoomCallback = object : JoinedRoomLoadedFlowNode.Callback { @@ -389,10 +390,12 @@ class LoggedInFlowNode( backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias())) } } - userProfileEntryPoint.nodeBuilder(this, buildContext) - .params(UserProfileEntryPoint.Params(userId = navTarget.userId)) - .callback(callback) - .build() + userProfileEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = UserProfileEntryPoint.Params(userId = navTarget.userId), + callback = callback, + ) } is NavTarget.Settings -> { val callback = object : PreferencesEntryPoint.Callback { @@ -417,10 +420,12 @@ class LoggedInFlowNode( } } val inputs = PreferencesEntryPoint.Params(navTarget.initialElement) - preferencesEntryPoint.nodeBuilder(this, buildContext) - .params(inputs) - .callback(callback) - .build() + preferencesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = inputs, + callback = callback, + ) } NavTarget.CreateRoom -> { val callback = object : StartChatEntryPoint.Callback { @@ -433,27 +438,32 @@ class LoggedInFlowNode( } } - startChatEntryPoint - .nodeBuilder(this, buildContext) - .callback(callback) - .build() + startChatEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } is NavTarget.SecureBackup -> { - secureBackupEntryPoint.nodeBuilder(this, buildContext) - .params(SecureBackupEntryPoint.Params(initialElement = navTarget.initialElement)) - .callback(object : SecureBackupEntryPoint.Callback { + secureBackupEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = SecureBackupEntryPoint.Params(initialElement = navTarget.initialElement), + callback = object : SecureBackupEntryPoint.Callback { override fun onDone() { backstack.pop() } - }) - .build() + }, + ) } NavTarget.Ftue -> { ftueEntryPoint.createNode(this, buildContext) } NavTarget.RoomDirectory -> { - roomDirectoryEntryPoint.nodeBuilder(this, buildContext) - .callback(object : RoomDirectoryEntryPoint.Callback { + roomDirectoryEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) { backstack.push( NavTarget.Room( @@ -463,31 +473,35 @@ class LoggedInFlowNode( ) ) } - }) - .build() + }, + ) } is NavTarget.IncomingShare -> { - shareEntryPoint.nodeBuilder(this, buildContext) - .callback(object : ShareEntryPoint.Callback { + shareEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = ShareEntryPoint.Params(intent = navTarget.intent), + callback = object : ShareEntryPoint.Callback { override fun onDone(roomIds: List) { navigateUp() roomIds.singleOrNull()?.let { roomId -> backstack.push(NavTarget.Room(roomId.toRoomIdOrAlias())) } } - }) - .params(ShareEntryPoint.Params(intent = navTarget.intent)) - .build() + }, + ) } is NavTarget.IncomingVerificationRequest -> { - incomingVerificationEntryPoint.nodeBuilder(this, buildContext) - .params(IncomingVerificationEntryPoint.Params(navTarget.data)) - .callback(object : IncomingVerificationEntryPoint.Callback { + incomingVerificationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = IncomingVerificationEntryPoint.Params(navTarget.data), + callback = object : IncomingVerificationEntryPoint.Callback { override fun onDone() { backstack.pop() } - }) - .build() + }, + ) } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index bb0ffa82c1..b372155bd3 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -83,16 +83,15 @@ class NotLoggedInFlowNode( callback.navigateToBugReport() } } - loginEntryPoint - .nodeBuilder(this, buildContext) - .params( - LoginEntryPoint.Params( - accountProvider = inputs.loginParams?.accountProvider, - loginHint = inputs.loginParams?.loginHint, - ) - ) - .callback(callback) - .build() + loginEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = LoginEntryPoint.Params( + accountProvider = inputs.loginParams?.accountProvider, + loginHint = inputs.loginParams?.loginHint, + ), + callback = callback, + ) } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index 676cc75767..bdad3c2ab0 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -249,11 +249,13 @@ class RootFlowNode( createNode(buildContext, plugins = listOf(params, callback)) } is NavTarget.SignedOutFlow -> { - signedOutEntryPoint.nodeBuilder(this, buildContext).params( - SignedOutEntryPoint.Params( - sessionId = navTarget.sessionId - ) - ).build() + signedOutEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = SignedOutEntryPoint.Params( + sessionId = navTarget.sessionId, + ), + ) } NavTarget.SplashScreen -> emptyNode(buildContext) NavTarget.BugReport -> { @@ -262,7 +264,11 @@ class RootFlowNode( backstack.pop() } } - bugReportEntryPoint.nodeBuilder(this, buildContext).callback(callback).build() + bugReportEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } is NavTarget.AccountSelect -> { val callback: AccountSelectEntryPoint.Callback = object : AccountSelectEntryPoint.Callback { @@ -287,7 +293,11 @@ class RootFlowNode( backstack.pop() } } - accountSelectEntryPoint.nodeBuilder(this, buildContext).callback(callback).build() + accountSelectEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 87713ad38e..6283dbb3f9 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -180,10 +180,12 @@ class RoomFlowNode( } } val params = Params(navTarget.roomAlias) - roomAliasResolverEntryPoint.nodeBuilder(this, buildContext) - .callback(callback) - .params(params) - .build() + roomAliasResolverEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } is NavTarget.JoinRoom -> { val inputs = JoinRoomEntryPoint.Inputs( @@ -205,10 +207,12 @@ class RoomFlowNode( } is NavTarget.JoinedSpace -> { val spaceCallback = plugins().single() - spaceEntryPoint.nodeBuilder(this, buildContext) - .inputs(SpaceEntryPoint.Inputs(roomId = navTarget.spaceId)) - .callback(spaceCallback) - .build() + spaceEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inputs = SpaceEntryPoint.Inputs(roomId = navTarget.spaceId), + callback = spaceCallback, + ) } } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 760adfab25..16eaff89b1 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -140,10 +140,12 @@ class JoinedRoomLoadedFlowNode( backstack.push(NavTarget.ForwardEvent(eventId)) } } - return roomDetailsEntryPoint.nodeBuilder(this, buildContext) - .params(RoomDetailsEntryPoint.Params(initialTarget)) - .callback(callback) - .build() + return roomDetailsEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = RoomDetailsEntryPoint.Params(initialTarget), + callback = callback, + ) } override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { @@ -177,10 +179,12 @@ class JoinedRoomLoadedFlowNode( } } } - forwardEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + forwardEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } } } @@ -199,10 +203,12 @@ class JoinedRoomLoadedFlowNode( backstack.push(NavTarget.RoomMemberList) } } - return spaceEntryPoint.nodeBuilder(this, buildContext) - .inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId)) - .callback(callback) - .build() + return spaceEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inputs = SpaceEntryPoint.Inputs(roomId = inputs.room.roomId), + callback = callback, + ) } private fun createMessagesNode( @@ -233,10 +239,12 @@ class JoinedRoomLoadedFlowNode( val params = MessagesEntryPoint.Params( MessagesEntryPoint.InitialTarget.Messages(navTarget.focusedEventId) ) - return messagesEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + return messagesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } sealed interface NavTarget : Parcelable { diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index d9070b97bc..f3ba7a8ad7 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -19,6 +19,7 @@ import com.bumble.appyx.testing.unit.common.helper.parentNodeTestHelper import com.google.common.truth.Truth.assertThat import io.element.android.appnav.di.RoomGraphFactory import io.element.android.appnav.room.RoomNavigationTarget +import io.element.android.appnav.room.joined.FakeJoinedRoomLoadedFlowNodeCallback import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint @@ -48,29 +49,20 @@ class JoinedRoomLoadedFlowNodeTest { @get:Rule val mainDispatcherRule = MainDispatcherRule() - private class FakeMessagesEntryPoint : MessagesEntryPoint, MessagesEntryPoint.NodeBuilder { - var buildContext: BuildContext? = null + private class FakeMessagesEntryPoint : MessagesEntryPoint { var nodeId: String? = null var parameters: MessagesEntryPoint.Params? = null var callback: MessagesEntryPoint.Callback? = null - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MessagesEntryPoint.NodeBuilder { - this.buildContext = buildContext - return this - } - - override fun params(params: MessagesEntryPoint.Params): MessagesEntryPoint.NodeBuilder { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MessagesEntryPoint.Params, + callback: MessagesEntryPoint.Callback, + ): Node { parameters = params - return this - } - - override fun callback(callback: MessagesEntryPoint.Callback): MessagesEntryPoint.NodeBuilder { this.callback = callback - return this - } - - override fun build(): Node { - return node(buildContext!!) {}.also { + return node(buildContext) {}.also { nodeId = it.id } } @@ -85,55 +77,36 @@ class JoinedRoomLoadedFlowNodeTest { private class FakeRoomDetailsEntryPoint : RoomDetailsEntryPoint { var nodeId: String? = null - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { - return object : RoomDetailsEntryPoint.NodeBuilder { - override fun params(params: RoomDetailsEntryPoint.Params): RoomDetailsEntryPoint.NodeBuilder { - return this - } - - override fun callback(callback: RoomDetailsEntryPoint.Callback): RoomDetailsEntryPoint.NodeBuilder { - return this - } - - override fun build(): Node { - return node(buildContext) {}.also { - nodeId = it.id - } - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomDetailsEntryPoint.Params, + callback: RoomDetailsEntryPoint.Callback, + ) = node(buildContext) {}.also { + nodeId = it.id } } private class FakeSpaceEntryPoint : SpaceEntryPoint { var nodeId: String? = null - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SpaceEntryPoint.NodeBuilder { - return object : SpaceEntryPoint.NodeBuilder { - override fun inputs(inputs: SpaceEntryPoint.Inputs): SpaceEntryPoint.NodeBuilder { - return this - } - - override fun callback(callback: SpaceEntryPoint.Callback): SpaceEntryPoint.NodeBuilder { - return this - } - - override fun build(): Node { - return node(buildContext) {}.also { - nodeId = it.id - } - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: SpaceEntryPoint.Inputs, + callback: SpaceEntryPoint.Callback, + ) = node(buildContext) {}.also { + nodeId = it.id } } private class FakeForwardEntryPoint : ForwardEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ForwardEntryPoint.NodeBuilder { - return object : ForwardEntryPoint.NodeBuilder { - override fun params(params: ForwardEntryPoint.Params) = this - override fun callback(callback: ForwardEntryPoint.Callback) = this - override fun build() = node(buildContext) {} - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ForwardEntryPoint.Params, + callback: ForwardEntryPoint.Callback, + ) = node(buildContext) {} } private fun TestScope.createJoinedRoomLoadedFlowNode( @@ -165,7 +138,7 @@ class JoinedRoomLoadedFlowNodeTest { val fakeMessagesEntryPoint = FakeMessagesEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( - plugins = listOf(inputs), + plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), messagesEntryPoint = fakeMessagesEntryPoint, ) // WHEN @@ -185,7 +158,7 @@ class JoinedRoomLoadedFlowNodeTest { val spaceEntryPoint = FakeSpaceEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( - plugins = listOf(inputs), + plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), spaceEntryPoint = spaceEntryPoint, ) // WHEN @@ -206,7 +179,7 @@ class JoinedRoomLoadedFlowNodeTest { val fakeRoomDetailsEntryPoint = FakeRoomDetailsEntryPoint() val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val roomFlowNode = createJoinedRoomLoadedFlowNode( - plugins = listOf(inputs), + plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, ) @@ -228,7 +201,7 @@ class JoinedRoomLoadedFlowNodeTest { val inputs = JoinedRoomLoadedFlowNode.Inputs(room, RoomNavigationTarget.Root()) val activeRoomsHolder = ActiveRoomsHolder() val roomFlowNode = createJoinedRoomLoadedFlowNode( - plugins = listOf(inputs), + plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, activeRoomsHolder = activeRoomsHolder, @@ -253,7 +226,7 @@ class JoinedRoomLoadedFlowNodeTest { addRoom(room) } val roomFlowNode = createJoinedRoomLoadedFlowNode( - plugins = listOf(inputs), + plugins = listOf(inputs, FakeJoinedRoomLoadedFlowNodeCallback()), messagesEntryPoint = fakeMessagesEntryPoint, roomDetailsEntryPoint = fakeRoomDetailsEntryPoint, activeRoomsHolder = activeRoomsHolder, diff --git a/appnav/src/test/kotlin/io/element/android/appnav/room/joined/FakeJoinedRoomLoadedFlowNodeCallback.kt b/appnav/src/test/kotlin/io/element/android/appnav/room/joined/FakeJoinedRoomLoadedFlowNodeCallback.kt new file mode 100644 index 0000000000..0e2e0c17f8 --- /dev/null +++ b/appnav/src/test/kotlin/io/element/android/appnav/room/joined/FakeJoinedRoomLoadedFlowNodeCallback.kt @@ -0,0 +1,18 @@ +/* + * 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.appnav.room.joined + +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.libraries.matrix.api.permalink.PermalinkData +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeJoinedRoomLoadedFlowNodeCallback : JoinedRoomLoadedFlowNode.Callback { + override fun navigateToRoom(roomId: RoomId, serverNames: List) = lambdaError() + override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() + override fun navigateToGlobalNotificationSettings() = lambdaError() +} 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 index b6f7680b38..72c5de5bfe 100644 --- 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 @@ -15,13 +15,12 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.JoinedRoom fun 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 - } + fun createNode( + parentNode: Node, + buildContext: BuildContext, + room: JoinedRoom, + listType: ChangeRoomMemberRolesListType, + ): Node interface NodeProxy { val roomId: RoomId 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 index 53fb89720b..4bdce08e9a 100644 --- 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 @@ -18,29 +18,17 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) class DefaultChangeRoomMemberRolesEntyPoint : 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), - ) - ) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + room: JoinedRoom, + listType: ChangeRoomMemberRolesListType, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + ChangeRoomMemberRolesRootNode.Inputs(joinedRoom = room, listType = listType), + ) + ) } } diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt index 621af8edaf..6f17a5025d 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt @@ -31,10 +31,12 @@ class DefaultChangeRoomMemberRolesEntyPointTest { } val room = FakeJoinedRoom() val listType = ChangeRoomMemberRolesListType.Admins - val result = entryPoint.builder(parentNode, BuildContext.root(null)) - .room(FakeJoinedRoom()) - .listType(listType) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + room = FakeJoinedRoom(), + listType = listType, + ) assertThat(result).isInstanceOf(ChangeRoomMemberRolesRootNode::class.java) // Search for the Inputs plugin val input = result.plugins.filterIsInstance().single() diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt index 5fc71f2a3b..f30cbd9c91 100644 --- a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt @@ -14,12 +14,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface CreateRoomEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onRoomCreated(roomId: RoomId) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt index 3ee0a92338..819cfd1208 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.createroom.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.createroom.api.CreateRoomEntryPoint import io.element.android.libraries.architecture.createNode @@ -17,18 +16,7 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultCreateRoomEntryPoint : CreateRoomEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreateRoomEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : CreateRoomEntryPoint.NodeBuilder { - override fun callback(callback: CreateRoomEntryPoint.Callback): CreateRoomEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt index 61c7c052c5..4690b5b7f3 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt @@ -38,9 +38,11 @@ class DefaultCreateRoomEntryPointTest { val callback = object : CreateRoomEntryPoint.Callback { override fun onRoomCreated(roomId: RoomId) = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result.plugins).contains(callback) } } diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt index d822c0adb8..d20d9a8f70 100644 --- a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt @@ -17,12 +17,6 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.timeline.TimelineProvider interface ForwardEntryPoint : FeatureEntryPoint { - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } - interface Callback : Plugin { fun onDone(roomIds: List) } @@ -32,5 +26,5 @@ interface ForwardEntryPoint : FeatureEntryPoint { val timelineProvider: TimelineProvider, ) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt index 55eede7b57..faa0787419 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.forward.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.architecture.createNode @@ -17,26 +16,16 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultForwardEntryPoint : ForwardEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ForwardEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : ForwardEntryPoint.NodeBuilder { - override fun params(params: ForwardEntryPoint.Params): ForwardEntryPoint.NodeBuilder { - plugins += ForwardMessagesNode.Inputs( + override fun createNode(parentNode: Node, buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + ForwardMessagesNode.Inputs( eventId = params.eventId, timelineProvider = params.timelineProvider, - ) - return this - } - - override fun callback(callback: ForwardEntryPoint.Callback): ForwardEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + ), + callback, + ) + ) } } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index 6fb1b2dc0e..a38f71264b 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -70,10 +70,12 @@ class ForwardMessagesNode( } } - return roomSelectEntryPoint.nodeBuilder(this, buildContext) - .callback(callback) - .params(RoomSelectEntryPoint.Params(mode = RoomSelectMode.Forward)) - .build() + return roomSelectEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Forward), + callback = callback, + ) } @Composable diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index dabb8af4a1..6b0927cbfe 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -39,9 +39,12 @@ class DefaultForwardEntryPointTest { plugins = plugins, presenterFactory = { _, _ -> createForwardMessagesPresenter() }, roomSelectEntryPoint = object : RoomSelectEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { - lambdaError() - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomSelectEntryPoint.Params, + callback: RoomSelectEntryPoint.Callback, + ) = lambdaError() } ) } @@ -52,10 +55,12 @@ class DefaultForwardEntryPointTest { eventId = AN_EVENT_ID, timelineProvider = FakeTimelineProvider(), ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ForwardMessagesNode::class.java) assertThat(result.plugins).contains( ForwardMessagesNode.Inputs( diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt index 6552a3b360..7c045f0150 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt @@ -110,9 +110,12 @@ class FtueFlowNode( defaultFtueService.updateFtueStep() } } - lockScreenEntryPoint.nodeBuilder(this, buildContext, LockScreenEntryPoint.Target.Setup) - .callback(callback) - .build() + lockScreenEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + navTarget = LockScreenEntryPoint.Target.Setup, + callback = callback, + ) } } } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt index 47f2da3455..13da4a0748 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt @@ -103,14 +103,14 @@ class FtueSessionVerificationFlowNode( createNode(buildContext, plugins = listOf(callback)) } is NavTarget.UseAnotherDevice -> { - outgoingVerificationEntryPoint.nodeBuilder(this, buildContext) - .params( - OutgoingVerificationEntryPoint.Params( - showDeviceVerifiedScreen = true, - verificationRequest = VerificationRequest.Outgoing.CurrentSession, - ) - ) - .callback(object : OutgoingVerificationEntryPoint.Callback { + outgoingVerificationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = OutgoingVerificationEntryPoint.Params( + showDeviceVerifiedScreen = true, + verificationRequest = VerificationRequest.Outgoing.CurrentSession, + ), + callback = object : OutgoingVerificationEntryPoint.Callback { override fun onDone() { callback.onDone() } @@ -123,24 +123,28 @@ class FtueSessionVerificationFlowNode( // Note that this callback is never called. The "Learn more" link is not displayed // for the self session interactive verification. } - }) - .build() + } + ) } is NavTarget.EnterRecoveryKey -> { - secureBackupEntryPoint.nodeBuilder(this, buildContext) - .params(SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey)) - .callback(secureBackupEntryPointCallback) - .build() + secureBackupEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey), + callback = secureBackupEntryPointCallback + ) } is NavTarget.ResetIdentity -> { - secureBackupEntryPoint.nodeBuilder(this, buildContext) - .params(SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity)) - .callback(object : SecureBackupEntryPoint.Callback { + secureBackupEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity), + callback = object : SecureBackupEntryPoint.Callback { override fun onDone() { callback.onDone() } - }) - .build() + }, + ) } } } diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt index 3a8ed11ea2..c528d9c8b9 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt @@ -11,6 +11,7 @@ import android.content.Context import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.lockscreen.api.LockScreenEntryPoint @@ -37,13 +38,12 @@ class DefaultFtueEntryPointTest { analyticsEntryPoint = { _, _ -> lambdaError() }, defaultFtueService = createDefaultFtueService(), lockScreenEntryPoint = object : LockScreenEntryPoint { - override fun nodeBuilder( - parentNode: com.bumble.appyx.core.node.Node, + override fun createNode( + parentNode: Node, buildContext: BuildContext, - navTarget: LockScreenEntryPoint.Target - ): LockScreenEntryPoint.NodeBuilder { - lambdaError() - } + navTarget: LockScreenEntryPoint.Target, + callback: LockScreenEntryPoint.Callback, + ) = lambdaError() override fun pinUnlockIntent(context: Context): Intent { lambdaError() diff --git a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt index daf020f26c..3f8da8bc1a 100644 --- a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt +++ b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt @@ -14,11 +14,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface HomeEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToRoom(roomId: RoomId) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt index 39c647f8f8..a85c5df07d 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.home.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.home.api.HomeEntryPoint @@ -17,18 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultHomeEntryPoint : HomeEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): HomeEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : HomeEntryPoint.NodeBuilder { - override fun callback(callback: HomeEntryPoint.Callback): HomeEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: HomeEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } 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 eb3a8bd880..7e542b5651 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 @@ -190,10 +190,12 @@ class HomeFlowNode( 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() + changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + room = room, + listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, + ) } NavTarget.Root -> rootNode(buildContext) } diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt index b2cbea8d76..489234a827 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt @@ -36,7 +36,7 @@ class DefaultHomeEntryPointTest { directLogoutView = { _ -> lambdaError() }, reportRoomEntryPoint = { _, _, _ -> lambdaError() }, declineInviteAndBlockUserEntryPoint = { _, _, _ -> lambdaError() }, - changeRoomMemberRolesEntryPoint = { _, _ -> lambdaError() }, + changeRoomMemberRolesEntryPoint = { _, _, _, _ -> lambdaError() }, leaveRoomRenderer = { _, _, _ -> lambdaError() }, ) } @@ -49,9 +49,11 @@ class DefaultHomeEntryPointTest { override fun navigateToRoomSettings(roomId: RoomId) = lambdaError() override fun navigateToBugReport() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(HomeFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt index 1528e6cb14..afd1b895b5 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt @@ -18,8 +18,9 @@ import io.element.android.libraries.matrix.api.timeline.Timeline * Allows a user to share a location message within a room. */ interface SendLocationEntryPoint : FeatureEntryPoint { - fun builder(timelineMode: Timeline.Mode): Builder - interface Builder { - fun build(parentNode: Node, buildContext: BuildContext): Node - } + fun createNode( + parentNode: Node, + buildContext: BuildContext, + timelineMode: Timeline.Mode, + ): Node } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index 806fc5b741..2a8e9309a1 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -17,16 +17,14 @@ import io.element.android.libraries.matrix.api.timeline.Timeline @ContributesBinding(AppScope::class) class DefaultSendLocationEntryPoint : SendLocationEntryPoint { - override fun builder(timelineMode: Timeline.Mode): SendLocationEntryPoint.Builder { - return Builder(timelineMode) - } - - class Builder(private val timelineMode: Timeline.Mode) : SendLocationEntryPoint.Builder { - override fun build(parentNode: Node, buildContext: BuildContext): Node { - return parentNode.createNode( - buildContext = buildContext, - plugins = listOf(SendLocationNode.Inputs(timelineMode)) - ) - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + timelineMode: Timeline.Mode, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(SendLocationNode.Inputs(timelineMode)) + ) } } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt index 9be79c7092..4cac3df6a2 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt @@ -47,8 +47,11 @@ class DefaultSendLocationEntryPointTest { ) } val timelineMode = Timeline.Mode.Live - val result = entryPoint.builder(timelineMode) - .build(parentNode, BuildContext.root(null)) + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + timelineMode = timelineMode, + ) assertThat(result).isInstanceOf(SendLocationNode::class.java) assertThat(result.plugins).contains(SendLocationNode.Inputs(timelineMode)) } diff --git a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt index e9ba05ba74..c7741ac197 100644 --- a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt +++ b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt @@ -15,14 +15,9 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LockScreenEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext, navTarget: Target): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, navTarget: Target, callback: Callback): Node fun pinUnlockIntent(context: Context): Intent - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } - interface Callback : Plugin { fun onSetupDone() } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt index 0e22131e4c..39430c5ad1 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt @@ -19,26 +19,24 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLockScreenEntryPoint : LockScreenEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target): LockScreenEntryPoint.NodeBuilder { - val callbacks = mutableListOf() - - return object : LockScreenEntryPoint.NodeBuilder { - override fun callback(callback: LockScreenEntryPoint.Callback): LockScreenEntryPoint.NodeBuilder { - callbacks += callback - return this - } - - override fun build(): Node { - val inputs = LockScreenFlowNode.Inputs( + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + navTarget: LockScreenEntryPoint.Target, + callback: LockScreenEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + LockScreenFlowNode.Inputs( when (navTarget) { LockScreenEntryPoint.Target.Setup -> LockScreenFlowNode.NavTarget.Setup LockScreenEntryPoint.Target.Settings -> LockScreenFlowNode.NavTarget.Settings } - ) - val plugins = listOf(inputs) + callbacks - return parentNode.createNode(buildContext, plugins) - } - } + ), + callback, + ) + ) } override fun pinUnlockIntent(context: Context): Intent { diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt index 822d275063..15473fe43c 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt @@ -37,9 +37,12 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Setup - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null), navTarget) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Setup)) assertThat(result.plugins).contains(callback) @@ -58,9 +61,12 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Settings - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null), navTarget) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Settings)) assertThat(result.plugins).contains(callback) diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt index 3bb1db478b..e2e60af1ed 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt @@ -22,11 +22,5 @@ interface LoginEntryPoint : FeatureEntryPoint { fun navigateToBugReport() } - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt index ed695f7b8e..a95b7b54a7 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.login.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.login.api.LoginEntryPoint @@ -17,26 +16,16 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLoginEntryPoint : LoginEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LoginEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : LoginEntryPoint.NodeBuilder { - override fun params(params: LoginEntryPoint.Params): LoginEntryPoint.NodeBuilder { - plugins += LoginFlowNode.Params( + override fun createNode(parentNode: Node, buildContext: BuildContext, params: LoginEntryPoint.Params, callback: LoginEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + LoginFlowNode.Params( accountProvider = params.accountProvider, loginHint = params.loginHint, - ) - return this - } - - override fun callback(callback: LoginEntryPoint.Callback): LoginEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + ), + callback, + ) + ) } } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt index d39cea9865..4a6f6cae22 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt @@ -45,10 +45,12 @@ class DefaultLoginEntryPointTest { accountProvider = "ac", loginHint = "lh", ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(LoginFlowNode::class.java) assertThat(result.plugins).contains(LoginFlowNode.Params(params.accountProvider, params.loginHint)) assertThat(result.plugins).contains(callback) diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt index 676216d8f4..41ce730b1c 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt @@ -13,12 +13,7 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LogoutEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToSecureBackup() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index adcc060b46..4ca840ad04 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.logout.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.logout.api.LogoutEntryPoint @@ -17,18 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLogoutEntryPoint : LogoutEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): LogoutEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : LogoutEntryPoint.NodeBuilder { - override fun callback(callback: LogoutEntryPoint.Callback): LogoutEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: LogoutEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt index 7e831bccf5..dd4b3b36fc 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt @@ -34,9 +34,11 @@ class DefaultLogoutEntryPointTest { val callback = object : LogoutEntryPoint.Callback { override fun navigateToSecureBackup() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(LogoutNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 6540e03684..46e20ab2d7 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -31,12 +31,6 @@ interface MessagesEntryPoint : FeatureEntryPoint { data object PinnedMessages : InitialTarget } - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } - interface Callback : Plugin { fun navigateToRoomDetails() fun navigateToRoomMemberDetails(userId: UserId) @@ -47,7 +41,7 @@ interface MessagesEntryPoint : FeatureEntryPoint { data class Params(val initialTarget: InitialTarget) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node } interface MessagesEntryPointNode { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt index 9085bcb283..c48fafb6a2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt @@ -9,34 +9,15 @@ package io.element.android.features.messages.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.messages.api.MessagesEntryPoint -import io.element.android.libraries.architecture.NodeFactoriesBindings -import io.element.android.libraries.architecture.bindings +import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultMessagesEntryPoint : MessagesEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MessagesEntryPoint.NodeBuilder { - val nodeFactories = parentNode.bindings().nodeFactories() - val plugins = ArrayList() - - return object : MessagesEntryPoint.NodeBuilder { - override fun params(params: MessagesEntryPoint.Params): MessagesEntryPoint.NodeBuilder { - plugins += MessagesEntryPoint.Params(params.initialTarget) - return this - } - - override fun callback(callback: MessagesEntryPoint.Callback): MessagesEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return nodeFactories[MessagesFlowNode::class]!!.create(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(params, callback)) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index a65595788a..d8a684b8dd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -320,10 +320,12 @@ class MessagesFlowNode( callback.forwardEvent(eventId) } } - mediaViewerEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + mediaViewerEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback + ) } is NavTarget.AttachmentPreview -> { val inputs = AttachmentsPreviewNode.Inputs( @@ -356,39 +358,43 @@ class MessagesFlowNode( } } } - forwardEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + forwardEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } is NavTarget.ReportMessage -> { val inputs = ReportMessageNode.Inputs(navTarget.eventId, navTarget.senderId) createNode(buildContext, listOf(inputs)) } is NavTarget.SendLocation -> { - sendLocationEntryPoint - .builder(navTarget.timelineMode) - .build(this, buildContext) + sendLocationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + timelineMode = navTarget.timelineMode, + ) } is NavTarget.CreatePoll -> { - createPollEntryPoint.nodeBuilder(this, buildContext) - .params( - CreatePollEntryPoint.Params( - timelineMode = navTarget.timelineMode, - mode = CreatePollMode.NewPoll - ) - ) - .build() + createPollEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = CreatePollEntryPoint.Params( + timelineMode = navTarget.timelineMode, + mode = CreatePollMode.NewPoll + ), + ) } is NavTarget.EditPoll -> { - createPollEntryPoint.nodeBuilder(this, buildContext) - .params( - CreatePollEntryPoint.Params( - timelineMode = navTarget.timelineMode, - mode = CreatePollMode.EditPoll(eventId = navTarget.eventId) - ) - ) - .build() + createPollEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = CreatePollEntryPoint.Params( + timelineMode = navTarget.timelineMode, + mode = CreatePollMode.EditPoll(eventId = navTarget.eventId) + ), + ) } NavTarget.PinnedMessagesList -> { val callback = object : PinnedMessagesListNode.Callback { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 1df6fc25f1..774f38acf8 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -24,6 +24,7 @@ import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.impl.pinned.banner.createPinnedEventsTimelineProvider import io.element.android.features.messages.impl.timeline.createTimelineController import io.element.android.features.poll.api.create.CreatePollEntryPoint +import io.element.android.features.poll.api.create.CreatePollEntryPoint.Params import io.element.android.libraries.dateformatter.test.FakeDateFormatter import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -65,13 +66,21 @@ class DefaultMessagesEntryPointTest { roomListService = FakeRoomListService(), sessionId = A_SESSION_ID, sendLocationEntryPoint = object : SendLocationEntryPoint { - override fun builder(timelineMode: Timeline.Mode) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + timelineMode: Timeline.Mode, + ) = lambdaError() }, showLocationEntryPoint = object : ShowLocationEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs) = lambdaError() }, createPollEntryPoint = object : CreatePollEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + ) = lambdaError() }, elementCallEntryPoint = object : ElementCallEntryPoint { override fun startCall(callType: CallType) = lambdaError() @@ -89,10 +98,21 @@ class DefaultMessagesEntryPointTest { ) = lambdaError() }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback, + ) = lambdaError() }, forwardEntryPoint = object : ForwardEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ForwardEntryPoint.Params, + callback: ForwardEntryPoint.Callback, + ) = lambdaError() }, analyticsService = FakeAnalyticsService(), locationService = FakeLocationService(), @@ -124,10 +144,12 @@ class DefaultMessagesEntryPointTest { } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) val params = MessagesEntryPoint.Params(initialTarget) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MessagesFlowNode::class.java) assertThat(result.plugins).contains(MessagesEntryPoint.Params(initialTarget)) assertThat(result.plugins).contains(callback) diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt index 348f2f6c60..5d82fb1fd3 100644 --- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt +++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt @@ -18,10 +18,5 @@ interface CreatePollEntryPoint : FeatureEntryPoint { val mode: CreatePollMode, ) - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params): Node } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt index d8df6c2d01..652f5db20d 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.poll.impl.create import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.poll.api.create.CreatePollEntryPoint @@ -17,18 +16,10 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultCreatePollEntryPoint : CreatePollEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): CreatePollEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : CreatePollEntryPoint.NodeBuilder { - override fun params(params: CreatePollEntryPoint.Params): CreatePollEntryPoint.NodeBuilder { - plugins += CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode) - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: CreatePollEntryPoint.Params): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) + ) } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt index 0f8ae56887..6b43a06d01 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt @@ -53,14 +53,14 @@ class PollHistoryFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { is NavTarget.EditPoll -> { - createPollEntryPoint.nodeBuilder(this, buildContext) - .params( - CreatePollEntryPoint.Params( + createPollEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = CreatePollEntryPoint.Params( timelineMode = Timeline.Mode.Live, mode = CreatePollMode.EditPoll(eventId = navTarget.pollStartEventId) - ) ) - .build() + ) } NavTarget.Root -> { val callback = object : PollHistoryNode.Callback { diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt index bf77cb4535..464fae98a0 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt @@ -53,9 +53,11 @@ class DefaultCreatePollEntryPointTest { timelineMode = Timeline.Mode.Live, mode = CreatePollMode.NewPoll, ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + ) assertThat(result).isInstanceOf(CreatePollNode::class.java) assertThat(result.plugins).contains(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) } diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt index dfab33e837..fbec294962 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt @@ -34,7 +34,11 @@ class DefaultPollHistoryEntryPointTest { buildContext = buildContext, plugins = plugins, createPollEntryPoint = object : CreatePollEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: CreatePollEntryPoint.Params, + ) = lambdaError() } ) } diff --git a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt index b828fab0ff..d2e1db6b4b 100644 --- a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt +++ b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt @@ -31,13 +31,7 @@ interface PreferencesEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun navigateToAddAccount() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt index 7d32b3d8d9..ffc9a2b798 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.preferences.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.preferences.api.PreferencesEntryPoint @@ -17,24 +16,16 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultPreferencesEntryPoint : PreferencesEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PreferencesEntryPoint.NodeBuilder { - return object : PreferencesEntryPoint.NodeBuilder { - val plugins = ArrayList() - - override fun params(params: PreferencesEntryPoint.Params): PreferencesEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun callback(callback: PreferencesEntryPoint.Callback): PreferencesEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: PreferencesEntryPoint.Params, + callback: PreferencesEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback) + ) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index 8f3bc6eb5c..0fcabfad28 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -215,8 +215,10 @@ class PreferencesFlowNode( createNode(buildContext, listOf(notificationSettingsCallback)) } NavTarget.TroubleshootNotifications -> { - notificationTroubleShootEntryPoint.nodeBuilder(this, buildContext) - .callback(object : NotificationTroubleShootEntryPoint.Callback { + notificationTroubleShootEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = object : NotificationTroubleShootEntryPoint.Callback { override fun onDone() { if (backstack.canPop()) { backstack.pop() @@ -228,12 +230,14 @@ class PreferencesFlowNode( override fun navigateToBlockedUsers() { backstack.push(NavTarget.BlockedUsers) } - }) - .build() + }, + ) } NavTarget.PushHistory -> { - pushHistoryEntryPoint.nodeBuilder(this, buildContext) - .callback(object : PushHistoryEntryPoint.Callback { + pushHistoryEntryPoint.createNode( + this, + buildContext, + object : PushHistoryEntryPoint.Callback { override fun onDone() { if (backstack.canPop()) { backstack.pop() @@ -245,8 +249,8 @@ class PreferencesFlowNode( override fun navigateToEvent(roomId: RoomId, eventId: EventId) { callback.navigateToEvent(roomId, eventId) } - }) - .build() + }, + ) } is NavTarget.EditDefaultNotificationSetting -> { val callback = object : EditDefaultNotificationSettingNode.Callback { @@ -265,7 +269,16 @@ class PreferencesFlowNode( createNode(buildContext, listOf(inputs)) } NavTarget.LockScreenSettings -> { - lockScreenEntryPoint.nodeBuilder(this, buildContext, LockScreenEntryPoint.Target.Settings).build() + lockScreenEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + navTarget = LockScreenEntryPoint.Target.Settings, + callback = object : LockScreenEntryPoint.Callback { + override fun onSetupDone() { + // No op + } + } + ) } NavTarget.BlockedUsers -> { createNode(buildContext) @@ -276,9 +289,11 @@ class PreferencesFlowNode( callback.navigateToSecureBackup() } } - logoutEntryPoint.nodeBuilder(this, buildContext) - .callback(callBack) - .build() + logoutEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callBack, + ) } is NavTarget.OssLicenses -> { openSourceLicensesEntryPoint.createNode(this, buildContext) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt index deb15561de..e7c2f861d3 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt @@ -42,17 +42,35 @@ class DefaultPreferencesEntryPointTest { buildContext = buildContext, plugins = plugins, lockScreenEntryPoint = object : LockScreenEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + navTarget: LockScreenEntryPoint.Target, + callback: LockScreenEntryPoint.Callback, + ) = lambdaError() + override fun pinUnlockIntent(context: Context) = lambdaError() }, notificationTroubleShootEntryPoint = object : NotificationTroubleShootEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: NotificationTroubleShootEntryPoint.Callback, + ) = lambdaError() }, pushHistoryEntryPoint = object : PushHistoryEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: PushHistoryEntryPoint.Callback, + ) = lambdaError() }, logoutEntryPoint = object : LogoutEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: LogoutEntryPoint.Callback, + ) = lambdaError() }, openSourceLicensesEntryPoint = object : OpenSourceLicensesEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() @@ -72,10 +90,12 @@ class DefaultPreferencesEntryPointTest { val params = PreferencesEntryPoint.Params( initialElement = PreferencesEntryPoint.InitialTarget.NotificationSettings, ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(PreferencesFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt index 0eb84b529b..f0c73a9c0e 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt @@ -13,12 +13,7 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface BugReportEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt index 2893fa4d09..8749199fd1 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt @@ -77,11 +77,12 @@ class BugReportFlowNode( val params = ViewFolderEntryPoint.Params( rootPath = navTarget.rootPath, ) - viewFolderEntryPoint - .nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + viewFolderEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } } } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt index b4cfe28bc8..57b4e1a3e5 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.rageshake.impl.bugreport import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.rageshake.api.bugreport.BugReportEntryPoint @@ -17,18 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultBugReportEntryPoint : BugReportEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): BugReportEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : BugReportEntryPoint.NodeBuilder { - override fun callback(callback: BugReportEntryPoint.Callback): BugReportEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: BugReportEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt index 23d74f7247..bc4b805f2b 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt @@ -35,16 +35,23 @@ class DefaultBugReportEntryPointTest { buildContext = buildContext, plugins = plugins, viewFolderEntryPoint = object : ViewFolderEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ViewFolderEntryPoint.Params, + callback: ViewFolderEntryPoint.Callback, + ) = lambdaError() }, ) } val callback = object : BugReportEntryPoint.Callback { override fun onDone() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(BugReportFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt index 420bcfa97c..28931e9b0d 100644 --- a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt @@ -16,13 +16,7 @@ import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias interface RoomAliasResolverEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun params(params: Params): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onAliasResolved(data: ResolvedRoomAlias) diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt index df653437f1..b6e4fe6716 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.roomaliasresolver.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.roomaliasesolver.api.RoomAliasResolverEntryPoint @@ -17,23 +16,15 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomAliasResolverEntryPoint : RoomAliasResolverEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomAliasResolverEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : RoomAliasResolverEntryPoint.NodeBuilder { - override fun callback(callback: RoomAliasResolverEntryPoint.Callback): RoomAliasResolverEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun params(params: RoomAliasResolverEntryPoint.Params): RoomAliasResolverEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomAliasResolverEntryPoint.Params, + callback: RoomAliasResolverEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback), + ) } } diff --git a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt index 238b35017b..6e3dbb2ba8 100644 --- a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt +++ b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt @@ -43,10 +43,12 @@ class DefaultRoomAliasResolverEntryPointTest { val params = RoomAliasResolverEntryPoint.Params( roomAlias = A_ROOM_ALIAS ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomAliasResolverNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index 4b47f6b276..bdee602f55 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -43,11 +43,5 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { fun startForwardEventFlow(eventId: EventId) } - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } - - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 5679b8c361..8066cc70f5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.roomdetails.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint @@ -19,24 +18,16 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDetailsEntryPoint : RoomDetailsEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDetailsEntryPoint.NodeBuilder { - return object : RoomDetailsEntryPoint.NodeBuilder { - val plugins = ArrayList() - - override fun params(params: RoomDetailsEntryPoint.Params): RoomDetailsEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun callback(callback: RoomDetailsEntryPoint.Callback): RoomDetailsEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomDetailsEntryPoint.Params, + callback: RoomDetailsEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback) + ) } } 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 8ca5745ad1..3ed0ce9d92 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 @@ -303,13 +303,16 @@ class RoomDetailsFlowNode( // Cannot happen } } - mediaViewerEntryPoint.nodeBuilder(this, buildContext) - .avatar( - navTarget.name, - navTarget.avatarUrl, - ) - .callback(callback) - .build() + val params = mediaViewerEntryPoint.createParamsForAvatar( + filename = navTarget.name, + avatarUrl = navTarget.avatarUrl, + ) + mediaViewerEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } is NavTarget.PollHistory -> { pollHistoryEntryPoint.createNode(this, buildContext) @@ -332,9 +335,11 @@ class RoomDetailsFlowNode( callback.startForwardEventFlow(eventId) } } - mediaGalleryEntryPoint.nodeBuilder(this, buildContext) - .callback(callback) - .build() + mediaGalleryEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } is NavTarget.AdminSettings -> { @@ -361,10 +366,12 @@ class RoomDetailsFlowNode( callback.navigateToRoom(roomId, emptyList()) } } - return messagesEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(callback) - .build() + return messagesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } NavTarget.KnockRequestsList -> { knockRequestsListEntryPoint.createNode(this, buildContext) @@ -377,9 +384,11 @@ class RoomDetailsFlowNode( showDeviceVerifiedScreen = true, verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) - outgoingVerificationEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .callback(object : OutgoingVerificationEntryPoint.Callback { + outgoingVerificationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = object : OutgoingVerificationEntryPoint.Callback { override fun onDone() { backstack.pop() } @@ -391,18 +400,20 @@ class RoomDetailsFlowNode( override fun navigateToLearnMoreAboutEncryption() { learnMoreUrl.value = LearnMoreConfig.ENCRYPTION_URL } - }) - .build() + }, + ) } is NavTarget.ReportRoom -> { reportRoomEntryPoint.createNode(this, buildContext, room.roomId) } is NavTarget.SelectNewOwnersWhenLeaving -> { - changeRoomMemberRolesEntryPoint.builder(this, buildContext) - .room(room) - .listType(ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving) - .build() + changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + room = room, + listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, + ) } } } 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 62689489eb..aeee51a81d 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 @@ -101,16 +101,20 @@ class RolesAndPermissionsFlowNode( ) } is NavTarget.AdminList -> { - changeRoomMemberRolesEntryPoint.builder(this, buildContext) - .room(joinedRoom) - .listType(ChangeRoomMemberRolesListType.Admins) - .build() + changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + room = joinedRoom, + listType = ChangeRoomMemberRolesListType.Admins, + ) } is NavTarget.ModeratorList -> { - changeRoomMemberRolesEntryPoint.builder(this, buildContext) - .room(joinedRoom) - .listType(ChangeRoomMemberRolesListType.Moderators) - .build() + changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + room = joinedRoom, + listType = ChangeRoomMemberRolesListType.Moderators, + ) } is NavTarget.ChangeRoomPermissions -> { val inputs = ChangeRoomPermissionsNode.Inputs(navTarget.section) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index 0872567523..6de949d0a4 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -15,6 +15,7 @@ import com.google.common.truth.Truth.assertThat 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 @@ -25,6 +26,7 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData +import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint @@ -71,25 +73,50 @@ class DefaultRoomDetailsEntryPointTest { room = FakeJoinedRoom(), analyticsService = FakeAnalyticsService(), messagesEntryPoint = object : MessagesEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MessagesEntryPoint.Params, + callback: MessagesEntryPoint.Callback, + ) = lambdaError() }, knockRequestsListEntryPoint = object : KnockRequestsListEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback, + ) = lambdaError() }, mediaGalleryEntryPoint = object : MediaGalleryEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: MediaGalleryEntryPoint.Callback, + ) = lambdaError() }, outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: OutgoingVerificationEntryPoint.Params, + callback: OutgoingVerificationEntryPoint.Callback, + ) = lambdaError() }, reportRoomEntryPoint = object : ReportRoomEntryPoint { override fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId) = lambdaError() }, changeRoomMemberRolesEntryPoint = object : ChangeRoomMemberRolesEntryPoint { - override fun builder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + room: JoinedRoom, + listType: ChangeRoomMemberRolesListType, + ) = lambdaError() }, ) } @@ -102,10 +129,12 @@ class DefaultRoomDetailsEntryPointTest { val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomDetailsFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt index 7a1764106a..88cea23a05 100644 --- a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt @@ -13,12 +13,7 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface RoomDirectoryEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToRoom(roomDescription: RoomDescription) diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt index 6716bbbf97..a2f8921f66 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.roomdirectory.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.roomdirectory.api.RoomDirectoryEntryPoint @@ -18,18 +17,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDirectoryEntryPoint : RoomDirectoryEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomDirectoryEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : RoomDirectoryEntryPoint.NodeBuilder { - override fun callback(callback: RoomDirectoryEntryPoint.Callback): RoomDirectoryEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: RoomDirectoryEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt index 50d15b66aa..24205d6681 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt @@ -37,9 +37,11 @@ class DefaultRoomDirectoryEntryPointTest { val callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(RoomDirectoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt index 4fb2ab00cc..8361ea5580 100644 --- a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt +++ b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt @@ -32,15 +32,9 @@ interface SecureBackupEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() } - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt index 9e8138ca8c..b2c533b53b 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.securebackup.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.securebackup.api.SecureBackupEntryPoint @@ -17,23 +16,15 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSecureBackupEntryPoint : SecureBackupEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SecureBackupEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : SecureBackupEntryPoint.NodeBuilder { - override fun params(params: SecureBackupEntryPoint.Params): SecureBackupEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun callback(callback: SecureBackupEntryPoint.Callback): SecureBackupEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: SecureBackupEntryPoint.Params, + callback: SecureBackupEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback) + ) } } diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt index 7741b5141a..04d0030753 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt @@ -37,10 +37,12 @@ class DefaultSecureBackupEntryPointTest { override fun onDone() = lambdaError() } val params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(SecureBackupFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt index dd2889e10a..163bdf17af 100644 --- a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt +++ b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt @@ -12,21 +12,14 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint -import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.matrix.api.core.RoomId interface ShareEntryPoint : FeatureEntryPoint { - data class Params(val intent: Intent) : NodeInputs + data class Params(val intent: Intent) - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone(roomIds: List) } - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } } diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt index 5008c5dbfb..83f4317e0d 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.share.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.share.api.ShareEntryPoint import io.element.android.libraries.architecture.createNode @@ -17,23 +16,13 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultShareEntryPoint : ShareEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ShareEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : ShareEntryPoint.NodeBuilder { - override fun params(params: ShareEntryPoint.Params): ShareEntryPoint.NodeBuilder { - plugins += ShareNode.Inputs(intent = params.intent) - return this - } - - override fun callback(callback: ShareEntryPoint.Callback): ShareEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: ShareEntryPoint.Params, callback: ShareEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + ShareNode.Inputs(intent = params.intent), + callback, + ) + ) } } diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt index c36f5cc97d..977211ca05 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt @@ -66,10 +66,12 @@ class ShareNode( } } - return roomSelectEntryPoint.nodeBuilder(this, buildContext) - .callback(callback) - .params(RoomSelectEntryPoint.Params(mode = RoomSelectMode.Share)) - .build() + return roomSelectEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Share), + callback = callback, + ) } @Composable diff --git a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt index 66ee853d26..f93aac53ba 100644 --- a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt +++ b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt @@ -38,9 +38,12 @@ class DefaultShareEntryPointTest { plugins = plugins, presenterFactory = { createSharePresenter() }, roomSelectEntryPoint = object : RoomSelectEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { - lambdaError() - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomSelectEntryPoint.Params, + callback: RoomSelectEntryPoint.Callback, + ) = lambdaError() }, ) } @@ -50,10 +53,12 @@ class DefaultShareEntryPointTest { val params = ShareEntryPoint.Params( intent = Intent(), ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ShareNode::class.java) assertThat(result.plugins).contains(ShareNode.Inputs(params.intent)) assertThat(result.plugins).contains(callback) diff --git a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt index 9651327dc5..12824bb12f 100644 --- a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt +++ b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt @@ -17,10 +17,5 @@ interface SignedOutEntryPoint : FeatureEntryPoint { val sessionId: SessionId, ) - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params): Node } diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt index 3bbaebb9b1..8f89a8a0f9 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.signedout.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.signedout.api.SignedOutEntryPoint @@ -17,18 +16,10 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSignedOutEntryPoint : SignedOutEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SignedOutEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : SignedOutEntryPoint.NodeBuilder { - override fun params(params: SignedOutEntryPoint.Params): SignedOutEntryPoint.NodeBuilder { - plugins += SignedOutNode.Inputs(params.sessionId) - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: SignedOutEntryPoint.Params): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(SignedOutNode.Inputs(params.sessionId)) + ) } } diff --git a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt index 6366ba5ea1..64c48d9a5f 100644 --- a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt +++ b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt @@ -34,9 +34,11 @@ class DefaultSignedOutEntryPointTest { ) } val params = SignedOutEntryPoint.Params(A_SESSION_ID) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + ) assertThat(result).isInstanceOf(SignedOutNode::class.java) assertThat(result.plugins).contains(SignedOutNode.Inputs(params.sessionId)) } diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index e939a75d15..6b5bd7f892 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -15,16 +15,12 @@ import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.matrix.api.core.RoomId interface SpaceEntryPoint : FeatureEntryPoint { - fun nodeBuilder( + fun createNode( parentNode: Node, buildContext: BuildContext, - ): NodeBuilder - - interface NodeBuilder { - fun inputs(inputs: Inputs): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + inputs: Inputs, + callback: Callback + ): Node data class Inputs( val roomId: RoomId diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt index 5bcf2cf801..e68bbc89db 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.space.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.createNode @@ -17,22 +16,10 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultSpaceEntryPoint : SpaceEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): SpaceEntryPoint.NodeBuilder { - val plugins = mutableSetOf() - return object : SpaceEntryPoint.NodeBuilder { - override fun inputs(inputs: SpaceEntryPoint.Inputs): SpaceEntryPoint.NodeBuilder { - plugins.add(inputs) - return this - } - - override fun callback(callback: SpaceEntryPoint.Callback): SpaceEntryPoint.NodeBuilder { - plugins.add(callback) - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins = plugins.toList()) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(inputs, callback), + ) } } diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 3cf6e398f2..3fd260dd4f 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -48,10 +48,12 @@ class DefaultSpaceEntryPointTest { override fun navigateToRoomDetails() = lambdaError() override fun navigateToRoomMemberList() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .inputs(nodeInputs) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + inputs = nodeInputs, + callback = callback, + ) assertThat(result).isInstanceOf(SpaceFlowNode::class.java) assertThat(result.plugins).contains(nodeInputs) assertThat(result.plugins).contains(callback) diff --git a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt index ca200bed1a..0e530b3943 100644 --- a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt +++ b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt @@ -14,11 +14,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomIdOrAlias interface StartChatEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt index 801d5e0466..18df585fa0 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.startchat.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.startchat.api.StartChatEntryPoint @@ -17,18 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultStartChatEntryPoint : StartChatEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): StartChatEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : StartChatEntryPoint.NodeBuilder { - override fun callback(callback: StartChatEntryPoint.Callback): StartChatEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: StartChatEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt index 55ff1d46f9..ee30f4997c 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt @@ -79,9 +79,11 @@ class StartChatFlowNode( navigator.onRoomCreated(roomId.toRoomIdOrAlias(), emptyList()) } } - createRoomEntryPoint.nodeBuilder(parentNode = this, buildContext = buildContext) - .callback(callback) - .build() + createRoomEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + callback = callback, + ) } NavTarget.JoinByAddress -> { createNode(buildContext = buildContext, plugins = listOf(navigator)) diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt index 6da424c01a..2ead91b31c 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt @@ -35,7 +35,11 @@ class DefaultStartChatEntryPointTest { buildContext = buildContext, plugins = plugins, createRoomEntryPoint = object : CreateRoomEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: CreateRoomEntryPoint.Callback, + ) = lambdaError() }, ) } @@ -43,9 +47,11 @@ class DefaultStartChatEntryPointTest { override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = lambdaError() override fun navigateToRoomDirectory() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(StartChatFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt index 20f4a10955..4053efea0d 100644 --- a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt +++ b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt @@ -22,11 +22,5 @@ interface UserProfileEntryPoint : FeatureEntryPoint { fun navigateToRoom(roomId: RoomId) } - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } - - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt index 84f1b728e6..e69ef185c0 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.userprofile.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.userprofile.api.UserProfileEntryPoint @@ -17,23 +16,15 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultUserProfileEntryPoint : UserProfileEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): UserProfileEntryPoint.NodeBuilder { - return object : UserProfileEntryPoint.NodeBuilder { - val plugins = ArrayList() - - override fun params(params: UserProfileEntryPoint.Params): UserProfileEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun callback(callback: UserProfileEntryPoint.Callback): UserProfileEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: UserProfileEntryPoint.Params, + callback: UserProfileEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback), + ) } } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index 45b1e95f14..fd019c3587 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -107,22 +107,40 @@ class UserProfileFlowNode( // Cannot happen } } - mediaViewerEntryPoint.nodeBuilder(this, buildContext) - .avatar( - filename = navTarget.name, - avatarUrl = navTarget.avatarUrl - ) - .callback(callback) - .build() + val params = mediaViewerEntryPoint.createParamsForAvatar( + filename = navTarget.name, + avatarUrl = navTarget.avatarUrl, + ) + mediaViewerEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = callback, + ) } is NavTarget.VerifyUser -> { val params = OutgoingVerificationEntryPoint.Params( showDeviceVerifiedScreen = false, verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) - outgoingVerificationEntryPoint.nodeBuilder(this, buildContext) - .params(params) - .build() + outgoingVerificationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = params, + callback = object : OutgoingVerificationEntryPoint.Callback { + override fun navigateToLearnMoreAboutEncryption() { + // No op + } + + override fun onBack() { + // No op + } + + override fun onDone() { + // No op + } + } + ) } } } diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt index 493b9045cc..486f72f672 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt @@ -59,10 +59,21 @@ class DefaultUserProfileEntryPointTest { ) = lambdaError() }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback + ) = lambdaError() }, outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: OutgoingVerificationEntryPoint.Params, + callback: OutgoingVerificationEntryPoint.Callback, + ) = lambdaError() }, ) } @@ -74,10 +85,12 @@ class DefaultUserProfileEntryPointTest { val params = UserProfileEntryPoint.Params( userId = A_USER_ID, ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(UserProfileFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt index 9d90f33e8d..c72f7d4f6b 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt @@ -19,13 +19,7 @@ interface IncomingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Incoming, ) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun params(params: Params): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt index 0d4fe76156..36a04b43c7 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt @@ -20,13 +20,7 @@ interface OutgoingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Outgoing, ) : NodeInputs - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun params(params: Params): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun navigateToLearnMoreAboutEncryption() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt index b1d890b9ef..9d6d91c79a 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.verifysession.impl.incoming import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint @@ -17,23 +16,12 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): IncomingVerificationEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : IncomingVerificationEntryPoint.NodeBuilder { - override fun callback(callback: IncomingVerificationEntryPoint.Callback): IncomingVerificationEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun params(params: IncomingVerificationEntryPoint.Params): IncomingVerificationEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: IncomingVerificationEntryPoint.Params, + callback: IncomingVerificationEntryPoint.Callback, + ): Node { + return parentNode.createNode(buildContext, listOf(params, callback)) } } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt index a6b587308a..3328b1df1e 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.verifysession.impl.outgoing import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint @@ -17,23 +16,12 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): OutgoingVerificationEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : OutgoingVerificationEntryPoint.NodeBuilder { - override fun callback(callback: OutgoingVerificationEntryPoint.Callback): OutgoingVerificationEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun params(params: OutgoingVerificationEntryPoint.Params): OutgoingVerificationEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: OutgoingVerificationEntryPoint.Params, + callback: OutgoingVerificationEntryPoint.Callback, + ): Node { + return parentNode.createNode(buildContext, listOf(params, callback)) } } diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt index ad586fc7fb..437657b811 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt @@ -37,10 +37,12 @@ class DefaultIncomingVerificationEntryPointTest { val params = IncomingVerificationEntryPoint.Params( verificationRequest = anIncomingSessionVerificationRequest() ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(IncomingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt index 7e152383f9..80906bc86a 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt @@ -42,10 +42,12 @@ class DefaultOutgoingVerificationEntryPointTest { showDeviceVerifiedScreen = true, verificationRequest = anOutgoingSessionVerificationRequest(), ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(OutgoingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt index e7f6f580a7..1778ad0fc0 100644 --- a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt +++ b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt @@ -17,13 +17,7 @@ interface ViewFolderEntryPoint : FeatureEntryPoint { val rootPath: String, ) - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt index 2aa341d5b4..d1d7af9117 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.features.viewfolder.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.features.viewfolder.api.ViewFolderEntryPoint @@ -18,23 +17,13 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultViewFolderEntryPoint : ViewFolderEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ViewFolderEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : ViewFolderEntryPoint.NodeBuilder { - override fun params(params: ViewFolderEntryPoint.Params): ViewFolderEntryPoint.NodeBuilder { - plugins += ViewFolderFlowNode.Inputs(params.rootPath) - return this - } - - override fun callback(callback: ViewFolderEntryPoint.Callback): ViewFolderEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + ViewFolderFlowNode.Inputs(params.rootPath), + callback, + ), + ) } } diff --git a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt index 47d5992d8c..a8e643e1f5 100644 --- a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt +++ b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt @@ -40,10 +40,12 @@ class DefaultViewFolderEntryPointTest { val params = ViewFolderEntryPoint.Params( rootPath = "path", ) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ViewFolderFlowNode::class.java) assertThat(result.plugins).contains(ViewFolderFlowNode.Inputs(params.rootPath)) assertThat(result.plugins).contains(callback) diff --git a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt index 112293eb6a..8ce2023655 100644 --- a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt +++ b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt @@ -14,12 +14,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.SessionId interface AccountSelectEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onAccountSelected(sessionId: SessionId) diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt index bd35d3e6f0..21e26d376b 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.accountselect.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.accountselect.api.AccountSelectEntryPoint @@ -17,18 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAccountSelectEntryPoint : AccountSelectEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): AccountSelectEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : AccountSelectEntryPoint.NodeBuilder { - override fun callback(callback: AccountSelectEntryPoint.Callback): AccountSelectEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: AccountSelectEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt index 230248d421..b36fcb5ab8 100644 --- a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt +++ b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt @@ -35,9 +35,11 @@ class DefaultAccountSelectEntryPointTest { override fun onAccountSelected(sessionId: SessionId) = lambdaError() override fun onCancel() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(AccountSelectNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index 702ce181db..b3e832da22 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -14,12 +14,7 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.EventId interface MediaGalleryEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onBackClick() diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index da1227d66b..2b17b63b26 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -19,14 +19,9 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import kotlinx.parcelize.Parcelize interface MediaViewerEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun params(params: Params): NodeBuilder - fun avatar(filename: String, avatarUrl: String): NodeBuilder - fun build(): Node - } + fun createParamsForAvatar(filename: String, avatarUrl: String): Params interface Callback : Plugin { fun onDone() diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt index 75686b637a..515c04bc20 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.mediaviewer.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.architecture.createNode @@ -18,18 +17,10 @@ import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryFl @ContributesBinding(AppScope::class) class DefaultMediaGalleryEntryPoint : MediaGalleryEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaGalleryEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : MediaGalleryEntryPoint.NodeBuilder { - override fun callback(callback: MediaGalleryEntryPoint.Callback): MediaGalleryEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(callback), + ) } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt index da7c797bfb..7d683bf3df 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.mediaviewer.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.architecture.createNode @@ -22,52 +21,42 @@ import io.element.android.libraries.mediaviewer.impl.viewer.MediaViewerNode @ContributesBinding(AppScope::class) class DefaultMediaViewerEntryPoint : MediaViewerEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): MediaViewerEntryPoint.NodeBuilder { - val plugins = ArrayList() + override fun createParamsForAvatar(filename: String, avatarUrl: String): MediaViewerEntryPoint.Params { + // We need to fake the MimeType here for the viewer to work. + val mimeType = MimeTypes.Images + return MediaViewerEntryPoint.Params( + mode = MediaViewerEntryPoint.MediaViewerMode.SingleMedia, + eventId = null, + mediaInfo = MediaInfo( + filename = filename, + fileSize = null, + caption = null, + mimeType = mimeType, + formattedFileSize = "", + fileExtension = "", + senderId = UserId("@dummy:server.org"), + senderName = null, + senderAvatar = null, + dateSent = null, + dateSentFull = null, + waveform = null, + duration = null, + ), + mediaSource = MediaSource(url = avatarUrl), + thumbnailSource = null, + canShowInfo = false, + ) + } - return object : MediaViewerEntryPoint.NodeBuilder { - override fun callback(callback: MediaViewerEntryPoint.Callback): MediaViewerEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun params(params: MediaViewerEntryPoint.Params): MediaViewerEntryPoint.NodeBuilder { - plugins += params - return this - } - - override fun avatar(filename: String, avatarUrl: String): MediaViewerEntryPoint.NodeBuilder { - // We need to fake the MimeType here for the viewer to work. - val mimeType = MimeTypes.Images - return params( - MediaViewerEntryPoint.Params( - mode = MediaViewerEntryPoint.MediaViewerMode.SingleMedia, - eventId = null, - mediaInfo = MediaInfo( - filename = filename, - fileSize = null, - caption = null, - mimeType = mimeType, - formattedFileSize = "", - fileExtension = "", - senderId = UserId("@dummy:server.org"), - senderName = null, - senderAvatar = null, - dateSent = null, - dateSentFull = null, - waveform = null, - duration = null, - ), - mediaSource = MediaSource(url = avatarUrl), - thumbnailSource = null, - canShowInfo = false, - ) - ) - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback, + ): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf(params, callback), + ) } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index a57b9203f4..cc71b49dac 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -124,19 +124,19 @@ class MediaGalleryFlowNode( callback.forward(eventId) } } - mediaViewerEntryPoint.nodeBuilder(this, buildContext) - .params( - MediaViewerEntryPoint.Params( - mode = navTarget.mode, - eventId = navTarget.eventId, - mediaInfo = navTarget.mediaInfo, - mediaSource = navTarget.mediaSource, - thumbnailSource = navTarget.thumbnailSource, - canShowInfo = true, - ) - ) - .callback(callback) - .build() + mediaViewerEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + params = MediaViewerEntryPoint.Params( + mode = navTarget.mode, + eventId = navTarget.eventId, + mediaInfo = navTarget.mediaInfo, + mediaSource = navTarget.mediaSource, + thumbnailSource = navTarget.thumbnailSource, + canShowInfo = true, + ), + callback = callback, + ) } } } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 8d38615ff3..8b2574054b 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -36,7 +36,13 @@ class DefaultMediaGalleryEntryPointTest { buildContext = buildContext, plugins = plugins, mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext) = lambdaError() + override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback, + ) = lambdaError() }, ) } @@ -45,9 +51,11 @@ class DefaultMediaGalleryEntryPointTest { override fun viewInTimeline(eventId: EventId) = lambdaError() override fun forward(eventId: EventId) = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(MediaGalleryFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index ab31b5611e..b53fe7913c 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -75,10 +75,12 @@ class DefaultMediaViewerEntryPointTest { override fun forwardEvent(eventId: EventId) = lambdaError() } val params = createMediaViewerEntryPointParams() - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) @@ -118,13 +120,16 @@ class DefaultMediaViewerEntryPointTest { override fun viewInTimeline(eventId: EventId) = lambdaError() override fun forwardEvent(eventId: EventId) = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .avatar( - filename = "fn", - avatarUrl = "avatarUrl", - ) - .callback(callback) - .build() + val params = entryPoint.createParamsForAvatar( + filename = "fn", + avatarUrl = "avatarUrl", + ) + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains( MediaViewerEntryPoint.Params( diff --git a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt index a5d13609bd..7cc581d921 100644 --- a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt +++ b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt @@ -18,12 +18,7 @@ interface RoomSelectEntryPoint : FeatureEntryPoint { val mode: RoomSelectMode, ) - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - interface NodeBuilder { - fun params(params: Params): NodeBuilder - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onRoomSelected(roomIds: List) diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt index db17e3bd31..5ba20ffd8f 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.roomselect.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.SessionScope @@ -17,23 +16,13 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint @ContributesBinding(SessionScope::class) class DefaultRoomSelectEntryPoint : RoomSelectEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): RoomSelectEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : RoomSelectEntryPoint.NodeBuilder { - override fun params(params: RoomSelectEntryPoint.Params): RoomSelectEntryPoint.NodeBuilder { - plugins += RoomSelectNode.Inputs(mode = params.mode) - return this - } - - override fun callback(callback: RoomSelectEntryPoint.Callback): RoomSelectEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback): Node { + return parentNode.createNode( + buildContext = buildContext, + plugins = listOf( + RoomSelectNode.Inputs(mode = params.mode), + callback, + ) + ) } } diff --git a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt index bb9c15e7e6..0bd16f77b0 100644 --- a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt +++ b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt @@ -42,10 +42,12 @@ class DefaultRoomSelectEntryPointTest { override fun onCancel() = lambdaError() } val params = RoomSelectEntryPoint.Params(testMode) - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .params(params) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomSelectNode::class.java) assertThat(result.plugins).contains(RoomSelectNode.Inputs(params.mode)) assertThat(result.plugins).contains(callback) diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt index 034abe9400..5e5774cdba 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt @@ -13,12 +13,7 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface NotificationTroubleShootEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt index bd0753d5cd..6836bb59d0 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt @@ -15,12 +15,7 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId interface PushHistoryEntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt index e6af517069..f7b946647b 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.troubleshoot.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.architecture.createNode @@ -17,18 +16,7 @@ import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEnt @ContributesBinding(AppScope::class) class DefaultNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NotificationTroubleShootEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : NotificationTroubleShootEntryPoint.NodeBuilder { - override fun callback(callback: NotificationTroubleShootEntryPoint.Callback): NotificationTroubleShootEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt index 0347d911e1..505d4d2b61 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.troubleshoot.impl.history import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.architecture.createNode @@ -17,18 +16,7 @@ import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint @ContributesBinding(AppScope::class) class DefaultPushHistoryEntryPoint : PushHistoryEntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): PushHistoryEntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : PushHistoryEntryPoint.NodeBuilder { - override fun callback(callback: PushHistoryEntryPoint.Callback): PushHistoryEntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback): Node { + return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt index a506502fc1..1eef24fbcb 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt @@ -36,9 +36,11 @@ class DefaultNotificationTroubleShootEntryPointTest { override fun onDone() = lambdaError() override fun navigateToBlockedUsers() = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(TroubleshootNotificationsNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt index aa73649c62..b963183ecc 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt @@ -48,9 +48,11 @@ class DefaultPushHistoryEntryPointTest { override fun onDone() = lambdaError() override fun navigateToEvent(roomId: RoomId, eventId: EventId) = lambdaError() } - val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null)) - .callback(callback) - .build() + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(PushHistoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt index 37f0500444..bc38fb2cad 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt @@ -6,12 +6,7 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface ${FEATURE_NAME}EntryPoint : FeatureEntryPoint { - fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder - - interface NodeBuilder { - fun callback(callback: Callback): NodeBuilder - fun build(): Node - } + fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { // Add your callbacks diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt index 6eba997336..22dd0e1558 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt @@ -11,19 +11,7 @@ import dev.zacsweers.metro.AppScope @ContributesBinding(AppScope::class) class Default${FEATURE_NAME}EntryPoint() : ${FEATURE_NAME}EntryPoint { - override fun nodeBuilder(parentNode: Node, buildContext: BuildContext): ${FEATURE_NAME}EntryPoint.NodeBuilder { - val plugins = ArrayList() - - return object : ${FEATURE_NAME}EntryPoint.NodeBuilder { - - override fun callback(callback: ${FEATURE_NAME}EntryPoint.Callback): ${FEATURE_NAME}EntryPoint.NodeBuilder { - plugins += callback - return this - } - - override fun build(): Node { - return parentNode.createNode<${FEATURE_NAME}FlowNode>(buildContext, plugins) - } - } + override fun createNode(parentNode: Node, buildContext: BuildContext, callback: ${FEATURE_NAME}EntryPoint.Callback): Node { + return parentNode.createNode<${FEATURE_NAME}FlowNode>(buildContext, listOf(callback)) } } From 05c5f3c914aa0f37b7a59b5c9d6627521a00b690 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 13:02:20 +0100 Subject: [PATCH 260/898] Use context parameter for the parentNode --- .../android/appnav/LoggedInFlowNode.kt | 10 +----- .../android/appnav/NotLoggedInFlowNode.kt | 1 - .../io/element/android/appnav/RootFlowNode.kt | 3 -- .../android/appnav/room/RoomFlowNode.kt | 4 +-- .../room/joined/JoinedRoomLoadedFlowNode.kt | 4 --- .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 8 ++--- .../impl/DefaultAnalyticsEntryPoint.kt | 3 +- .../impl/DefaultAnalyticsEntryPointTest.kt | 4 ++- .../api/ChangeRoomMemberRolesEntryPoint.kt | 2 +- .../DefaultChangeRoomMemberRolesEntyPoint.kt | 2 +- ...faultChangeRoomMemberRolesEntyPointTest.kt | 13 ++++---- .../createroom/api/CreateRoomEntryPoint.kt | 3 +- .../impl/DefaultCreateRoomEntryPoint.kt | 3 +- .../impl/DefaultCreateRoomEntryPointTest.kt | 11 ++++--- .../DefaultAccountDeactivationEntryPoint.kt | 3 +- ...efaultAccountDeactivationEntryPointTest.kt | 4 ++- .../features/forward/api/ForwardEntryPoint.kt | 3 +- .../forward/impl/DefaultForwardEntryPoint.kt | 3 +- .../forward/impl/ForwardMessagesNode.kt | 1 - .../impl/DefaultForwardEntryPointTest.kt | 15 +++++---- .../ftue/impl/DefaultFtueEntryPoint.kt | 3 +- .../features/ftue/impl/FtueFlowNode.kt | 3 +- .../FtueSessionVerificationFlowNode.kt | 3 -- .../ftue/impl/DefaultFtueEntryPointTest.kt | 8 +++-- .../features/home/api/HomeEntryPoint.kt | 3 +- .../home/impl/DefaultHomeEntryPoint.kt | 3 +- .../features/home/impl/HomeFlowNode.kt | 5 ++- .../home/impl/DefaultHomeEntryPointTest.kt | 17 +++++----- .../DeclineInviteAndBlockEntryPoint.kt | 3 +- .../DefaultDeclineAndBlockEntryPoint.kt | 3 +- .../DefaultDeclineAndBlockEntryPointTest.kt | 11 ++++--- .../joinroom/api/JoinRoomEntryPoint.kt | 3 +- .../impl/DefaultJoinRoomEntryPoint.kt | 3 +- .../joinroom/impl/JoinRoomFlowNode.kt | 2 +- .../impl/DefaultJoinRoomEntryPointTest.kt | 7 ++-- .../DefaultKnockRequestsListEntryPoint.kt | 3 +- .../DefaultKnockRequestsListEntryPointTest.kt | 4 ++- .../DefaultOpenSourcesLicensesEntryPoint.kt | 3 +- ...efaultOpenSourcesLicensesEntryPointTest.kt | 4 ++- .../location/api/SendLocationEntryPoint.kt | 2 +- .../location/api/ShowLocationEntryPoint.kt | 3 +- .../send/DefaultSendLocationEntryPoint.kt | 2 +- .../show/DefaultShowLocationEntryPoint.kt | 3 +- .../send/DefaultSendLocationEntryPointTest.kt | 11 ++++--- .../show/DefaultShowLocationEntryPointTest.kt | 11 ++++--- .../lockscreen/api/LockScreenEntryPoint.kt | 4 ++- .../impl/DefaultLockScreenEntryPoint.kt | 2 +- .../impl/DefaultLockScreenEntryPointTest.kt | 26 ++++++++------- .../features/login/api/LoginEntryPoint.kt | 3 +- .../login/impl/DefaultLoginEntryPoint.kt | 3 +- .../login/impl/DefaultLoginEntryPointTest.kt | 13 ++++---- .../features/logout/api/LogoutEntryPoint.kt | 3 +- .../logout/impl/DefaultLogoutEntryPoint.kt | 3 +- .../impl/DefaultLogoutEntryPointTest.kt | 11 ++++--- .../messages/api/MessagesEntryPoint.kt | 3 +- .../impl/DefaultMessagesEntryPoint.kt | 3 +- .../messages/impl/MessagesFlowNode.kt | 9 ++--- .../impl/DefaultMessagesEntryPointTest.kt | 27 ++++++++------- .../poll/api/create/CreatePollEntryPoint.kt | 3 +- .../create/DefaultCreatePollEntryPoint.kt | 3 +- .../history/DefaultPollHistoryEntryPoint.kt | 3 +- .../poll/impl/history/PollHistoryFlowNode.kt | 1 - .../create/DefaultCreatePollEntryPointTest.kt | 11 ++++--- .../DefaultPollHistoryEntryPointTest.kt | 6 ++-- .../preferences/api/PreferencesEntryPoint.kt | 3 +- .../impl/DefaultPreferencesEntryPoint.kt | 2 +- .../preferences/impl/PreferencesFlowNode.kt | 12 +++---- .../impl/DefaultPreferencesEntryPointTest.kt | 27 ++++++++------- .../api/bugreport/BugReportEntryPoint.kt | 3 +- .../impl/bugreport/BugReportFlowNode.kt | 1 - .../bugreport/DefaultBugReportEntryPoint.kt | 3 +- .../DefaultBugReportEntryPointTest.kt | 13 ++++---- .../reportroom/api/ReportRoomEntryPoint.kt | 3 +- .../impl/DefaultReportRoomEntryPoint.kt | 3 +- .../impl/DefaultReportRoomEntryPointTest.kt | 4 ++- .../api/RoomAliasResolverEntryPoint.kt | 3 +- .../DefaultRoomAliasResolverEntryPoint.kt | 2 +- .../DefaultRoomAliasResolverEntryPointTest.kt | 13 ++++---- .../roomdetails/api/RoomDetailsEntryPoint.kt | 3 +- .../impl/DefaultRoomDetailsEntryPoint.kt | 2 +- .../roomdetails/impl/RoomDetailsFlowNode.kt | 11 ++----- .../RolesAndPermissionsFlowNode.kt | 2 -- .../impl/DefaultRoomDetailsEntryPointTest.kt | 33 +++++++++++-------- .../api/RoomDirectoryEntryPoint.kt | 3 +- .../impl/DefaultRoomDirectoryEntryPoint.kt | 3 +- .../DefaultRoomDirectoryEntryPointTest.kt | 11 ++++--- .../api/SecureBackupEntryPoint.kt | 3 +- .../impl/DefaultSecureBackupEntryPoint.kt | 2 +- .../impl/DefaultSecureBackupEntryPointTest.kt | 13 ++++---- .../features/share/api/ShareEntryPoint.kt | 3 +- .../share/impl/DefaultShareEntryPoint.kt | 3 +- .../android/features/share/impl/ShareNode.kt | 1 - .../share/impl/DefaultShareEntryPointTest.kt | 15 +++++---- .../signedout/api/SignedOutEntryPoint.kt | 3 +- .../impl/DefaultSignedOutEntryPoint.kt | 3 +- .../impl/DefaultSignedOutEntryPointTest.kt | 11 ++++--- .../features/space/api/SpaceEntryPoint.kt | 2 +- .../space/impl/DefaultSpaceEntryPoint.kt | 3 +- .../space/impl/DefaultSpaceEntryPointTest.kt | 13 ++++---- .../startchat/api/StartChatEntryPoint.kt | 3 +- .../impl/DefaultStartChatEntryPoint.kt | 3 +- .../startchat/impl/StartChatFlowNode.kt | 1 - .../impl/DefaultStartChatEntryPointTest.kt | 13 ++++---- .../userprofile/api/UserProfileEntryPoint.kt | 3 +- .../impl/DefaultUserProfileEntryPoint.kt | 2 +- .../userprofile/impl/UserProfileFlowNode.kt | 2 -- .../impl/DefaultUserProfileEntryPointTest.kt | 17 +++++----- .../api/IncomingVerificationEntryPoint.kt | 3 +- .../api/OutgoingVerificationEntryPoint.kt | 3 +- .../DefaultIncomingVerificationEntryPoint.kt | 2 +- .../DefaultOutgoingVerificationEntryPoint.kt | 2 +- ...faultIncomingVerificationEntryPointTest.kt | 13 ++++---- ...faultOutgoingVerificationEntryPointTest.kt | 13 ++++---- .../viewfolder/api/ViewFolderEntryPoint.kt | 3 +- .../impl/DefaultViewFolderEntryPoint.kt | 3 +- .../impl/DefaultViewFolderEntryPointTest.kt | 13 ++++---- .../api/AccountSelectEntryPoint.kt | 3 +- .../impl/DefaultAccountSelectEntryPoint.kt | 3 +- .../DefaultAccountSelectEntryPointTest.kt | 11 ++++--- .../architecture/FeatureEntryPoint.kt | 3 +- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 3 +- .../mediaviewer/api/MediaViewerEntryPoint.kt | 3 +- .../impl/DefaultMediaGalleryEntryPoint.kt | 3 +- .../impl/DefaultMediaViewerEntryPoint.kt | 2 +- .../impl/gallery/root/MediaGalleryFlowNode.kt | 1 - .../impl/DefaultMediaGalleryEntryPointTest.kt | 13 ++++---- .../impl/DefaultMediaViewerEntryPointTest.kt | 26 ++++++++------- .../roomselect/api/RoomSelectEntryPoint.kt | 3 +- .../impl/DefaultRoomSelectEntryPoint.kt | 3 +- .../impl/DefaultRoomSelectEntryPointTest.kt | 13 ++++---- .../api/NotificationTroubleShootEntryPoint.kt | 3 +- .../troubleshoot/api/PushHistoryEntryPoint.kt | 3 +- ...faultNotificationTroubleShootEntryPoint.kt | 3 +- .../history/DefaultPushHistoryEntryPoint.kt | 3 +- ...tNotificationTroubleShootEntryPointTest.kt | 11 ++++--- .../DefaultPushHistoryEntryPointTest.kt | 11 ++++--- ...Template Module Feature Entry Point API.kt | 3 +- ...te Module Feature Entry Point Flow Impl.kt | 4 +-- 138 files changed, 450 insertions(+), 375 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index ae61a03281..34815a55a1 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -334,7 +334,6 @@ class LoggedInFlowNode( } } homeEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) @@ -391,7 +390,6 @@ class LoggedInFlowNode( } } userProfileEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = UserProfileEntryPoint.Params(userId = navTarget.userId), callback = callback, @@ -421,7 +419,6 @@ class LoggedInFlowNode( } val inputs = PreferencesEntryPoint.Params(navTarget.initialElement) preferencesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = inputs, callback = callback, @@ -439,14 +436,12 @@ class LoggedInFlowNode( } startChatEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) } is NavTarget.SecureBackup -> { secureBackupEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(initialElement = navTarget.initialElement), callback = object : SecureBackupEntryPoint.Callback { @@ -457,11 +452,10 @@ class LoggedInFlowNode( ) } NavTarget.Ftue -> { - ftueEntryPoint.createNode(this, buildContext) + ftueEntryPoint.createNode(buildContext) } NavTarget.RoomDirectory -> { roomDirectoryEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) { @@ -478,7 +472,6 @@ class LoggedInFlowNode( } is NavTarget.IncomingShare -> { shareEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = ShareEntryPoint.Params(intent = navTarget.intent), callback = object : ShareEntryPoint.Callback { @@ -493,7 +486,6 @@ class LoggedInFlowNode( } is NavTarget.IncomingVerificationRequest -> { incomingVerificationEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = IncomingVerificationEntryPoint.Params(navTarget.data), callback = object : IncomingVerificationEntryPoint.Callback { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index b372155bd3..4ca9a2db17 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -84,7 +84,6 @@ class NotLoggedInFlowNode( } } loginEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = LoginEntryPoint.Params( accountProvider = inputs.loginParams?.accountProvider, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index bdad3c2ab0..e1322d0bbe 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -250,7 +250,6 @@ class RootFlowNode( } is NavTarget.SignedOutFlow -> { signedOutEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = SignedOutEntryPoint.Params( sessionId = navTarget.sessionId, @@ -265,7 +264,6 @@ class RootFlowNode( } } bugReportEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) @@ -294,7 +292,6 @@ class RootFlowNode( } } accountSelectEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 6283dbb3f9..602979edca 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -181,7 +181,6 @@ class RoomFlowNode( } val params = Params(navTarget.roomAlias) roomAliasResolverEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -195,7 +194,7 @@ class RoomFlowNode( serverNames = navTarget.serverNames, trigger = navTarget.trigger, ) - joinRoomEntryPoint.createNode(this, buildContext, inputs) + joinRoomEntryPoint.createNode(buildContext, inputs) } is NavTarget.JoinedRoom -> { val roomFlowNodeCallback = plugins() @@ -208,7 +207,6 @@ class RoomFlowNode( is NavTarget.JoinedSpace -> { val spaceCallback = plugins().single() spaceEntryPoint.createNode( - parentNode = this, buildContext = buildContext, inputs = SpaceEntryPoint.Inputs(roomId = navTarget.spaceId), callback = spaceCallback, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 16eaff89b1..af0ed4c919 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -141,7 +141,6 @@ class JoinedRoomLoadedFlowNode( } } return roomDetailsEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = RoomDetailsEntryPoint.Params(initialTarget), callback = callback, @@ -180,7 +179,6 @@ class JoinedRoomLoadedFlowNode( } } forwardEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -204,7 +202,6 @@ class JoinedRoomLoadedFlowNode( } } return spaceEntryPoint.createNode( - parentNode = this, buildContext = buildContext, inputs = SpaceEntryPoint.Inputs(roomId = inputs.room.roomId), callback = callback, @@ -240,7 +237,6 @@ class JoinedRoomLoadedFlowNode( MessagesEntryPoint.InitialTarget.Messages(navTarget.focusedEventId) ) return messagesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index f3ba7a8ad7..91e8a597de 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -54,8 +54,8 @@ class JoinedRoomLoadedFlowNodeTest { var parameters: MessagesEntryPoint.Params? = null var callback: MessagesEntryPoint.Callback? = null + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback, @@ -77,8 +77,8 @@ class JoinedRoomLoadedFlowNodeTest { private class FakeRoomDetailsEntryPoint : RoomDetailsEntryPoint { var nodeId: String? = null + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: RoomDetailsEntryPoint.Params, callback: RoomDetailsEntryPoint.Callback, @@ -90,8 +90,8 @@ class JoinedRoomLoadedFlowNodeTest { private class FakeSpaceEntryPoint : SpaceEntryPoint { var nodeId: String? = null + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback, @@ -101,8 +101,8 @@ class JoinedRoomLoadedFlowNodeTest { } private class FakeForwardEntryPoint : ForwardEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback, diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt index af59c94e0a..09dd1d0181 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAnalyticsEntryPoint : AnalyticsEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt index b5ec819632..e87473a447 100644 --- a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt +++ b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt @@ -33,7 +33,9 @@ class DefaultAnalyticsEntryPointTest { ) ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(AnalyticsOptInNode::class.java) } } 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 index 72c5de5bfe..d21829d695 100644 --- 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 @@ -15,8 +15,8 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.JoinedRoom fun interface ChangeRoomMemberRolesEntryPoint : FeatureEntryPoint { + context(parentNode: Node) fun createNode( - parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, 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 index 4bdce08e9a..a3180c9828 100644 --- 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 @@ -18,8 +18,8 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) class DefaultChangeRoomMemberRolesEntyPoint : ChangeRoomMemberRolesEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt index 6f17a5025d..c438c5d0e4 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt @@ -31,12 +31,13 @@ class DefaultChangeRoomMemberRolesEntyPointTest { } val room = FakeJoinedRoom() val listType = ChangeRoomMemberRolesListType.Admins - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - room = FakeJoinedRoom(), - listType = listType, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + room = FakeJoinedRoom(), + listType = listType, + ) + } assertThat(result).isInstanceOf(ChangeRoomMemberRolesRootNode::class.java) // Search for the Inputs plugin val input = result.plugins.filterIsInstance().single() diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt index f30cbd9c91..1a5a1bef5c 100644 --- a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt @@ -14,7 +14,8 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface CreateRoomEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onRoomCreated(roomId: RoomId) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt index 819cfd1208..ab00e6402f 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultCreateRoomEntryPoint : CreateRoomEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt index 4690b5b7f3..5d415c5d44 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt @@ -38,11 +38,12 @@ class DefaultCreateRoomEntryPointTest { val callback = object : CreateRoomEntryPoint.Callback { override fun onRoomCreated(roomId: RoomId) = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result.plugins).contains(callback) } } diff --git a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt index a7c0d50dbe..788cc393ed 100644 --- a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt +++ b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt b/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt index 05ad52efe9..1e8dfe36cc 100644 --- a/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt +++ b/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt @@ -28,7 +28,9 @@ class DefaultAccountDeactivationEntryPointTest { presenter = createPresenter(), ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(AccountDeactivationNode::class.java) } } diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt index d20d9a8f70..1de948dea3 100644 --- a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt @@ -26,5 +26,6 @@ interface ForwardEntryPoint : FeatureEntryPoint { val timelineProvider: TimelineProvider, ) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt index faa0787419..7cf20c017f 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultForwardEntryPoint : ForwardEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index a38f71264b..f033e97694 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -71,7 +71,6 @@ class ForwardMessagesNode( } return roomSelectEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Forward), callback = callback, diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index 6b0927cbfe..76cd3c0a2f 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -39,8 +39,8 @@ class DefaultForwardEntryPointTest { plugins = plugins, presenterFactory = { _, _ -> createForwardMessagesPresenter() }, roomSelectEntryPoint = object : RoomSelectEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback, @@ -55,12 +55,13 @@ class DefaultForwardEntryPointTest { eventId = AN_EVENT_ID, timelineProvider = FakeTimelineProvider(), ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(ForwardMessagesNode::class.java) assertThat(result.plugins).contains( ForwardMessagesNode.Inputs( diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt index c480d329a8..184e3bb802 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultFtueEntryPoint : FtueEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt index 7c045f0150..779e16f310 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt @@ -102,7 +102,7 @@ class FtueFlowNode( createNode(buildContext, listOf(callback)) } NavTarget.AnalyticsOptIn -> { - analyticsEntryPoint.createNode(this, buildContext) + analyticsEntryPoint.createNode(buildContext) } NavTarget.LockScreenSetup -> { val callback = object : LockScreenEntryPoint.Callback { @@ -111,7 +111,6 @@ class FtueFlowNode( } } lockScreenEntryPoint.createNode( - parentNode = this, buildContext = buildContext, navTarget = LockScreenEntryPoint.Target.Setup, callback = callback, diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt index 13da4a0748..974c66d243 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt @@ -104,7 +104,6 @@ class FtueSessionVerificationFlowNode( } is NavTarget.UseAnotherDevice -> { outgoingVerificationEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = OutgoingVerificationEntryPoint.Params( showDeviceVerifiedScreen = true, @@ -128,7 +127,6 @@ class FtueSessionVerificationFlowNode( } is NavTarget.EnterRecoveryKey -> { secureBackupEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey), callback = secureBackupEntryPointCallback @@ -136,7 +134,6 @@ class FtueSessionVerificationFlowNode( } is NavTarget.ResetIdentity -> { secureBackupEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity), callback = object : SecureBackupEntryPoint.Callback { diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt index c528d9c8b9..ccb4cbe200 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt @@ -35,11 +35,11 @@ class DefaultFtueEntryPointTest { FtueFlowNode( buildContext = buildContext, plugins = plugins, - analyticsEntryPoint = { _, _ -> lambdaError() }, + analyticsEntryPoint = { _ -> lambdaError() }, defaultFtueService = createDefaultFtueService(), lockScreenEntryPoint = object : LockScreenEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target, callback: LockScreenEntryPoint.Callback, @@ -51,7 +51,9 @@ class DefaultFtueEntryPointTest { }, ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(FtueFlowNode::class.java) } } diff --git a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt index 3f8da8bc1a..101f631cd9 100644 --- a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt +++ b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt @@ -14,7 +14,8 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface HomeEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToRoom(roomId: RoomId) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt index a85c5df07d..34c9b5f0d9 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultHomeEntryPoint : HomeEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: HomeEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: HomeEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } 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 7e542b5651..e3d1df3849 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 @@ -186,12 +186,11 @@ class HomeFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - is NavTarget.ReportRoom -> reportRoomEntryPoint.createNode(this, buildContext, navTarget.roomId) - is NavTarget.DeclineInviteAndBlockUser -> declineInviteAndBlockUserEntryPoint.createNode(this, buildContext, navTarget.inviteData) + is NavTarget.ReportRoom -> reportRoomEntryPoint.createNode(buildContext, navTarget.roomId) + is NavTarget.DeclineInviteAndBlockUser -> declineInviteAndBlockUserEntryPoint.createNode(buildContext, navTarget.inviteData) is NavTarget.SelectNewOwnersWhenLeavingRoom -> { val room = runBlocking { matrixClient.getJoinedRoom(navTarget.roomId) } ?: error("Room ${navTarget.roomId} not found") changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, room = room, listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt index 489234a827..47574cd639 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt @@ -34,9 +34,9 @@ class DefaultHomeEntryPointTest { analyticsService = FakeAnalyticsService(), acceptDeclineInviteView = { _, _, _, _ -> lambdaError() }, directLogoutView = { _ -> lambdaError() }, - reportRoomEntryPoint = { _, _, _ -> lambdaError() }, - declineInviteAndBlockUserEntryPoint = { _, _, _ -> lambdaError() }, - changeRoomMemberRolesEntryPoint = { _, _, _, _ -> lambdaError() }, + reportRoomEntryPoint = { _, _ -> lambdaError() }, + declineInviteAndBlockUserEntryPoint = { _, _ -> lambdaError() }, + changeRoomMemberRolesEntryPoint = { _, _, _ -> lambdaError() }, leaveRoomRenderer = { _, _, _ -> lambdaError() }, ) } @@ -49,11 +49,12 @@ class DefaultHomeEntryPointTest { override fun navigateToRoomSettings(roomId: RoomId) = lambdaError() override fun navigateToBugReport() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(HomeFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt b/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt index 8517fe2786..44b88f627b 100644 --- a/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt +++ b/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt @@ -13,5 +13,6 @@ import io.element.android.features.invite.api.InviteData import io.element.android.libraries.architecture.FeatureEntryPoint fun interface DeclineInviteAndBlockEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, inviteData: InviteData): Node } diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt index e76d173a90..a356636cad 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultDeclineAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inviteData: InviteData): Node { val inputs = DeclineAndBlockNode.Inputs(inviteData) return parentNode.createNode(buildContext, plugins = listOf(inputs)) } diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt index 7cdf208b9a..c1919831c0 100644 --- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt +++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt @@ -30,11 +30,12 @@ class DefaultDeclineAndBlockEntryPointTest { ) } val inviteData = anInviteData() - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - inviteData = inviteData - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + inviteData = inviteData + ) + } assertThat(result).isInstanceOf(DeclineAndBlockNode::class.java) assertThat(result.plugins).contains(DeclineAndBlockNode.Inputs(inviteData)) } diff --git a/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt b/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt index 9af4703949..7b4f9a8ac0 100644 --- a/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt +++ b/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt @@ -18,7 +18,8 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import java.util.Optional interface JoinRoomEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, inputs: Inputs): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, inputs: Inputs): Node data class Inputs( val roomId: RoomId, diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt index c7e5e1d11f..eb1deb4897 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultJoinRoomEntryPoint : JoinRoomEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: JoinRoomEntryPoint.Inputs): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inputs: JoinRoomEntryPoint.Inputs): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(inputs) diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt index f501752544..92cd023bc9 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt @@ -64,7 +64,7 @@ class JoinRoomFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - is NavTarget.DeclineInviteAndBlockUser -> declineAndBlockEntryPoint.createNode(this, buildContext, navTarget.inviteData) + is NavTarget.DeclineInviteAndBlockUser -> declineAndBlockEntryPoint.createNode(buildContext, navTarget.inviteData) NavTarget.Root -> rootNode(buildContext) } } diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt index af75fd528c..4cf41f1dbc 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt @@ -41,7 +41,8 @@ class DefaultJoinRoomEntryPointTest { presenterFactory = { _, _, _, _, _ -> createJoinRoomPresenter() }, acceptDeclineInviteView = { _, _, _, _ -> lambdaError() }, declineAndBlockEntryPoint = object : DeclineInviteAndBlockEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inviteData: InviteData) = lambdaError() } ) } @@ -52,7 +53,9 @@ class DefaultJoinRoomEntryPointTest { serverNames = emptyList(), trigger = JoinedRoom.Trigger.RoomDirectory, ) - val result = entryPoint.createNode(parentNode, BuildContext.root(null), inputs) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null), inputs) + } assertThat(result).isInstanceOf(JoinRoomFlowNode::class.java) assertThat(result.plugins).contains(inputs) } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt index c77065324d..a3186072f3 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt b/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt index b6b6d766c7..2e6a8426e8 100644 --- a/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt +++ b/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt @@ -30,7 +30,9 @@ class DefaultKnockRequestsListEntryPointTest { presenter = createKnockRequestsListPresenter(), ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(KnockRequestsListNode::class.java) } } diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt index 77c56b6d3a..4839c1a8cf 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultOpenSourcesLicensesEntryPoint : OpenSourceLicensesEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt b/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt index 3209e28fe6..9fbd370c55 100644 --- a/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt +++ b/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt @@ -31,7 +31,9 @@ class DefaultOpenSourcesLicensesEntryPointTest { plugins = plugins, ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(DependenciesFlowNode::class.java) } } diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt index afd1b895b5..f522992872 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt @@ -18,8 +18,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline * Allows a user to share a location message within a room. */ interface SendLocationEntryPoint : FeatureEntryPoint { + context(parentNode: Node) fun createNode( - parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ): Node diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt index 7ae28a1e92..2bf4ac5871 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt @@ -15,5 +15,6 @@ import io.element.android.libraries.architecture.NodeInputs interface ShowLocationEntryPoint : FeatureEntryPoint { data class Inputs(val location: Location, val description: String?) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, inputs: Inputs): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, inputs: Inputs): Node } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index 2a8e9309a1..6d14dc06dc 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -17,8 +17,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline @ContributesBinding(AppScope::class) class DefaultSendLocationEntryPoint : SendLocationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ): Node { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt index 75a177d21a..ab2c45eb1a 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultShowLocationEntryPoint : ShowLocationEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { return parentNode.createNode(buildContext, listOf(inputs)) } } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt index 4cac3df6a2..ff3cc57dcf 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt @@ -47,11 +47,12 @@ class DefaultSendLocationEntryPointTest { ) } val timelineMode = Timeline.Mode.Live - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - timelineMode = timelineMode, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + timelineMode = timelineMode, + ) + } assertThat(result).isInstanceOf(SendLocationNode::class.java) assertThat(result.plugins).contains(SendLocationNode.Inputs(timelineMode)) } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt index d31ef0c0e4..b7d7a1be44 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt @@ -47,11 +47,12 @@ class DefaultShowLocationEntryPointTest { location = Location(37.4219983, -122.084, 10f), description = "My location", ) - val result = entryPoint.createNode( - parentNode, - BuildContext.root(null), - inputs = inputs, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + inputs = inputs, + ) + } assertThat(result).isInstanceOf(ShowLocationNode::class.java) assertThat(result.plugins).contains(inputs) } diff --git a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt index c7741ac197..c5c187db83 100644 --- a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt +++ b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt @@ -15,7 +15,9 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LockScreenEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, navTarget: Target, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, navTarget: Target, callback: Callback): Node + fun pinUnlockIntent(context: Context): Intent interface Callback : Plugin { diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt index 39430c5ad1..8651480c37 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt @@ -19,8 +19,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLockScreenEntryPoint : LockScreenEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target, callback: LockScreenEntryPoint.Callback, diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt index 15473fe43c..425f5a70e3 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt @@ -37,12 +37,13 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Setup - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - navTarget = navTarget, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) + } assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Setup)) assertThat(result.plugins).contains(callback) @@ -61,12 +62,13 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Settings - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - navTarget = navTarget, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) + } assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Settings)) assertThat(result.plugins).contains(callback) diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt index e2e60af1ed..b9f4228162 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt @@ -22,5 +22,6 @@ interface LoginEntryPoint : FeatureEntryPoint { fun navigateToBugReport() } - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt index a95b7b54a7..327ec5036a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLoginEntryPoint : LoginEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: LoginEntryPoint.Params, callback: LoginEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: LoginEntryPoint.Params, callback: LoginEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt index 4a6f6cae22..2396831b1d 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt @@ -45,12 +45,13 @@ class DefaultLoginEntryPointTest { accountProvider = "ac", loginHint = "lh", ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(LoginFlowNode::class.java) assertThat(result.plugins).contains(LoginFlowNode.Params(params.accountProvider, params.loginHint)) assertThat(result.plugins).contains(callback) diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt index 41ce730b1c..207f92a489 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt @@ -13,7 +13,8 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LogoutEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToSecureBackup() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index 4ca840ad04..42c11cf0d6 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLogoutEntryPoint : LogoutEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: LogoutEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: LogoutEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt index dd4b3b36fc..b319a30e44 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt @@ -34,11 +34,12 @@ class DefaultLogoutEntryPointTest { val callback = object : LogoutEntryPoint.Callback { override fun navigateToSecureBackup() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(LogoutNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 46e20ab2d7..6f883bb683 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -41,7 +41,8 @@ interface MessagesEntryPoint : FeatureEntryPoint { data class Params(val initialTarget: InitialTarget) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node } interface MessagesEntryPointNode { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt index c48fafb6a2..90784912e6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultMessagesEntryPoint : MessagesEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(params, callback)) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index d8a684b8dd..0c700d5695 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -321,7 +321,6 @@ class MessagesFlowNode( } } mediaViewerEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback @@ -337,7 +336,7 @@ class MessagesFlowNode( } is NavTarget.LocationViewer -> { val inputs = ShowLocationEntryPoint.Inputs(navTarget.location, navTarget.description) - showLocationEntryPoint.createNode(this, buildContext, inputs) + showLocationEntryPoint.createNode(buildContext, inputs) } is NavTarget.EventDebugInfo -> { val inputs = EventDebugInfoNode.Inputs(navTarget.eventId, navTarget.debugInfo) @@ -359,7 +358,6 @@ class MessagesFlowNode( } } forwardEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -371,14 +369,12 @@ class MessagesFlowNode( } is NavTarget.SendLocation -> { sendLocationEntryPoint.createNode( - parentNode = this, buildContext = buildContext, timelineMode = navTarget.timelineMode, ) } is NavTarget.CreatePoll -> { createPollEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = navTarget.timelineMode, @@ -388,7 +384,6 @@ class MessagesFlowNode( } is NavTarget.EditPoll -> { createPollEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = navTarget.timelineMode, @@ -428,7 +423,7 @@ class MessagesFlowNode( createNode(buildContext, plugins = listOf(callback)) } NavTarget.KnockRequestsList -> { - knockRequestsListEntryPoint.createNode(this, buildContext) + knockRequestsListEntryPoint.createNode(buildContext) } is NavTarget.Thread -> { val inputs = ThreadedMessagesNode.Inputs( diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 774f38acf8..5032d324f7 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -66,18 +66,19 @@ class DefaultMessagesEntryPointTest { roomListService = FakeRoomListService(), sessionId = A_SESSION_ID, sendLocationEntryPoint = object : SendLocationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ) = lambdaError() }, showLocationEntryPoint = object : ShowLocationEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs) = lambdaError() }, createPollEntryPoint = object : CreatePollEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: Params, ) = lambdaError() @@ -99,16 +100,16 @@ class DefaultMessagesEntryPointTest { }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, ) = lambdaError() }, forwardEntryPoint = object : ForwardEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback, @@ -129,7 +130,8 @@ class DefaultMessagesEntryPointTest { pinnedEventsTimelineProvider = createPinnedEventsTimelineProvider(), timelineController = createTimelineController(), knockRequestsListEntryPoint = object : KnockRequestsListEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext) = lambdaError() }, dateFormatter = FakeDateFormatter(), coroutineDispatchers = testCoroutineDispatchers(), @@ -144,12 +146,13 @@ class DefaultMessagesEntryPointTest { } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) val params = MessagesEntryPoint.Params(initialTarget) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(MessagesFlowNode::class.java) assertThat(result.plugins).contains(MessagesEntryPoint.Params(initialTarget)) assertThat(result.plugins).contains(callback) diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt index 5d82fb1fd3..202ff9c7c1 100644 --- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt +++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt @@ -18,5 +18,6 @@ interface CreatePollEntryPoint : FeatureEntryPoint { val mode: CreatePollMode, ) - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params): Node } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt index 652f5db20d..5d3a6d66cb 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultCreatePollEntryPoint : CreatePollEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: CreatePollEntryPoint.Params): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: CreatePollEntryPoint.Params): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt index 7f867def0a..c309a5324e 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultPollHistoryEntryPoint : PollHistoryEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt index 6b43a06d01..56ae72e58f 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt @@ -54,7 +54,6 @@ class PollHistoryFlowNode( return when (navTarget) { is NavTarget.EditPoll -> { createPollEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = Timeline.Mode.Live, diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt index 464fae98a0..14c41f50cd 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt @@ -53,11 +53,12 @@ class DefaultCreatePollEntryPointTest { timelineMode = Timeline.Mode.Live, mode = CreatePollMode.NewPoll, ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + ) + } assertThat(result).isInstanceOf(CreatePollNode::class.java) assertThat(result.plugins).contains(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) } diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt index fbec294962..2e8e21f93f 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt @@ -34,15 +34,17 @@ class DefaultPollHistoryEntryPointTest { buildContext = buildContext, plugins = plugins, createPollEntryPoint = object : CreatePollEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: CreatePollEntryPoint.Params, ) = lambdaError() } ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null)) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null)) + } assertThat(result).isInstanceOf(PollHistoryFlowNode::class.java) } } diff --git a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt index d2e1db6b4b..af92b58cbb 100644 --- a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt +++ b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt @@ -31,7 +31,8 @@ interface PreferencesEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun navigateToAddAccount() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt index ffc9a2b798..338a3ff434 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultPreferencesEntryPoint : PreferencesEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: PreferencesEntryPoint.Params, callback: PreferencesEntryPoint.Callback, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index 0fcabfad28..ba5313dd7e 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -216,7 +216,6 @@ class PreferencesFlowNode( } NavTarget.TroubleshootNotifications -> { notificationTroubleShootEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = object : NotificationTroubleShootEntryPoint.Callback { override fun onDone() { @@ -235,9 +234,8 @@ class PreferencesFlowNode( } NavTarget.PushHistory -> { pushHistoryEntryPoint.createNode( - this, - buildContext, - object : PushHistoryEntryPoint.Callback { + buildContext = buildContext, + callback = object : PushHistoryEntryPoint.Callback { override fun onDone() { if (backstack.canPop()) { backstack.pop() @@ -270,7 +268,6 @@ class PreferencesFlowNode( } NavTarget.LockScreenSettings -> { lockScreenEntryPoint.createNode( - parentNode = this, buildContext = buildContext, navTarget = LockScreenEntryPoint.Target.Settings, callback = object : LockScreenEntryPoint.Callback { @@ -290,16 +287,15 @@ class PreferencesFlowNode( } } logoutEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callBack, ) } is NavTarget.OssLicenses -> { - openSourceLicensesEntryPoint.createNode(this, buildContext) + openSourceLicensesEntryPoint.createNode(buildContext) } NavTarget.AccountDeactivation -> { - accountDeactivationEntryPoint.createNode(this, buildContext) + accountDeactivationEntryPoint.createNode(buildContext) } } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt index e7c2f861d3..2a3d40b84a 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt @@ -42,8 +42,8 @@ class DefaultPreferencesEntryPointTest { buildContext = buildContext, plugins = plugins, lockScreenEntryPoint = object : LockScreenEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target, callback: LockScreenEntryPoint.Callback, @@ -52,31 +52,33 @@ class DefaultPreferencesEntryPointTest { override fun pinUnlockIntent(context: Context) = lambdaError() }, notificationTroubleShootEntryPoint = object : NotificationTroubleShootEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback, ) = lambdaError() }, pushHistoryEntryPoint = object : PushHistoryEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback, ) = lambdaError() }, logoutEntryPoint = object : LogoutEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, callback: LogoutEntryPoint.Callback, ) = lambdaError() }, openSourceLicensesEntryPoint = object : OpenSourceLicensesEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext) = lambdaError() }, accountDeactivationEntryPoint = object : AccountDeactivationEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext) = lambdaError() }, ) } @@ -90,12 +92,13 @@ class DefaultPreferencesEntryPointTest { val params = PreferencesEntryPoint.Params( initialElement = PreferencesEntryPoint.InitialTarget.NotificationSettings, ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(PreferencesFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt index f0c73a9c0e..a8fbf56b75 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt @@ -13,7 +13,8 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface BugReportEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt index 8749199fd1..af0c06054f 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt @@ -78,7 +78,6 @@ class BugReportFlowNode( rootPath = navTarget.rootPath, ) viewFolderEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt index 57b4e1a3e5..ffdaf41167 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultBugReportEntryPoint : BugReportEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: BugReportEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: BugReportEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt index bc4b805f2b..0294485a15 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt @@ -35,8 +35,8 @@ class DefaultBugReportEntryPointTest { buildContext = buildContext, plugins = plugins, viewFolderEntryPoint = object : ViewFolderEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback, @@ -47,11 +47,12 @@ class DefaultBugReportEntryPointTest { val callback = object : BugReportEntryPoint.Callback { override fun onDone() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(BugReportFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt b/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt index 1eff7f8206..27d8fea348 100644 --- a/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt +++ b/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt @@ -13,5 +13,6 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId fun interface ReportRoomEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, roomId: RoomId): Node } diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt index d2f9eb8d7e..a97f93d79e 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(AppScope::class) class DefaultReportRoomEntryPoint : ReportRoomEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, roomId: RoomId): Node { return parentNode.createNode(buildContext, plugins = listOf(ReportRoomNode.Inputs(roomId))) } } diff --git a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt index c9f850062e..16cd8d298f 100644 --- a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt +++ b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt @@ -32,7 +32,9 @@ class DefaultReportRoomEntryPointTest { } ) } - val result = entryPoint.createNode(parentNode, BuildContext.root(null), A_ROOM_ID) + val result = with(parentNode) { + entryPoint.createNode(BuildContext.root(null), A_ROOM_ID) + } assertThat(result).isInstanceOf(ReportRoomNode::class.java) assertThat(result.plugins).contains(ReportRoomNode.Inputs(A_ROOM_ID)) } diff --git a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt index 28931e9b0d..067eed7d65 100644 --- a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias interface RoomAliasResolverEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onAliasResolved(data: ResolvedRoomAlias) diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt index b6e4fe6716..405317d303 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomAliasResolverEntryPoint : RoomAliasResolverEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: RoomAliasResolverEntryPoint.Params, callback: RoomAliasResolverEntryPoint.Callback, diff --git a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt index 6e3dbb2ba8..f7cc1d57c6 100644 --- a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt +++ b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt @@ -43,12 +43,13 @@ class DefaultRoomAliasResolverEntryPointTest { val params = RoomAliasResolverEntryPoint.Params( roomAlias = A_ROOM_ALIAS ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(RoomAliasResolverNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index bdee602f55..ce03aca20a 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -43,5 +43,6 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { fun startForwardEventFlow(eventId: EventId) } - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 8066cc70f5..4f2fb1d741 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -18,8 +18,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDetailsEntryPoint : RoomDetailsEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: RoomDetailsEntryPoint.Params, callback: RoomDetailsEntryPoint.Callback, 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 3ed0ce9d92..ad70f0f0a0 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 @@ -308,14 +308,13 @@ class RoomDetailsFlowNode( avatarUrl = navTarget.avatarUrl, ) mediaViewerEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, ) } is NavTarget.PollHistory -> { - pollHistoryEntryPoint.createNode(this, buildContext) + pollHistoryEntryPoint.createNode(buildContext) } is NavTarget.MediaGallery -> { val callback = object : MediaGalleryEntryPoint.Callback { @@ -336,7 +335,6 @@ class RoomDetailsFlowNode( } } mediaGalleryEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) @@ -367,14 +365,13 @@ class RoomDetailsFlowNode( } } return messagesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, ) } NavTarget.KnockRequestsList -> { - knockRequestsListEntryPoint.createNode(this, buildContext) + knockRequestsListEntryPoint.createNode(buildContext) } NavTarget.SecurityAndPrivacy -> { createNode(buildContext) @@ -385,7 +382,6 @@ class RoomDetailsFlowNode( verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) outgoingVerificationEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = object : OutgoingVerificationEntryPoint.Callback { @@ -404,12 +400,11 @@ class RoomDetailsFlowNode( ) } is NavTarget.ReportRoom -> { - reportRoomEntryPoint.createNode(this, buildContext, room.roomId) + reportRoomEntryPoint.createNode(buildContext, room.roomId) } is NavTarget.SelectNewOwnersWhenLeaving -> { changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, room = room, listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, 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 aeee51a81d..0dee0c2a54 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 @@ -102,7 +102,6 @@ class RolesAndPermissionsFlowNode( } is NavTarget.AdminList -> { changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, room = joinedRoom, listType = ChangeRoomMemberRolesListType.Admins, @@ -110,7 +109,6 @@ class RolesAndPermissionsFlowNode( } is NavTarget.ModeratorList -> { changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, buildContext = buildContext, room = joinedRoom, listType = ChangeRoomMemberRolesListType.Moderators, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index 6de949d0a4..a20aa80daa 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -53,7 +53,8 @@ class DefaultRoomDetailsEntryPointTest { buildContext = buildContext, plugins = plugins, pollHistoryEntryPoint = object : PollHistoryEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext) = lambdaError() }, elementCallEntryPoint = object : ElementCallEntryPoint { override fun startCall(callType: CallType) = lambdaError() @@ -73,46 +74,49 @@ class DefaultRoomDetailsEntryPointTest { room = FakeJoinedRoom(), analyticsService = FakeAnalyticsService(), messagesEntryPoint = object : MessagesEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback, ) = lambdaError() }, knockRequestsListEntryPoint = object : KnockRequestsListEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext) = lambdaError() }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, ) = lambdaError() }, mediaGalleryEntryPoint = object : MediaGalleryEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback, ) = lambdaError() }, outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: OutgoingVerificationEntryPoint.Params, callback: OutgoingVerificationEntryPoint.Callback, ) = lambdaError() }, reportRoomEntryPoint = object : ReportRoomEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, roomId: RoomId) = lambdaError() + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, roomId: RoomId) = lambdaError() }, changeRoomMemberRolesEntryPoint = object : ChangeRoomMemberRolesEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, @@ -129,12 +133,13 @@ class DefaultRoomDetailsEntryPointTest { val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(RoomDetailsFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt index 88cea23a05..d290287c2c 100644 --- a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt @@ -13,7 +13,8 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface RoomDirectoryEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun navigateToRoom(roomDescription: RoomDescription) diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt index a2f8921f66..55804d3f68 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDirectoryEntryPoint : RoomDirectoryEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: RoomDirectoryEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: RoomDirectoryEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt index 24205d6681..332c89b2ae 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt @@ -37,11 +37,12 @@ class DefaultRoomDirectoryEntryPointTest { val callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(RoomDirectoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt index 8361ea5580..dbaa319034 100644 --- a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt +++ b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt @@ -32,7 +32,8 @@ interface SecureBackupEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt index b2c533b53b..49ea66dc79 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSecureBackupEntryPoint : SecureBackupEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: SecureBackupEntryPoint.Params, callback: SecureBackupEntryPoint.Callback, diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt index 04d0030753..7a4c096bfc 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt @@ -37,12 +37,13 @@ class DefaultSecureBackupEntryPointTest { override fun onDone() = lambdaError() } val params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(SecureBackupFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt index 163bdf17af..fadd584355 100644 --- a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt +++ b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.matrix.api.core.RoomId interface ShareEntryPoint : FeatureEntryPoint { data class Params(val intent: Intent) - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone(roomIds: List) diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt index 83f4317e0d..6df01558e5 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultShareEntryPoint : ShareEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: ShareEntryPoint.Params, callback: ShareEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: ShareEntryPoint.Params, callback: ShareEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt index 977211ca05..b3ce268d6c 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt @@ -67,7 +67,6 @@ class ShareNode( } return roomSelectEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Share), callback = callback, diff --git a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt index f93aac53ba..32207d3d46 100644 --- a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt +++ b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt @@ -38,8 +38,8 @@ class DefaultShareEntryPointTest { plugins = plugins, presenterFactory = { createSharePresenter() }, roomSelectEntryPoint = object : RoomSelectEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback, @@ -53,12 +53,13 @@ class DefaultShareEntryPointTest { val params = ShareEntryPoint.Params( intent = Intent(), ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(ShareNode::class.java) assertThat(result.plugins).contains(ShareNode.Inputs(params.intent)) assertThat(result.plugins).contains(callback) diff --git a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt index 12824bb12f..442ad1ef7d 100644 --- a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt +++ b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt @@ -17,5 +17,6 @@ interface SignedOutEntryPoint : FeatureEntryPoint { val sessionId: SessionId, ) - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params): Node } diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt index 8f89a8a0f9..d25dbf26ad 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSignedOutEntryPoint : SignedOutEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: SignedOutEntryPoint.Params): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: SignedOutEntryPoint.Params): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(SignedOutNode.Inputs(params.sessionId)) diff --git a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt index 64c48d9a5f..b6ef121c47 100644 --- a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt +++ b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt @@ -34,11 +34,12 @@ class DefaultSignedOutEntryPointTest { ) } val params = SignedOutEntryPoint.Params(A_SESSION_ID) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + ) + } assertThat(result).isInstanceOf(SignedOutNode::class.java) assertThat(result.plugins).contains(SignedOutNode.Inputs(params.sessionId)) } diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index 6b5bd7f892..d4d6f8d97b 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.matrix.api.core.RoomId interface SpaceEntryPoint : FeatureEntryPoint { + context(parentNode: Node) fun createNode( - parentNode: Node, buildContext: BuildContext, inputs: Inputs, callback: Callback diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt index e68bbc89db..8ceafc6ffb 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultSpaceEntryPoint : SpaceEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(inputs, callback), diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 3fd260dd4f..78931c4caf 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -48,12 +48,13 @@ class DefaultSpaceEntryPointTest { override fun navigateToRoomDetails() = lambdaError() override fun navigateToRoomMemberList() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - inputs = nodeInputs, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + inputs = nodeInputs, + callback = callback, + ) + } assertThat(result).isInstanceOf(SpaceFlowNode::class.java) assertThat(result.plugins).contains(nodeInputs) assertThat(result.plugins).contains(callback) diff --git a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt index 0e530b3943..92376974ec 100644 --- a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt +++ b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt @@ -14,7 +14,8 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomIdOrAlias interface StartChatEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt index 18df585fa0..043cd0df1c 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultStartChatEntryPoint : StartChatEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: StartChatEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: StartChatEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt index ee30f4997c..e3c846895c 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt @@ -80,7 +80,6 @@ class StartChatFlowNode( } } createRoomEntryPoint.createNode( - parentNode = this, buildContext = buildContext, callback = callback, ) diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt index 2ead91b31c..248848b764 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt @@ -35,8 +35,8 @@ class DefaultStartChatEntryPointTest { buildContext = buildContext, plugins = plugins, createRoomEntryPoint = object : CreateRoomEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback, ) = lambdaError() @@ -47,11 +47,12 @@ class DefaultStartChatEntryPointTest { override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = lambdaError() override fun navigateToRoomDirectory() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(StartChatFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt index 4053efea0d..d9ab4ff9e5 100644 --- a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt +++ b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt @@ -22,5 +22,6 @@ interface UserProfileEntryPoint : FeatureEntryPoint { fun navigateToRoom(roomId: RoomId) } - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt index e69ef185c0..71353b2cb2 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultUserProfileEntryPoint : UserProfileEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: UserProfileEntryPoint.Params, callback: UserProfileEntryPoint.Callback, diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index fd019c3587..187fe36b87 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -112,7 +112,6 @@ class UserProfileFlowNode( avatarUrl = navTarget.avatarUrl, ) mediaViewerEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -124,7 +123,6 @@ class UserProfileFlowNode( verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) outgoingVerificationEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = params, callback = object : OutgoingVerificationEntryPoint.Callback { diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt index 486f72f672..3772b4d415 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt @@ -60,16 +60,16 @@ class DefaultUserProfileEntryPointTest { }, mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback ) = lambdaError() }, outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: OutgoingVerificationEntryPoint.Params, callback: OutgoingVerificationEntryPoint.Callback, @@ -85,12 +85,13 @@ class DefaultUserProfileEntryPointTest { val params = UserProfileEntryPoint.Params( userId = A_USER_ID, ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(UserProfileFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt index c72f7d4f6b..c09b47e581 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt @@ -19,7 +19,8 @@ interface IncomingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Incoming, ) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt index 36a04b43c7..372426e0d8 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt @@ -20,7 +20,8 @@ interface OutgoingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Outgoing, ) : NodeInputs - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun navigateToLearnMoreAboutEncryption() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt index 9d6d91c79a..26f0597ca2 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: IncomingVerificationEntryPoint.Params, callback: IncomingVerificationEntryPoint.Callback, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt index 3328b1df1e..ab29d152f4 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: OutgoingVerificationEntryPoint.Params, callback: OutgoingVerificationEntryPoint.Callback, diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt index 437657b811..3a8743dccd 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt @@ -37,12 +37,13 @@ class DefaultIncomingVerificationEntryPointTest { val params = IncomingVerificationEntryPoint.Params( verificationRequest = anIncomingSessionVerificationRequest() ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(IncomingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt index 80906bc86a..1f9213a680 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt @@ -42,12 +42,13 @@ class DefaultOutgoingVerificationEntryPointTest { showDeviceVerifiedScreen = true, verificationRequest = anOutgoingSessionVerificationRequest(), ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(OutgoingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt index 1778ad0fc0..97f6ffbf9e 100644 --- a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt +++ b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt @@ -17,7 +17,8 @@ interface ViewFolderEntryPoint : FeatureEntryPoint { val rootPath: String, ) - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt index d1d7af9117..8999b853a8 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultViewFolderEntryPoint : ViewFolderEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt index a8e643e1f5..ae0f4b9f2e 100644 --- a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt +++ b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt @@ -40,12 +40,13 @@ class DefaultViewFolderEntryPointTest { val params = ViewFolderEntryPoint.Params( rootPath = "path", ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(ViewFolderFlowNode::class.java) assertThat(result.plugins).contains(ViewFolderFlowNode.Inputs(params.rootPath)) assertThat(result.plugins).contains(callback) diff --git a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt index 8ce2023655..bb2de92662 100644 --- a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt +++ b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt @@ -14,7 +14,8 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.SessionId interface AccountSelectEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onAccountSelected(sessionId: SessionId) diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt index 21e26d376b..9ecaaf5787 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAccountSelectEntryPoint : AccountSelectEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: AccountSelectEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: AccountSelectEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt index b36fcb5ab8..ae3ceb29c7 100644 --- a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt +++ b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt @@ -35,11 +35,12 @@ class DefaultAccountSelectEntryPointTest { override fun onAccountSelected(sessionId: SessionId) = lambdaError() override fun onCancel() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(AccountSelectNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt index d5a932b705..c8b0a00213 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt @@ -19,5 +19,6 @@ interface FeatureEntryPoint * Can be used when the feature only exposes a simple node without the need of plugins. */ fun interface SimpleFeatureEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext): Node } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index b3e832da22..b7257e4ed5 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -14,7 +14,8 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.EventId interface MediaGalleryEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onBackClick() diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index 2b17b63b26..a926deb015 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -19,7 +19,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import kotlinx.parcelize.Parcelize interface MediaViewerEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node fun createParamsForAvatar(filename: String, avatarUrl: String): Params diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt index 515c04bc20..78a15c1997 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt @@ -17,7 +17,8 @@ import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryFl @ContributesBinding(AppScope::class) class DefaultMediaGalleryEntryPoint : MediaGalleryEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(callback), diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt index 7d683bf3df..a1d11811c4 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt @@ -48,8 +48,8 @@ class DefaultMediaViewerEntryPoint : MediaViewerEntryPoint { ) } + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index cc71b49dac..8b6ec84eb5 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -125,7 +125,6 @@ class MediaGalleryFlowNode( } } mediaViewerEntryPoint.createNode( - parentNode = this, buildContext = buildContext, params = MediaViewerEntryPoint.Params( mode = navTarget.mode, diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 8b2574054b..3c54966090 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -37,8 +37,8 @@ class DefaultMediaGalleryEntryPointTest { plugins = plugins, mediaViewerEntryPoint = object : MediaViewerEntryPoint { override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + context(parentNode: Node) override fun createNode( - parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, @@ -51,11 +51,12 @@ class DefaultMediaGalleryEntryPointTest { override fun viewInTimeline(eventId: EventId) = lambdaError() override fun forward(eventId: EventId) = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(MediaGalleryFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index b53fe7913c..2929badf82 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -75,12 +75,13 @@ class DefaultMediaViewerEntryPointTest { override fun forwardEvent(eventId: EventId) = lambdaError() } val params = createMediaViewerEntryPointParams() - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) @@ -124,12 +125,13 @@ class DefaultMediaViewerEntryPointTest { filename = "fn", avatarUrl = "avatarUrl", ) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains( MediaViewerEntryPoint.Params( diff --git a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt index 7cc581d921..08aa8a2d34 100644 --- a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt +++ b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt @@ -18,7 +18,8 @@ interface RoomSelectEntryPoint : FeatureEntryPoint { val mode: RoomSelectMode, ) - fun createNode(parentNode: Node, buildContext: BuildContext, params: Params, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node interface Callback : Plugin { fun onRoomSelected(roomIds: List) diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt index 5ba20ffd8f..15da921a49 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint @ContributesBinding(SessionScope::class) class DefaultRoomSelectEntryPoint : RoomSelectEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt index 0bd16f77b0..6bb68b9707 100644 --- a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt +++ b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt @@ -42,12 +42,13 @@ class DefaultRoomSelectEntryPointTest { override fun onCancel() = lambdaError() } val params = RoomSelectEntryPoint.Params(testMode) - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) + } assertThat(result).isInstanceOf(RoomSelectNode::class.java) assertThat(result.plugins).contains(RoomSelectNode.Inputs(params.mode)) assertThat(result.plugins).contains(callback) diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt index 5e5774cdba..ae32ace777 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt @@ -13,7 +13,8 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface NotificationTroubleShootEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt index 6836bb59d0..ba11199330 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt @@ -15,7 +15,8 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId interface PushHistoryEntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt index f7b946647b..7404aed8ed 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEnt @ContributesBinding(AppScope::class) class DefaultNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt index 505d4d2b61..8477d39714 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt @@ -16,7 +16,8 @@ import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint @ContributesBinding(AppScope::class) class DefaultPushHistoryEntryPoint : PushHistoryEntryPoint { - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt index 1eef24fbcb..cf4c62b9b4 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt @@ -36,11 +36,12 @@ class DefaultNotificationTroubleShootEntryPointTest { override fun onDone() = lambdaError() override fun navigateToBlockedUsers() = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(TroubleshootNotificationsNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt index b963183ecc..271cd8d8fd 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt @@ -48,11 +48,12 @@ class DefaultPushHistoryEntryPointTest { override fun onDone() = lambdaError() override fun navigateToEvent(roomId: RoomId, eventId: EventId) = lambdaError() } - val result = entryPoint.createNode( - parentNode = parentNode, - buildContext = BuildContext.root(null), - callback = callback, - ) + val result = with(parentNode) { + entryPoint.createNode( + buildContext = BuildContext.root(null), + callback = callback, + ) + } assertThat(result).isInstanceOf(PushHistoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt index bc38fb2cad..af6cf59c8e 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt @@ -6,7 +6,8 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface ${FEATURE_NAME}EntryPoint : FeatureEntryPoint { - fun createNode(parentNode: Node, buildContext: BuildContext, callback: Callback): Node + context(parentNode: Node) + fun createNode(buildContext: BuildContext, callback: Callback): Node interface Callback : Plugin { // Add your callbacks diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt index 22dd0e1558..eca83b787f 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt @@ -10,8 +10,8 @@ import dev.zacsweers.metro.AppScope @ContributesBinding(AppScope::class) class Default${FEATURE_NAME}EntryPoint() : ${FEATURE_NAME}EntryPoint { - - override fun createNode(parentNode: Node, buildContext: BuildContext, callback: ${FEATURE_NAME}EntryPoint.Callback): Node { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, callback: ${FEATURE_NAME}EntryPoint.Callback): Node { return parentNode.createNode<${FEATURE_NAME}FlowNode>(buildContext, listOf(callback)) } } From 0303ac502aefea66ce0d4bd7a481eb7f58c45c2a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 15:58:49 +0100 Subject: [PATCH 261/898] More renaming --- .../features/messages/impl/MessagesNavigator.kt | 2 +- .../android/features/messages/impl/MessagesNode.kt | 2 +- .../features/messages/impl/MessagesPresenter.kt | 4 ++-- .../messages/impl/threads/ThreadedMessagesNode.kt | 2 +- .../features/messages/impl/FakeMessagesNavigator.kt | 6 +++--- .../features/messages/impl/MessagesPresenterTest.kt | 12 ++++++------ 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt index 7c55e23323..4a2189ccc7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNavigator.kt @@ -23,5 +23,5 @@ interface MessagesNavigator { fun navigateToPreviewAttachments(attachments: ImmutableList, inReplyToEventId: EventId?) fun navigateToRoom(roomId: RoomId, eventId: EventId?, serverNames: List) fun navigateToThread(threadRootId: ThreadId, focusedEventId: EventId?) - fun onNavigateUp() + fun close() } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt index 9647ffca17..558d5cf503 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt @@ -224,7 +224,7 @@ class MessagesNode( context.toast(CommonStrings.screen_room_permalink_same_room_android) } - override fun onNavigateUp() = navigateUp() + override fun close() = navigateUp() @Composable override fun View(modifier: Modifier) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index aae371998e..acab975a45 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -251,7 +251,7 @@ class MessagesPresenter( if (!markingAsReadAndExiting.getAndSet(true)) { val latestEventId = room.liveTimeline.getLatestEventId().getOrElse { Timber.w(it, "Failed to get latest event id to mark as fully read") - navigator.onNavigateUp() + navigator.close() return@launch } latestEventId?.let { eventId -> @@ -259,7 +259,7 @@ class MessagesPresenter( markAsFullyRead(room.roomId, eventId) } } - navigator.onNavigateUp() + navigator.close() markingAsReadAndExiting.set(false) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt index 5ce1b76956..c6d5c46b61 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/threads/ThreadedMessagesNode.kt @@ -221,7 +221,7 @@ class ThreadedMessagesNode( callback.navigateToThread(threadRootId, focusedEventId) } - override fun onNavigateUp() = navigateUp() + override fun close() = navigateUp() @Composable override fun View(modifier: Modifier) { diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt index 04b34fe778..9fd6e4af2a 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/FakeMessagesNavigator.kt @@ -24,7 +24,7 @@ class FakeMessagesNavigator( private val onPreviewAttachmentLambda: (attachments: ImmutableList, inReplyToEventId: EventId?) -> Unit = { _, _ -> lambdaError() }, private val onNavigateToRoomLambda: (roomId: RoomId, threadId: EventId?, serverNames: List) -> Unit = { _, _, _ -> lambdaError() }, private val onOpenThreadLambda: (threadRootId: ThreadId, focusedEventId: EventId?) -> Unit = { _, _ -> lambdaError() }, - private val onNavigateUpLambda: () -> Unit = { lambdaError() }, + private val closeLambda: () -> Unit = { lambdaError() }, ) : MessagesNavigator { override fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo) { onShowEventDebugInfoClickLambda(eventId, debugInfo) @@ -54,7 +54,7 @@ class FakeMessagesNavigator( onOpenThreadLambda(threadRootId, focusedEventId) } - override fun onNavigateUp() { - onNavigateUpLambda() + override fun close() { + closeLambda() } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index 34623a0c33..2dd98cc96f 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -1256,8 +1256,8 @@ class MessagesPresenterTest { fun `present - handle MarkAsFullyReadAndExit marks the room as fully read and navigates up`() = runTest { val markAsFullyReadRecorder = lambdaRecorder { _, _ -> } val markAsFullyReadUseCase = FakeMarkAsFullyRead(markAsFullyReadRecorder) - val onNavigateUpRecorder = lambdaRecorder {} - val navigator = FakeMessagesNavigator(onNavigateUpLambda = onNavigateUpRecorder) + val closeLambda = lambdaRecorder {} + val navigator = FakeMessagesNavigator(closeLambda = closeLambda) val presenter = createMessagesPresenter( timeline = FakeTimeline(getLatestEventIdResult = { Result.success(AN_EVENT_ID) }), @@ -1271,7 +1271,7 @@ class MessagesPresenterTest { runCurrent() markAsFullyReadRecorder.assertions().isCalledOnce() - onNavigateUpRecorder.assertions().isCalledOnce() + closeLambda.assertions().isCalledOnce() cancelAndIgnoreRemainingEvents() } @@ -1280,8 +1280,8 @@ class MessagesPresenterTest { @Test fun `present - handle MarkAsFullyReadAndExit still navigates up if marking as read fails`() = runTest { val markAsFullyReadUseCase = FakeMarkAsFullyRead { _, _ -> error("boom") } - val onNavigateUpRecorder = lambdaRecorder {} - val navigator = FakeMessagesNavigator(onNavigateUpLambda = onNavigateUpRecorder) + val closeLambda = lambdaRecorder {} + val navigator = FakeMessagesNavigator(closeLambda = closeLambda) val presenter = createMessagesPresenter( timeline = FakeTimeline(getLatestEventIdResult = { Result.success(AN_EVENT_ID) }), @@ -1294,7 +1294,7 @@ class MessagesPresenterTest { runCurrent() - onNavigateUpRecorder.assertions().isCalledOnce() + closeLambda.assertions().isCalledOnce() cancelAndIgnoreRemainingEvents() } From 187479849d566c8e86c9ff8472b5627a3135328b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 18:32:31 +0100 Subject: [PATCH 262/898] Create Fake classes in test modules --- appnav/build.gradle.kts | 1 + .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 10 +- .../test/build.gradle.kts | 21 ++++ .../FakeChangeRoomMemberRolesEntryPoint.kt | 26 +++++ features/createroom/test/build.gradle.kts | 19 ++++ .../api/FakeCreateRoomEntryPoint.kt | 20 ++++ features/deactivation/test/build.gradle.kts | 19 ++++ .../test/FakeAccountDeactivationEntryPoint.kt | 20 ++++ features/forward/impl/build.gradle.kts | 1 + .../impl/DefaultForwardEntryPointTest.kt | 12 +-- features/forward/test/build.gradle.kts | 20 ++++ .../forward/test/FakeForwardEntryPoint.kt | 22 ++++ .../ftue/impl/DefaultFtueEntryPointTest.kt | 18 +--- features/invite/test/build.gradle.kts | 1 + .../FakeDeclineInviteAndBlockEntryPoint.kt | 21 ++++ .../impl/DefaultJoinRoomEntryPointTest.kt | 9 +- features/knockrequests/test/build.gradle.kts | 21 ++++ .../test/FakeKnockRequestsListEntryPoint.kt | 18 ++++ features/licenses/test/build.gradle.kts | 19 ++++ .../test/FakeOpenSourceLicensesEntryPoint.kt | 20 ++++ features/location/test/build.gradle.kts | 5 +- .../test/FakeSendLocationEntryPoint.kt | 22 ++++ .../test/FakeShowLocationEntryPoint.kt | 21 ++++ features/lockscreen/test/build.gradle.kts | 4 +- .../test/FakeLockScreenEntryPoint.kt | 26 +++++ features/logout/test/build.gradle.kts | 1 + .../logout/test/FakeLogoutEntryPoint.kt | 21 ++++ features/messages/impl/build.gradle.kts | 3 + .../impl/DefaultMessagesEntryPointTest.kt | 79 +++----------- features/messages/test/build.gradle.kts | 1 + .../messages/test/FakeMessagesEntryPoint.kt | 22 ++++ .../DefaultPollHistoryEntryPointTest.kt | 12 +-- features/poll/test/build.gradle.kts | 1 + .../test/create/FakeCreatePollEntryPoint.kt | 22 ++++ .../test/history/FakePollHistoryEntryPoint.kt | 20 ++++ features/preferences/impl/build.gradle.kts | 5 + .../impl/DefaultPreferencesEntryPointTest.kt | 59 +++-------- features/rageshake/impl/build.gradle.kts | 1 + .../DefaultBugReportEntryPointTest.kt | 12 +-- features/reportroom/test/build.gradle.kts | 21 ++++ .../test/FakeReportRoomEntryPoint.kt | 21 ++++ features/roomdetails/impl/build.gradle.kts | 8 ++ .../impl/DefaultRoomDetailsEntryPointTest.kt | 100 ++++-------------- features/share/impl/build.gradle.kts | 1 + .../share/impl/DefaultShareEntryPointTest.kt | 12 +-- features/startchat/impl/build.gradle.kts | 1 + .../impl/DefaultStartChatEntryPointTest.kt | 11 +- features/userprofile/impl/build.gradle.kts | 3 + .../impl/DefaultUserProfileEntryPointTest.kt | 45 ++------ features/verifysession/test/build.gradle.kts | 20 ++++ .../FakeIncomingVerificationEntryPoint.kt | 22 ++++ .../FakeOutgoingVerificationEntryPoint.kt | 22 ++++ features/viewfolder/test/build.gradle.kts | 19 ++++ .../test/FakeViewFolderEntryPoint.kt | 22 ++++ .../impl/DefaultMediaGalleryEntryPointTest.kt | 13 +-- .../test/FakeMediaGalleryEntryPoint.kt | 21 ++++ .../test/FakeMediaViewerEntryPoint.kt | 24 +++++ libraries/roomselect/test/build.gradle.kts | 19 ++++ .../test/FakeRoomSelectEntryPoint.kt | 22 ++++ libraries/troubleshoot/test/build.gradle.kts | 1 + .../FakeNotificationTroubleShootEntryPoint.kt | 21 ++++ .../test/FakePushHistoryEntryPoint.kt | 21 ++++ 62 files changed, 798 insertions(+), 327 deletions(-) create mode 100644 features/changeroommemberroles/test/build.gradle.kts create mode 100644 features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt create mode 100644 features/createroom/test/build.gradle.kts create mode 100644 features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt create mode 100644 features/deactivation/test/build.gradle.kts create mode 100644 features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt create mode 100644 features/forward/test/build.gradle.kts create mode 100644 features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt create mode 100644 features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt create mode 100644 features/knockrequests/test/build.gradle.kts create mode 100644 features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt create mode 100644 features/licenses/test/build.gradle.kts create mode 100644 features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt create mode 100644 features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt create mode 100644 features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt create mode 100644 features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt create mode 100644 features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt create mode 100644 features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt create mode 100644 features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt create mode 100644 features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt create mode 100644 features/reportroom/test/build.gradle.kts create mode 100644 features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt create mode 100644 features/verifysession/test/build.gradle.kts create mode 100644 features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt create mode 100644 features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt create mode 100644 features/viewfolder/test/build.gradle.kts create mode 100644 features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt create mode 100644 libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt create mode 100644 libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt create mode 100644 libraries/roomselect/test/build.gradle.kts create mode 100644 libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt create mode 100644 libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt create mode 100644 libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt diff --git a/appnav/build.gradle.kts b/appnav/build.gradle.kts index 063e26b9da..9a9ccb2104 100644 --- a/appnav/build.gradle.kts +++ b/appnav/build.gradle.kts @@ -59,6 +59,7 @@ dependencies { testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.push.test) testImplementation(projects.libraries.pushproviders.test) + testImplementation(projects.features.forward.test) testImplementation(projects.features.networkmonitor.test) testImplementation(projects.features.rageshake.test) testImplementation(projects.services.appnavstate.test) diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index 91e8a597de..0474be0eb7 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -22,6 +22,7 @@ import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.appnav.room.joined.FakeJoinedRoomLoadedFlowNodeCallback import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode import io.element.android.features.forward.api.ForwardEntryPoint +import io.element.android.features.forward.test.FakeForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint @@ -100,15 +101,6 @@ class JoinedRoomLoadedFlowNodeTest { } } - private class FakeForwardEntryPoint : ForwardEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: ForwardEntryPoint.Params, - callback: ForwardEntryPoint.Callback, - ) = node(buildContext) {} - } - private fun TestScope.createJoinedRoomLoadedFlowNode( plugins: List, messagesEntryPoint: MessagesEntryPoint = FakeMessagesEntryPoint(), diff --git a/features/changeroommemberroles/test/build.gradle.kts b/features/changeroommemberroles/test/build.gradle.kts new file mode 100644 index 0000000000..4d85d83c90 --- /dev/null +++ b/features/changeroommemberroles/test/build.gradle.kts @@ -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. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.changeroommemberroles.test" +} + +dependencies { + implementation(projects.features.changeroommemberroles.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} diff --git a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt new file mode 100644 index 0000000000..75057654f3 --- /dev/null +++ b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -0,0 +1,26 @@ +/* + * 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.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeChangeRoomMemberRolesEntryPoint : ChangeRoomMemberRolesEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + room: JoinedRoom, + listType: ChangeRoomMemberRolesListType, + ): Node { + lambdaError() + } +} diff --git a/features/createroom/test/build.gradle.kts b/features/createroom/test/build.gradle.kts new file mode 100644 index 0000000000..13c579e5da --- /dev/null +++ b/features/createroom/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.createroom.test" +} + +dependencies { + implementation(projects.features.createroom.api) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) +} diff --git a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt new file mode 100644 index 0000000000..929d22b3de --- /dev/null +++ b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.createroom.api + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeCreateRoomEntryPoint : CreateRoomEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + callback: CreateRoomEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/deactivation/test/build.gradle.kts b/features/deactivation/test/build.gradle.kts new file mode 100644 index 0000000000..57ba7f4421 --- /dev/null +++ b/features/deactivation/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.deactivation.test" +} + +dependencies { + implementation(projects.features.deactivation.api) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) +} diff --git a/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt b/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt new file mode 100644 index 0000000000..8c898dfb6b --- /dev/null +++ b/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.deactivation.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.deactivation.api.AccountDeactivationEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { + lambdaError() + } +} diff --git a/features/forward/impl/build.gradle.kts b/features/forward/impl/build.gradle.kts index 32da0ed7a2..de38d25651 100644 --- a/features/forward/impl/build.gradle.kts +++ b/features/forward/impl/build.gradle.kts @@ -34,5 +34,6 @@ dependencies { testCommonDependencies(libs, true) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.roomselect.test) testImplementation(projects.libraries.testtags) } diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index 76cd3c0a2f..f344d58063 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -9,14 +9,13 @@ package io.element.android.features.forward.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.timeline.FakeTimelineProvider -import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint +import io.element.android.libraries.roomselect.test.FakeRoomSelectEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest @@ -38,14 +37,7 @@ class DefaultForwardEntryPointTest { buildContext = buildContext, plugins = plugins, presenterFactory = { _, _ -> createForwardMessagesPresenter() }, - roomSelectEntryPoint = object : RoomSelectEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: RoomSelectEntryPoint.Params, - callback: RoomSelectEntryPoint.Callback, - ) = lambdaError() - } + roomSelectEntryPoint = FakeRoomSelectEntryPoint(), ) } val callback = object : ForwardEntryPoint.Callback { diff --git a/features/forward/test/build.gradle.kts b/features/forward/test/build.gradle.kts new file mode 100644 index 0000000000..a669fe5128 --- /dev/null +++ b/features/forward/test/build.gradle.kts @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.forward.test" +} + +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.features.forward.api) + implementation(projects.tests.testutils) +} diff --git a/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt b/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt new file mode 100644 index 0000000000..d42ea203a0 --- /dev/null +++ b/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.forward.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.forward.api.ForwardEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeForwardEntryPoint : ForwardEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: ForwardEntryPoint.Params, + callback: ForwardEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt index ccb4cbe200..efd787b1c4 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt @@ -7,14 +7,11 @@ package io.element.android.features.ftue.impl -import android.content.Context -import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.lockscreen.api.LockScreenEntryPoint +import io.element.android.features.lockscreen.test.FakeLockScreenEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest @@ -37,18 +34,7 @@ class DefaultFtueEntryPointTest { plugins = plugins, analyticsEntryPoint = { _ -> lambdaError() }, defaultFtueService = createDefaultFtueService(), - lockScreenEntryPoint = object : LockScreenEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - navTarget: LockScreenEntryPoint.Target, - callback: LockScreenEntryPoint.Callback, - ) = lambdaError() - - override fun pinUnlockIntent(context: Context): Intent { - lambdaError() - } - }, + lockScreenEntryPoint = FakeLockScreenEntryPoint(), ) } val result = with(parentNode) { diff --git a/features/invite/test/build.gradle.kts b/features/invite/test/build.gradle.kts index e504873c3b..5669204b69 100644 --- a/features/invite/test/build.gradle.kts +++ b/features/invite/test/build.gradle.kts @@ -26,5 +26,6 @@ dependencies { implementation(libs.coroutines.core) implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrix.test) + implementation(projects.tests.testutils) api(projects.features.invite.api) } diff --git a/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt b/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt new file mode 100644 index 0000000000..75d93666c0 --- /dev/null +++ b/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.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.invite.test.declineandblock + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.invite.api.InviteData +import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBlockEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeDeclineInviteAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, inviteData: InviteData): Node { + lambdaError() + } +} diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt index 4cf41f1dbc..abde7e9e4e 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt @@ -9,12 +9,10 @@ package io.element.android.features.joinroom.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.JoinedRoom -import io.element.android.features.invite.api.InviteData -import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBlockEntryPoint +import io.element.android.features.invite.test.declineandblock.FakeDeclineInviteAndBlockEntryPoint import io.element.android.features.joinroom.api.JoinRoomEntryPoint import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.test.A_ROOM_ID @@ -40,10 +38,7 @@ class DefaultJoinRoomEntryPointTest { plugins = plugins, presenterFactory = { _, _, _, _, _ -> createJoinRoomPresenter() }, acceptDeclineInviteView = { _, _, _, _ -> lambdaError() }, - declineAndBlockEntryPoint = object : DeclineInviteAndBlockEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inviteData: InviteData) = lambdaError() - } + declineAndBlockEntryPoint = FakeDeclineInviteAndBlockEntryPoint(), ) } val inputs = JoinRoomEntryPoint.Inputs( diff --git a/features/knockrequests/test/build.gradle.kts b/features/knockrequests/test/build.gradle.kts new file mode 100644 index 0000000000..27928879b2 --- /dev/null +++ b/features/knockrequests/test/build.gradle.kts @@ -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. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.knockrequests.test" +} + +dependencies { + implementation(projects.features.knockrequests.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} diff --git a/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt b/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt new file mode 100644 index 0000000000..4c7a6ffdc7 --- /dev/null +++ b/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt @@ -0,0 +1,18 @@ +/* + * 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.knockrequests.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node = lambdaError() +} diff --git a/features/licenses/test/build.gradle.kts b/features/licenses/test/build.gradle.kts new file mode 100644 index 0000000000..7ac79a9608 --- /dev/null +++ b/features/licenses/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.licenses.test" +} + +dependencies { + implementation(projects.features.licenses.api) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) +} diff --git a/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt b/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt new file mode 100644 index 0000000000..0ce30a7839 --- /dev/null +++ b/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.licenses.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.licenses.api.OpenSourceLicensesEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeOpenSourceLicensesEntryPoint : OpenSourceLicensesEntryPoint { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext): Node { + lambdaError() + } +} diff --git a/features/location/test/build.gradle.kts b/features/location/test/build.gradle.kts index 024ae2c303..2171a0e0f5 100644 --- a/features/location/test/build.gradle.kts +++ b/features/location/test/build.gradle.kts @@ -14,5 +14,8 @@ android { } dependencies { - implementation(projects.features.location.api) + api(projects.features.location.api) + implementation(projects.libraries.matrix.api) + implementation(libs.appyx.core) + implementation(projects.tests.testutils) } diff --git a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt new file mode 100644 index 0000000000..7bcccef4bb --- /dev/null +++ b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.location.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.location.api.SendLocationEntryPoint +import io.element.android.libraries.matrix.api.timeline.Timeline +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeSendLocationEntryPoint : SendLocationEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + timelineMode: Timeline.Mode, + ): Node = lambdaError() +} diff --git a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt new file mode 100644 index 0000000000..33d269f68d --- /dev/null +++ b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.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.location.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.location.api.ShowLocationEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeShowLocationEntryPoint : ShowLocationEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + inputs: ShowLocationEntryPoint.Inputs, + ): Node = lambdaError() +} diff --git a/features/lockscreen/test/build.gradle.kts b/features/lockscreen/test/build.gradle.kts index 80f46e82c6..5d64c014b9 100644 --- a/features/lockscreen/test/build.gradle.kts +++ b/features/lockscreen/test/build.gradle.kts @@ -14,6 +14,8 @@ android { } dependencies { - implementation(libs.coroutines.core) api(projects.features.lockscreen.api) + implementation(libs.coroutines.core) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) } diff --git a/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt new file mode 100644 index 0000000000..dc722dd0c8 --- /dev/null +++ b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt @@ -0,0 +1,26 @@ +/* + * 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.lockscreen.test + +import android.content.Context +import android.content.Intent +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.lockscreen.api.LockScreenEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeLockScreenEntryPoint : LockScreenEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + navTarget: LockScreenEntryPoint.Target, + callback: LockScreenEntryPoint.Callback, + ): Node = lambdaError() + + override fun pinUnlockIntent(context: Context): Intent = lambdaError() +} diff --git a/features/logout/test/build.gradle.kts b/features/logout/test/build.gradle.kts index e7647a85db..ff1b6ae180 100644 --- a/features/logout/test/build.gradle.kts +++ b/features/logout/test/build.gradle.kts @@ -15,6 +15,7 @@ android { dependencies { implementation(libs.coroutines.core) + implementation(projects.libraries.architecture) implementation(projects.tests.testutils) api(projects.features.logout.api) } diff --git a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt new file mode 100644 index 0000000000..4273bf7169 --- /dev/null +++ b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.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.logout.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.logout.api.LogoutEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeLogoutEntryPoint : LogoutEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + callback: LogoutEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index cd72c4d84a..e74072830d 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -79,6 +79,9 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.dateformatter.test) testImplementation(projects.libraries.push.test) + testImplementation(projects.features.call.test) + testImplementation(projects.features.forward.test) + testImplementation(projects.features.knockrequests.test) testImplementation(projects.features.location.test) testImplementation(projects.features.networkmonitor.test) testImplementation(projects.features.messages.test) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 5032d324f7..2c8cb88875 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -10,27 +10,23 @@ package io.element.android.features.messages.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.compose.runtime.Composable import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.call.api.CallType -import io.element.android.features.call.api.ElementCallEntryPoint -import io.element.android.features.forward.api.ForwardEntryPoint -import io.element.android.features.knockrequests.api.list.KnockRequestsListEntryPoint -import io.element.android.features.location.api.SendLocationEntryPoint -import io.element.android.features.location.api.ShowLocationEntryPoint +import io.element.android.features.call.test.FakeElementCallEntryPoint +import io.element.android.features.forward.test.FakeForwardEntryPoint +import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint import io.element.android.features.location.test.FakeLocationService +import io.element.android.features.location.test.FakeSendLocationEntryPoint +import io.element.android.features.location.test.FakeShowLocationEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.impl.pinned.banner.createPinnedEventsTimelineProvider import io.element.android.features.messages.impl.timeline.createTimelineController -import io.element.android.features.poll.api.create.CreatePollEntryPoint -import io.element.android.features.poll.api.create.CreatePollEntryPoint.Params +import io.element.android.features.poll.test.create.FakeCreatePollEntryPoint import io.element.android.libraries.dateformatter.test.FakeDateFormatter import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData -import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID @@ -38,7 +34,7 @@ import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.libraries.matrix.ui.messages.RoomMemberProfilesCache import io.element.android.libraries.matrix.ui.messages.RoomNamesCache -import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint +import io.element.android.libraries.mediaviewer.test.FakeMediaViewerEntryPoint import io.element.android.libraries.textcomposer.mentions.MentionSpanTheme import io.element.android.libraries.textcomposer.mentions.MentionSpanUpdater import io.element.android.services.analytics.test.FakeAnalyticsService @@ -65,56 +61,12 @@ class DefaultMessagesEntryPointTest { plugins = plugins, roomListService = FakeRoomListService(), sessionId = A_SESSION_ID, - sendLocationEntryPoint = object : SendLocationEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - timelineMode: Timeline.Mode, - ) = lambdaError() - }, - showLocationEntryPoint = object : ShowLocationEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs) = lambdaError() - }, - createPollEntryPoint = object : CreatePollEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: Params, - ) = lambdaError() - }, - elementCallEntryPoint = object : ElementCallEntryPoint { - override fun startCall(callType: CallType) = lambdaError() - override suspend fun handleIncomingCall( - callType: CallType.RoomCall, - eventId: EventId, - senderId: UserId, - roomName: String?, - senderName: String?, - avatarUrl: String?, - timestamp: Long, - expirationTimestamp: Long, - notificationChannelId: String, - textContent: String?, - ) = lambdaError() - }, - mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: MediaViewerEntryPoint.Params, - callback: MediaViewerEntryPoint.Callback, - ) = lambdaError() - }, - forwardEntryPoint = object : ForwardEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: ForwardEntryPoint.Params, - callback: ForwardEntryPoint.Callback, - ) = lambdaError() - }, + sendLocationEntryPoint = FakeSendLocationEntryPoint(), + showLocationEntryPoint = FakeShowLocationEntryPoint(), + createPollEntryPoint = FakeCreatePollEntryPoint(), + elementCallEntryPoint = FakeElementCallEntryPoint(), + mediaViewerEntryPoint = FakeMediaViewerEntryPoint(), + forwardEntryPoint = FakeForwardEntryPoint(), analyticsService = FakeAnalyticsService(), locationService = FakeLocationService(), room = FakeBaseRoom(), @@ -129,10 +81,7 @@ class DefaultMessagesEntryPointTest { mentionSpanTheme = MentionSpanTheme(A_USER_ID), pinnedEventsTimelineProvider = createPinnedEventsTimelineProvider(), timelineController = createTimelineController(), - knockRequestsListEntryPoint = object : KnockRequestsListEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext) = lambdaError() - }, + knockRequestsListEntryPoint = FakeKnockRequestsListEntryPoint(), dateFormatter = FakeDateFormatter(), coroutineDispatchers = testCoroutineDispatchers(), ) diff --git a/features/messages/test/build.gradle.kts b/features/messages/test/build.gradle.kts index 93f5166f29..be94beb01b 100644 --- a/features/messages/test/build.gradle.kts +++ b/features/messages/test/build.gradle.kts @@ -23,4 +23,5 @@ dependencies { implementation(projects.libraries.preferences.api) implementation(projects.libraries.voicerecorder.test) implementation(projects.services.analytics.test) + implementation(projects.tests.testutils) } diff --git a/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt new file mode 100644 index 0000000000..91258521de --- /dev/null +++ b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.messages.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.messages.api.MessagesEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeMessagesEntryPoint : MessagesEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: MessagesEntryPoint.Params, + callback: MessagesEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt index 2e8e21f93f..41c99d1cd1 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt @@ -9,11 +9,9 @@ package io.element.android.features.poll.impl.history import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.poll.api.create.CreatePollEntryPoint -import io.element.android.tests.testutils.lambda.lambdaError +import io.element.android.features.poll.test.create.FakeCreatePollEntryPoint import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -33,13 +31,7 @@ class DefaultPollHistoryEntryPointTest { PollHistoryFlowNode( buildContext = buildContext, plugins = plugins, - createPollEntryPoint = object : CreatePollEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: CreatePollEntryPoint.Params, - ) = lambdaError() - } + createPollEntryPoint = FakeCreatePollEntryPoint(), ) } val result = with(parentNode) { diff --git a/features/poll/test/build.gradle.kts b/features/poll/test/build.gradle.kts index 150a0bd3fc..35434f84a3 100644 --- a/features/poll/test/build.gradle.kts +++ b/features/poll/test/build.gradle.kts @@ -17,4 +17,5 @@ dependencies { implementation(projects.libraries.matrix.api) api(projects.features.poll.api) implementation(libs.kotlinx.collections.immutable) + implementation(projects.tests.testutils) } diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt new file mode 100644 index 0000000000..3563c341f4 --- /dev/null +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.poll.test.create + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.poll.api.create.CreatePollEntryPoint +import io.element.android.features.poll.api.create.CreatePollEntryPoint.Params +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeCreatePollEntryPoint : CreatePollEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: Params, + ): Node = lambdaError() +} diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt new file mode 100644 index 0000000000..5e20159fd8 --- /dev/null +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.poll.test.history + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.poll.api.history.PollHistoryEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakePollHistoryEntryPoint : PollHistoryEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + ): Node = lambdaError() +} diff --git a/features/preferences/impl/build.gradle.kts b/features/preferences/impl/build.gradle.kts index 6858ebef51..31a7f87440 100644 --- a/features/preferences/impl/build.gradle.kts +++ b/features/preferences/impl/build.gradle.kts @@ -102,8 +102,13 @@ dependencies { testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.push.test) testImplementation(projects.libraries.pushstore.test) + testImplementation(projects.libraries.roomselect.test) + testImplementation(projects.libraries.troubleshoot.test) + testImplementation(projects.features.deactivation.test) testImplementation(projects.features.enterprise.test) testImplementation(projects.features.invite.test) + testImplementation(projects.features.licenses.test) + testImplementation(projects.features.lockscreen.test) testImplementation(projects.features.rageshake.test) testImplementation(projects.features.logout.test) testImplementation(projects.libraries.indicator.test) diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt index 2a3d40b84a..f46a66248e 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt @@ -7,21 +7,19 @@ package io.element.android.features.preferences.impl -import android.content.Context import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.deactivation.api.AccountDeactivationEntryPoint -import io.element.android.features.licenses.api.OpenSourceLicensesEntryPoint -import io.element.android.features.lockscreen.api.LockScreenEntryPoint -import io.element.android.features.logout.api.LogoutEntryPoint +import io.element.android.features.deactivation.test.FakeAccountDeactivationEntryPoint +import io.element.android.features.licenses.test.FakeOpenSourceLicensesEntryPoint +import io.element.android.features.lockscreen.test.FakeLockScreenEntryPoint +import io.element.android.features.logout.test.FakeLogoutEntryPoint import io.element.android.features.preferences.api.PreferencesEntryPoint import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEntryPoint -import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint +import io.element.android.libraries.troubleshoot.test.FakeNotificationTroubleShootEntryPoint +import io.element.android.libraries.troubleshoot.test.FakePushHistoryEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import org.junit.Rule @@ -41,45 +39,12 @@ class DefaultPreferencesEntryPointTest { PreferencesFlowNode( buildContext = buildContext, plugins = plugins, - lockScreenEntryPoint = object : LockScreenEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - navTarget: LockScreenEntryPoint.Target, - callback: LockScreenEntryPoint.Callback, - ) = lambdaError() - - override fun pinUnlockIntent(context: Context) = lambdaError() - }, - notificationTroubleShootEntryPoint = object : NotificationTroubleShootEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - callback: NotificationTroubleShootEntryPoint.Callback, - ) = lambdaError() - }, - pushHistoryEntryPoint = object : PushHistoryEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - callback: PushHistoryEntryPoint.Callback, - ) = lambdaError() - }, - logoutEntryPoint = object : LogoutEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - callback: LogoutEntryPoint.Callback, - ) = lambdaError() - }, - openSourceLicensesEntryPoint = object : OpenSourceLicensesEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext) = lambdaError() - }, - accountDeactivationEntryPoint = object : AccountDeactivationEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext) = lambdaError() - }, + lockScreenEntryPoint = FakeLockScreenEntryPoint(), + notificationTroubleShootEntryPoint = FakeNotificationTroubleShootEntryPoint(), + pushHistoryEntryPoint = FakePushHistoryEntryPoint(), + logoutEntryPoint = FakeLogoutEntryPoint(), + openSourceLicensesEntryPoint = FakeOpenSourceLicensesEntryPoint(), + accountDeactivationEntryPoint = FakeAccountDeactivationEntryPoint(), ) } val callback = object : PreferencesEntryPoint.Callback { diff --git a/features/rageshake/impl/build.gradle.kts b/features/rageshake/impl/build.gradle.kts index b17d78f3aa..ddc1e8a198 100644 --- a/features/rageshake/impl/build.gradle.kts +++ b/features/rageshake/impl/build.gradle.kts @@ -52,6 +52,7 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.sessionStorage.test) testImplementation(projects.features.rageshake.test) + testImplementation(projects.features.viewfolder.test) testImplementation(projects.libraries.preferences.test) testImplementation(projects.services.toolbox.test) testImplementation(libs.network.mockwebserver) diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt index 0294485a15..da3e2e8982 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt @@ -9,11 +9,10 @@ package io.element.android.features.rageshake.impl.bugreport import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.rageshake.api.bugreport.BugReportEntryPoint -import io.element.android.features.viewfolder.api.ViewFolderEntryPoint +import io.element.android.features.viewfolder.test.FakeViewFolderEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest @@ -34,14 +33,7 @@ class DefaultBugReportEntryPointTest { BugReportFlowNode( buildContext = buildContext, plugins = plugins, - viewFolderEntryPoint = object : ViewFolderEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: ViewFolderEntryPoint.Params, - callback: ViewFolderEntryPoint.Callback, - ) = lambdaError() - }, + viewFolderEntryPoint = FakeViewFolderEntryPoint(), ) } val callback = object : BugReportEntryPoint.Callback { diff --git a/features/reportroom/test/build.gradle.kts b/features/reportroom/test/build.gradle.kts new file mode 100644 index 0000000000..42528ad531 --- /dev/null +++ b/features/reportroom/test/build.gradle.kts @@ -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. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.reportroom.test" +} + +dependencies { + implementation(projects.features.reportroom.api) + implementation(projects.libraries.architecture) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) +} diff --git a/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt b/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt new file mode 100644 index 0000000000..0129686ff0 --- /dev/null +++ b/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.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.reportroom.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.reportroom.api.ReportRoomEntryPoint +import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeReportRoomEntryPoint : ReportRoomEntryPoint { + context(parentNode: Node) + override fun createNode(buildContext: BuildContext, roomId: RoomId): Node { + lambdaError() + } +} diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts index 882058ef48..896fc8dbdc 100644 --- a/features/roomdetails/impl/build.gradle.kts +++ b/features/roomdetails/impl/build.gradle.kts @@ -63,10 +63,18 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.mediaupload.test) testImplementation(projects.libraries.mediapickers.test) + testImplementation(projects.libraries.mediaviewer.test) testImplementation(projects.libraries.permissions.test) testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.usersearch.test) testImplementation(projects.libraries.featureflag.test) + testImplementation(projects.features.call.test) + testImplementation(projects.features.changeroommemberroles.test) + testImplementation(projects.features.knockrequests.test) + testImplementation(projects.features.messages.test) + testImplementation(projects.features.poll.test) + testImplementation(projects.features.reportroom.test) testImplementation(projects.features.startchat.test) + testImplementation(projects.features.verifysession.test) testImplementation(projects.services.analytics.test) } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index a20aa80daa..45a24902ee 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -9,28 +9,23 @@ package io.element.android.features.roomdetails.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -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 -import io.element.android.features.reportroom.api.ReportRoomEntryPoint +import io.element.android.features.call.test.FakeElementCallEntryPoint +import io.element.android.features.changeroommemberroes.test.FakeChangeRoomMemberRolesEntryPoint +import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint +import io.element.android.features.messages.test.FakeMessagesEntryPoint +import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint +import io.element.android.features.reportroom.test.FakeReportRoomEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint -import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint +import io.element.android.features.verifysession.test.FakeOutgoingVerificationEntryPoint import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData -import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.room.FakeJoinedRoom -import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint -import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint +import io.element.android.libraries.mediaviewer.test.FakeMediaGalleryEntryPoint +import io.element.android.libraries.mediaviewer.test.FakeMediaViewerEntryPoint import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode @@ -52,76 +47,17 @@ class DefaultRoomDetailsEntryPointTest { RoomDetailsFlowNode( buildContext = buildContext, plugins = plugins, - pollHistoryEntryPoint = object : PollHistoryEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext) = lambdaError() - }, - elementCallEntryPoint = object : ElementCallEntryPoint { - override fun startCall(callType: CallType) = lambdaError() - override suspend fun handleIncomingCall( - callType: CallType.RoomCall, - eventId: EventId, - senderId: UserId, - roomName: String?, - senderName: String?, - avatarUrl: String?, - timestamp: Long, - expirationTimestamp: Long, - notificationChannelId: String, - textContent: String? - ) = lambdaError() - }, + pollHistoryEntryPoint = FakePollHistoryEntryPoint(), + elementCallEntryPoint = FakeElementCallEntryPoint(), room = FakeJoinedRoom(), analyticsService = FakeAnalyticsService(), - messagesEntryPoint = object : MessagesEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: MessagesEntryPoint.Params, - callback: MessagesEntryPoint.Callback, - ) = lambdaError() - }, - knockRequestsListEntryPoint = object : KnockRequestsListEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext) = lambdaError() - }, - mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() - - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: MediaViewerEntryPoint.Params, - callback: MediaViewerEntryPoint.Callback, - ) = lambdaError() - }, - mediaGalleryEntryPoint = object : MediaGalleryEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - callback: MediaGalleryEntryPoint.Callback, - ) = lambdaError() - }, - outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: OutgoingVerificationEntryPoint.Params, - callback: OutgoingVerificationEntryPoint.Callback, - ) = lambdaError() - }, - reportRoomEntryPoint = object : ReportRoomEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, roomId: RoomId) = lambdaError() - }, - changeRoomMemberRolesEntryPoint = object : ChangeRoomMemberRolesEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - room: JoinedRoom, - listType: ChangeRoomMemberRolesListType, - ) = lambdaError() - }, + messagesEntryPoint = FakeMessagesEntryPoint(), + knockRequestsListEntryPoint = FakeKnockRequestsListEntryPoint(), + mediaViewerEntryPoint = FakeMediaViewerEntryPoint(), + mediaGalleryEntryPoint = FakeMediaGalleryEntryPoint(), + outgoingVerificationEntryPoint = FakeOutgoingVerificationEntryPoint(), + reportRoomEntryPoint = FakeReportRoomEntryPoint(), + changeRoomMemberRolesEntryPoint = FakeChangeRoomMemberRolesEntryPoint(), ) } val callback = object : RoomDetailsEntryPoint.Callback { diff --git a/features/share/impl/build.gradle.kts b/features/share/impl/build.gradle.kts index 4c62a06352..dfe4d96543 100644 --- a/features/share/impl/build.gradle.kts +++ b/features/share/impl/build.gradle.kts @@ -46,4 +46,5 @@ dependencies { testImplementation(projects.libraries.matrix.test) testImplementation(projects.libraries.mediaupload.test) testImplementation(projects.libraries.preferences.test) + testImplementation(projects.libraries.roomselect.test) } diff --git a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt index 32207d3d46..bdbeb37d40 100644 --- a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt +++ b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt @@ -10,12 +10,11 @@ package io.element.android.features.share.impl import android.content.Intent import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.share.api.ShareEntryPoint import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint +import io.element.android.libraries.roomselect.test.FakeRoomSelectEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest @@ -37,14 +36,7 @@ class DefaultShareEntryPointTest { buildContext = buildContext, plugins = plugins, presenterFactory = { createSharePresenter() }, - roomSelectEntryPoint = object : RoomSelectEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: RoomSelectEntryPoint.Params, - callback: RoomSelectEntryPoint.Callback, - ) = lambdaError() - }, + roomSelectEntryPoint = FakeRoomSelectEntryPoint(), ) } val callback = object : ShareEntryPoint.Callback { diff --git a/features/startchat/impl/build.gradle.kts b/features/startchat/impl/build.gradle.kts index 8ba7593b36..0f1c513db0 100644 --- a/features/startchat/impl/build.gradle.kts +++ b/features/startchat/impl/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { testImplementation(projects.libraries.mediaupload.test) testImplementation(projects.libraries.permissions.test) testImplementation(projects.libraries.usersearch.test) + testImplementation(projects.features.createroom.test) testImplementation(projects.features.startchat.test) testImplementation(projects.libraries.featureflag.test) } diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt index 248848b764..e8644da700 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt @@ -9,10 +9,9 @@ package io.element.android.features.startchat.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.createroom.api.CreateRoomEntryPoint +import io.element.android.features.createroom.api.FakeCreateRoomEntryPoint import io.element.android.features.startchat.api.StartChatEntryPoint import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import io.element.android.tests.testutils.lambda.lambdaError @@ -34,13 +33,7 @@ class DefaultStartChatEntryPointTest { StartChatFlowNode( buildContext = buildContext, plugins = plugins, - createRoomEntryPoint = object : CreateRoomEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - callback: CreateRoomEntryPoint.Callback, - ) = lambdaError() - }, + createRoomEntryPoint = FakeCreateRoomEntryPoint(), ) } val callback = object : StartChatEntryPoint.Callback { diff --git a/features/userprofile/impl/build.gradle.kts b/features/userprofile/impl/build.gradle.kts index f0c214c22e..b8a5506dd4 100644 --- a/features/userprofile/impl/build.gradle.kts +++ b/features/userprofile/impl/build.gradle.kts @@ -44,6 +44,9 @@ dependencies { testCommonDependencies(libs, true) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.mediaviewer.test) + testImplementation(projects.features.call.test) + testImplementation(projects.features.verifysession.test) testImplementation(projects.features.startchat.test) testImplementation(projects.features.enterprise.test) } diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt index 3772b4d415..520f2e39af 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt @@ -9,19 +9,15 @@ package io.element.android.features.userprofile.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat -import io.element.android.features.call.api.CallType -import io.element.android.features.call.api.ElementCallEntryPoint +import io.element.android.features.call.test.FakeElementCallEntryPoint import io.element.android.features.userprofile.api.UserProfileEntryPoint -import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint -import io.element.android.libraries.matrix.api.core.EventId +import io.element.android.features.verifysession.test.FakeOutgoingVerificationEntryPoint import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID -import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint +import io.element.android.libraries.mediaviewer.test.FakeMediaViewerEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import org.junit.Rule @@ -43,38 +39,9 @@ class DefaultUserProfileEntryPointTest { buildContext = buildContext, plugins = plugins, sessionId = A_SESSION_ID, - elementCallEntryPoint = object : ElementCallEntryPoint { - override fun startCall(callType: CallType) = lambdaError() - override suspend fun handleIncomingCall( - callType: CallType.RoomCall, - eventId: EventId, - senderId: UserId, - roomName: String?, - senderName: String?, - avatarUrl: String?, - timestamp: Long, - expirationTimestamp: Long, - notificationChannelId: String, - textContent: String? - ) = lambdaError() - }, - mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: MediaViewerEntryPoint.Params, - callback: MediaViewerEntryPoint.Callback - ) = lambdaError() - }, - outgoingVerificationEntryPoint = object : OutgoingVerificationEntryPoint { - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: OutgoingVerificationEntryPoint.Params, - callback: OutgoingVerificationEntryPoint.Callback, - ) = lambdaError() - }, + elementCallEntryPoint = FakeElementCallEntryPoint(), + mediaViewerEntryPoint = FakeMediaViewerEntryPoint(), + outgoingVerificationEntryPoint = FakeOutgoingVerificationEntryPoint(), ) } val callback = object : UserProfileEntryPoint.Callback { diff --git a/features/verifysession/test/build.gradle.kts b/features/verifysession/test/build.gradle.kts new file mode 100644 index 0000000000..f392f8cc6d --- /dev/null +++ b/features/verifysession/test/build.gradle.kts @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.verifysession.test" +} + +dependencies { + implementation(projects.features.verifysession.api) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) +} diff --git a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt new file mode 100644 index 0000000000..754d493996 --- /dev/null +++ b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.verifysession.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.verifysession.api.IncomingVerificationEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: IncomingVerificationEntryPoint.Params, + callback: IncomingVerificationEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt new file mode 100644 index 0000000000..2d5491578e --- /dev/null +++ b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.verifysession.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: OutgoingVerificationEntryPoint.Params, + callback: OutgoingVerificationEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/features/viewfolder/test/build.gradle.kts b/features/viewfolder/test/build.gradle.kts new file mode 100644 index 0000000000..33bdfe03e2 --- /dev/null +++ b/features/viewfolder/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.features.viewfolder.test" +} + +dependencies { + implementation(projects.features.viewfolder.api) + implementation(projects.libraries.architecture) + implementation(projects.tests.testutils) +} diff --git a/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt b/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt new file mode 100644 index 0000000000..6b0ba721ad --- /dev/null +++ b/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.viewfolder.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.viewfolder.api.ViewFolderEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeViewFolderEntryPoint : ViewFolderEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: ViewFolderEntryPoint.Params, + callback: ViewFolderEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 3c54966090..a5dce8f4ec 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -9,13 +9,12 @@ package io.element.android.libraries.mediaviewer.impl import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.bumble.appyx.core.modality.BuildContext -import com.bumble.appyx.core.node.Node import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint -import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryFlowNode +import io.element.android.libraries.mediaviewer.test.FakeMediaViewerEntryPoint import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.node.TestParentNode import org.junit.Rule @@ -35,15 +34,7 @@ class DefaultMediaGalleryEntryPointTest { MediaGalleryFlowNode( buildContext = buildContext, plugins = plugins, - mediaViewerEntryPoint = object : MediaViewerEntryPoint { - override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() - context(parentNode: Node) - override fun createNode( - buildContext: BuildContext, - params: MediaViewerEntryPoint.Params, - callback: MediaViewerEntryPoint.Callback, - ) = lambdaError() - }, + mediaViewerEntryPoint = FakeMediaViewerEntryPoint(), ) } val callback = object : MediaGalleryEntryPoint.Callback { diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt new file mode 100644 index 0000000000..341bf8a65f --- /dev/null +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.mediaviewer.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeMediaGalleryEntryPoint : MediaGalleryEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + callback: MediaGalleryEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt new file mode 100644 index 0000000000..52e37e84b9 --- /dev/null +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt @@ -0,0 +1,24 @@ +/* + * 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.mediaviewer.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeMediaViewerEntryPoint : MediaViewerEntryPoint { + override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() + + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: MediaViewerEntryPoint.Params, + callback: MediaViewerEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/libraries/roomselect/test/build.gradle.kts b/libraries/roomselect/test/build.gradle.kts new file mode 100644 index 0000000000..c4b63ef3c4 --- /dev/null +++ b/libraries/roomselect/test/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.roomselect.test" +} + +dependencies { + implementation(projects.libraries.architecture) + implementation(projects.libraries.roomselect.api) + implementation(projects.tests.testutils) +} diff --git a/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt b/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt new file mode 100644 index 0000000000..3b0ea4ac53 --- /dev/null +++ b/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.roomselect.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeRoomSelectEntryPoint : RoomSelectEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + params: RoomSelectEntryPoint.Params, + callback: RoomSelectEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/libraries/troubleshoot/test/build.gradle.kts b/libraries/troubleshoot/test/build.gradle.kts index 8321ea5b4f..643afe8272 100644 --- a/libraries/troubleshoot/test/build.gradle.kts +++ b/libraries/troubleshoot/test/build.gradle.kts @@ -13,6 +13,7 @@ android { } dependencies { + implementation(projects.libraries.architecture) implementation(projects.libraries.troubleshoot.api) implementation(projects.tests.testutils) implementation(libs.coroutines.test) diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt new file mode 100644 index 0000000000..84a79382e2 --- /dev/null +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.troubleshoot.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + callback: NotificationTroubleShootEntryPoint.Callback, + ): Node = lambdaError() +} diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt new file mode 100644 index 0000000000..7a4e96b839 --- /dev/null +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.troubleshoot.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakePushHistoryEntryPoint : PushHistoryEntryPoint { + context(parentNode: Node) + override fun createNode( + buildContext: BuildContext, + callback: PushHistoryEntryPoint.Callback, + ): Node = lambdaError() +} From 45400d70d2e7658ea740e9cbb18487a1afe91507 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 30 Oct 2025 18:47:20 +0100 Subject: [PATCH 263/898] Fix typo in package name. --- .../api/ChangeRoomMemberRolesEntryPoint.kt | 2 +- .../features/changeroommemberroles/impl/ChangeRolesNode.kt | 2 +- .../impl/ChangeRoomMemberRolesRootNode.kt | 4 ++-- .../impl/DefaultChangeRoomMemberRolesEntyPoint.kt | 4 ++-- .../changeroommemberroles/impl/ChangeRolesNodeTest.kt | 2 +- .../impl/DefaultChangeRoomMemberRolesEntyPointTest.kt | 2 +- .../test/FakeChangeRoomMemberRolesEntryPoint.kt | 6 +++--- .../io/element/android/features/home/impl/HomeFlowNode.kt | 4 ++-- .../features/roomdetails/impl/RoomDetailsFlowNode.kt | 4 ++-- .../impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt | 4 ++-- .../roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) rename features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/{changeroommemberroes => changeroommemberroles}/api/ChangeRoomMemberRolesEntryPoint.kt (94%) rename features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/{changeroommemberroes => changeroommemberroles}/test/FakeChangeRoomMemberRolesEntryPoint.kt (73%) 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/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt similarity index 94% rename from features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroes/api/ChangeRoomMemberRolesEntryPoint.kt rename to features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt index d21829d695..2b41a0ae76 100644 --- 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/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroes.api +package io.element.android.features.changeroommemberroles.api import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt index 1b9c790b25..9edd20b549 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt @@ -17,7 +17,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.appyx.launchMolecule import io.element.android.libraries.architecture.inputs 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 index 2c3f77f208..a7556ef8ca 100644 --- 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 @@ -20,8 +20,8 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs 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 index a3180c9828..b5aab56ce5 100644 --- 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 @@ -10,8 +10,8 @@ package io.element.android.features.changeroommemberroles.impl import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.ContributesBinding -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.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 diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt index 5a47f52e89..3da57d3380 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt @@ -8,7 +8,7 @@ package io.element.android.features.changeroommemberroles.impl import com.google.common.truth.Truth.assertThat -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.RoomMember import org.junit.Test diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt index c438c5d0e4..efc91b45aa 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt @@ -10,7 +10,7 @@ package io.element.android.features.changeroommemberroles.impl import androidx.test.ext.junit.runners.AndroidJUnit4 import com.bumble.appyx.core.modality.BuildContext import com.google.common.truth.Truth.assertThat -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest diff --git a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt similarity index 73% rename from features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt rename to features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt index 75057654f3..9508447f25 100644 --- a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroes/test/FakeChangeRoomMemberRolesEntryPoint.kt +++ b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -5,12 +5,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroes.test +package io.element.android.features.changeroommemberroles.test import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.tests.testutils.lambda.lambdaError 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 e3d1df3849..b0848d85af 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 @@ -28,8 +28,8 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.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 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 ad70f0f0a0..f5e1307d72 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 @@ -26,8 +26,8 @@ import io.element.android.annotations.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.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.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 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 0dee0c2a54..c923c57f50 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 @@ -20,8 +20,8 @@ import com.bumble.appyx.navmodel.backstack.operation.push import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroes.api.ChangeRoomMemberRolesListType +import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.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 diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index 45a24902ee..0e542a96d6 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -12,7 +12,7 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.call.test.FakeElementCallEntryPoint -import io.element.android.features.changeroommemberroes.test.FakeChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.test.FakeChangeRoomMemberRolesEntryPoint import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint import io.element.android.features.messages.test.FakeMessagesEntryPoint import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint From 031ca4f3337a5e29237b9fe2aa2f00eda6d38f51 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sat, 25 Oct 2025 15:31:10 +0200 Subject: [PATCH 264/898] Notification: show userId in notification when several accounts are configured. --- .../enterprise/test/FakeEnterpriseService.kt | 3 +- .../android/libraries/matrix/test/TestData.kt | 4 +- .../notifications/NotificationDataFactory.kt | 41 +++++------ .../notifications/NotificationRenderer.kt | 20 ++++-- .../notifications/RoomGroupMessageCreator.kt | 14 ++-- .../SummaryGroupMessageCreator.kt | 12 ++-- .../factories/NotificationAccountParams.kt | 17 +++++ .../factories/NotificationCreator.kt | 70 +++++++++---------- .../DefaultBaseRoomGroupMessageCreatorTest.kt | 26 +++---- .../DefaultNotificationDrawerManagerTest.kt | 39 +++++++++-- ...aultOnMissedCallNotificationHandlerTest.kt | 6 +- .../DefaultSummaryGroupMessageCreatorTest.kt | 8 +-- .../NotificationDataFactoryTest.kt | 41 +++++++---- .../notifications/NotificationRendererTest.kt | 23 ++++-- .../DefaultNotificationCreatorTest.kt | 24 +++---- .../factories/NotificationAccountParams.kt | 23 ++++++ .../fake/FakeNotificationCreator.kt | 47 +++++++------ .../fake/FakeNotificationDataFactory.kt | 26 ++++--- .../fake/FakeRoomGroupMessageCreator.kt | 13 ++-- .../fake/FakeSummaryGroupMessageCreator.kt | 10 ++- 20 files changed, 265 insertions(+), 202 deletions(-) create mode 100644 libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt create mode 100644 libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt diff --git a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt index 39b7c320d9..72f7640615 100644 --- a/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt +++ b/features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt @@ -24,11 +24,12 @@ class FakeEnterpriseService( private val defaultHomeserverListResult: () -> List = { emptyList() }, private val isAllowedToConnectToHomeserverResult: (String) -> Boolean = { lambdaError() }, initialSemanticColors: SemanticColorsLightDark = SemanticColorsLightDark.default, + initialBrandColor: Color? = null, private val overrideBrandColorResult: (SessionId?, String?) -> Unit = { _, _ -> lambdaError() }, private val firebasePushGatewayResult: () -> String? = { lambdaError() }, private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() }, ) : EnterpriseService { - private val brandColorState = MutableStateFlow(null) + private val brandColorState = MutableStateFlow(initialBrandColor) private val semanticColorsState = MutableStateFlow(initialSemanticColors) override suspend fun isEnterpriseUser(sessionId: SessionId): Boolean = simulateLongTask { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt index 8db5fc6807..8c22c90cd7 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.matrix.test +import androidx.annotation.ColorInt import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.core.EventId @@ -99,4 +100,5 @@ const val A_FORMATTED_DATE = "April 6, 1980 at 6:35 PM" const val A_LOGIN_HINT = "mxid:@alice:example.org" -const val A_COLOR_INT = 0xFF0000 +@ColorInt +const val A_COLOR_INT: Int = 0xFFFF0000.toInt() diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index a3becd94c1..329d34d5f5 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import android.graphics.Typeface import android.text.style.StyleSpan -import androidx.annotation.ColorInt import androidx.core.text.buildSpannedString import androidx.core.text.inSpans import coil3.ImageLoader @@ -19,8 +18,8 @@ import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.R +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent @@ -31,39 +30,37 @@ import io.element.android.services.toolbox.api.strings.StringProvider interface NotificationDataFactory { suspend fun toNotifications( messages: List, - currentUser: MatrixUser, imageLoader: ImageLoader, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") fun toNotifications( invites: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") fun toNotifications( simpleEvents: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") fun toNotifications( fallback: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List fun createSummaryNotification( - currentUser: MatrixUser, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): SummaryNotification } @@ -77,9 +74,8 @@ class DefaultNotificationDataFactory( ) : NotificationDataFactory { override suspend fun toNotifications( messages: List, - currentUser: MatrixUser, imageLoader: ImageLoader, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { val messagesToDisplay = messages.filterNot { it.canNotBeDisplayed() } .groupBy { it.roomId } @@ -90,13 +86,12 @@ class DefaultNotificationDataFactory( eventsByThreadId.map { (threadId, events) -> val notification = roomGroupMessageCreator.createRoomMessage( - currentUser = currentUser, events = events, roomId = roomId, threadId = threadId, imageLoader = imageLoader, - existingNotification = getExistingNotificationForMessages(currentUser.userId, roomId, threadId), - color = color, + existingNotification = getExistingNotificationForMessages(notificationAccountParams.user.userId, roomId, threadId), + notificationAccountParams = notificationAccountParams, ) RoomNotification( notification = notification, @@ -121,12 +116,12 @@ class DefaultNotificationDataFactory( @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( invites: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return invites.map { event -> OneShotNotification( key = event.roomId.value, - notification = notificationCreator.createRoomInvitationNotification(event, color), + notification = notificationCreator.createRoomInvitationNotification(notificationAccountParams, event), summaryLine = event.description, isNoisy = event.noisy, timestamp = event.timestamp @@ -138,12 +133,12 @@ class DefaultNotificationDataFactory( @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( simpleEvents: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return simpleEvents.map { event -> OneShotNotification( key = event.eventId.value, - notification = notificationCreator.createSimpleEventNotification(event, color), + notification = notificationCreator.createSimpleEventNotification(notificationAccountParams, event), summaryLine = event.description, isNoisy = event.noisy, timestamp = event.timestamp @@ -155,12 +150,12 @@ class DefaultNotificationDataFactory( @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( fallback: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return fallback.map { event -> OneShotNotification( key = event.eventId.value, - notification = notificationCreator.createFallbackNotification(event, color), + notification = notificationCreator.createFallbackNotification(notificationAccountParams, event), summaryLine = event.description.orEmpty(), isNoisy = false, timestamp = event.timestamp @@ -169,23 +164,21 @@ class DefaultNotificationDataFactory( } override fun createSummaryNotification( - currentUser: MatrixUser, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): SummaryNotification { return when { roomNotifications.isEmpty() && invitationNotifications.isEmpty() && simpleNotifications.isEmpty() -> SummaryNotification.Removed else -> SummaryNotification.Update( summaryGroupMessageCreator.createSummaryNotification( - currentUser = currentUser, roomNotifications = roomNotifications, invitationNotifications = invitationNotifications, simpleNotifications = simpleNotifications, fallbackNotifications = fallbackNotifications, - color = color, + notificationAccountParams = notificationAccountParams, ) ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 5248bce175..05b72b0bcd 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -15,6 +15,7 @@ import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationIdProvider +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent @@ -22,6 +23,7 @@ import io.element.android.libraries.push.impl.notifications.model.NotifiableEven import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableRingingCallEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent +import io.element.android.libraries.sessionstorage.api.SessionStore import kotlinx.coroutines.flow.first import timber.log.Timber @@ -32,6 +34,7 @@ class NotificationRenderer( private val notificationDisplayer: NotificationDisplayer, private val notificationDataFactory: NotificationDataFactory, private val enterpriseService: EnterpriseService, + private val sessionStore: SessionStore, ) { suspend fun render( currentUser: MatrixUser, @@ -41,18 +44,23 @@ class NotificationRenderer( ) { val color = enterpriseService.brandColorsFlow(currentUser.userId).first()?.toArgb() ?: NotificationConfig.NOTIFICATION_ACCENT_COLOR + val numberOfAccounts = sessionStore.getAllSessions().size + val notificationAccountParams = NotificationAccountParams( + user = currentUser, + color = color, + showSessionId = numberOfAccounts > 1, + ) val groupedEvents = eventsToProcess.groupByType() - val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, currentUser, imageLoader, color) - val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents, color) - val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents, color) - val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents, color) + val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, imageLoader, notificationAccountParams) + val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents, notificationAccountParams) + val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents, notificationAccountParams) + val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents, notificationAccountParams) val summaryNotification = notificationDataFactory.createSummaryNotification( - currentUser = currentUser, roomNotifications = roomNotifications, invitationNotifications = invitationNotifications, simpleNotifications = simpleNotifications, fallbackNotifications = fallbackNotifications, - color = color, + notificationAccountParams = notificationAccountParams, ) // Remove summary first to avoid briefly displaying it after dismissing the last notification diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt index 853e7ffdfc..79121db5d7 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/RoomGroupMessageCreator.kt @@ -9,15 +9,14 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import android.graphics.Bitmap -import androidx.annotation.ColorInt import coil3.ImageLoader import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.api.notifications.NotificationBitmapLoader import io.element.android.libraries.push.impl.R +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.factories.isSmartReplyError import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent @@ -25,13 +24,12 @@ import io.element.android.services.toolbox.api.strings.StringProvider interface RoomGroupMessageCreator { suspend fun createRoomMessage( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, events: List, roomId: RoomId, threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, - @ColorInt color: Int, ): Notification } @@ -42,13 +40,12 @@ class DefaultRoomGroupMessageCreator( private val notificationCreator: NotificationCreator, ) : RoomGroupMessageCreator { override suspend fun createRoomMessage( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, events: List, roomId: RoomId, threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, - @ColorInt color: Int, ): Notification { val lastKnownRoomEvent = events.last() val roomName = lastKnownRoomEvent.roomName ?: lastKnownRoomEvent.senderDisambiguatedDisplayName ?: "Room name (${roomId.value.take(8)}…)" @@ -66,8 +63,9 @@ class DefaultRoomGroupMessageCreator( val smartReplyErrors = events.filter { it.isSmartReplyError() } val roomIsDm = !roomIsGroup return notificationCreator.createMessagesListNotification( + notificationAccountParams = notificationAccountParams, RoomEventGroupInfo( - sessionId = currentUser.userId, + sessionId = notificationAccountParams.user.userId, roomId = roomId, roomDisplayName = roomName, isDm = roomIsDm, @@ -80,11 +78,9 @@ class DefaultRoomGroupMessageCreator( largeIcon = largeBitmap, lastMessageTimestamp = lastMessageTimestamp, tickerText = tickerText, - currentUser = currentUser, existingNotification = existingNotification, imageLoader = imageLoader, events = events, - color = color, ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt index 85947226f1..8600472c9d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt @@ -8,22 +8,20 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification -import androidx.annotation.ColorInt import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.R +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.services.toolbox.api.strings.StringProvider interface SummaryGroupMessageCreator { fun createSummaryNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, ): Notification } @@ -42,12 +40,11 @@ class DefaultSummaryGroupMessageCreator( private val notificationCreator: NotificationCreator, ) : SummaryGroupMessageCreator { override fun createSummaryNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, ): Notification { val summaryIsNoisy = roomNotifications.any { it.shouldBing } || invitationNotifications.any { it.isNoisy } || @@ -61,11 +58,10 @@ class DefaultSummaryGroupMessageCreator( val nbEvents = roomNotifications.size + simpleNotifications.size val sumTitle = stringProvider.getQuantityString(R.plurals.notification_compat_summary_title, nbEvents, nbEvents) return notificationCreator.createSummaryListNotification( - currentUser, + notificationAccountParams = notificationAccountParams, sumTitle, noisy = summaryIsNoisy, lastMessageTimestamp = lastMessageTimestamp, - color = color, ) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt new file mode 100644 index 0000000000..da122b6a2a --- /dev/null +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.push.impl.notifications.factories + +import androidx.annotation.ColorInt +import io.element.android.libraries.matrix.api.user.MatrixUser + +data class NotificationAccountParams( + val user: MatrixUser, + @ColorInt val color: Int, + val showSessionId: Boolean, +) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index efe54bd3d9..411cb25db1 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -47,42 +47,40 @@ interface NotificationCreator { * Create a notification for a Room. */ suspend fun createMessagesListNotification( + notificationAccountParams: NotificationAccountParams, roomInfo: RoomEventGroupInfo, threadId: ThreadId?, largeIcon: Bitmap?, lastMessageTimestamp: Long, tickerText: String, - currentUser: MatrixUser, existingNotification: Notification?, imageLoader: ImageLoader, events: List, - @ColorInt color: Int, ): Notification fun createRoomInvitationNotification( + notificationAccountParams: NotificationAccountParams, inviteNotifiableEvent: InviteNotifiableEvent, - @ColorInt color: Int, ): Notification fun createSimpleEventNotification( + notificationAccountParams: NotificationAccountParams, simpleNotifiableEvent: SimpleNotifiableEvent, - @ColorInt color: Int, ): Notification fun createFallbackNotification( + notificationAccountParams: NotificationAccountParams, fallbackNotifiableEvent: FallbackNotifiableEvent, - @ColorInt color: Int, ): Notification /** * Create the summary notification. */ fun createSummaryListNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, compatSummary: String, noisy: Boolean, lastMessageTimestamp: Long, - @ColorInt color: Int, ): Notification fun createDiagnosticNotification( @@ -118,16 +116,15 @@ class DefaultNotificationCreator( * Create a notification for a Room. */ override suspend fun createMessagesListNotification( + notificationAccountParams: NotificationAccountParams, roomInfo: RoomEventGroupInfo, threadId: ThreadId?, largeIcon: Bitmap?, lastMessageTimestamp: Long, tickerText: String, - currentUser: MatrixUser, existingNotification: Notification?, imageLoader: ImageLoader, events: List, - @ColorInt color: Int, ): Notification { // Build the pending intent for when the notification is clicked val eventId = events.firstOrNull()?.eventId @@ -135,7 +132,6 @@ class DefaultNotificationCreator( threadId != null -> pendingIntentFactory.createOpenThreadPendingIntent(roomInfo.sessionId, roomInfo.roomId, eventId, threadId) else -> pendingIntentFactory.createOpenRoomPendingIntent(roomInfo.sessionId, roomInfo.roomId, eventId) } - val smallIcon = CommonDrawables.ic_notification val containsMissedCall = events.any { it.type == EventType.RTC_NOTIFICATION } val channelId = if (containsMissedCall) { notificationChannels.getChannelForIncomingCall(false) @@ -172,7 +168,7 @@ class DefaultNotificationCreator( val messagingStyle = existingNotification?.let { MessagingStyle.extractMessagingStyleFromNotification(it) } ?: messagingStyleFromCurrentUser( - user = currentUser, + user = notificationAccountParams.user, imageLoader = imageLoader, roomName = roomInfo.roomDisplayName, isThread = threadId != null, @@ -187,9 +183,7 @@ class DefaultNotificationCreator( .setWhen(lastMessageTimestamp) // MESSAGING_STYLE sets title and content for API 16 and above devices. .setStyle(messagingStyle) - .setSmallIcon(smallIcon) - // Set primary color (important for Wear 2.0 Notifications). - .setColor(color) + .configureWith(notificationAccountParams) // Sets priority for 25 and below. For 26 and above, 'priority' is deprecated for // 'importance' which is set in the NotificationChannel. The integers representing // 'priority' are different from 'importance', so make sure you don't mix them. @@ -202,7 +196,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(color, 500, 500) + setLights(notificationAccountParams.color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -234,10 +228,9 @@ class DefaultNotificationCreator( } override fun createRoomInvitationNotification( + notificationAccountParams: NotificationAccountParams, inviteNotifiableEvent: InviteNotifiableEvent, - @ColorInt color: Int, ): Notification { - val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(inviteNotifiableEvent.noisy) return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) @@ -245,8 +238,7 @@ class DefaultNotificationCreator( .setContentText(inviteNotifiableEvent.description.annotateForDebug(6)) .setGroup(inviteNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) - .setSmallIcon(smallIcon) - .setColor(color) + .configureWith(notificationAccountParams) .apply { addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) @@ -261,7 +253,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(color, 500, 500) + setLights(notificationAccountParams.color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -277,10 +269,9 @@ class DefaultNotificationCreator( } override fun createSimpleEventNotification( + notificationAccountParams: NotificationAccountParams, simpleNotifiableEvent: SimpleNotifiableEvent, - @ColorInt color: Int, ): Notification { - val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(simpleNotifiableEvent.noisy) return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) @@ -288,8 +279,7 @@ class DefaultNotificationCreator( .setContentText(simpleNotifiableEvent.description.annotateForDebug(8)) .setGroup(simpleNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) - .setSmallIcon(smallIcon) - .setColor(color) + .configureWith(notificationAccountParams) .setAutoCancel(true) .setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(simpleNotifiableEvent.sessionId, simpleNotifiableEvent.roomId, null)) .apply { @@ -301,7 +291,7 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(color, 500, 500) + setLights(notificationAccountParams.color, 500, 500) } else { priority = NotificationCompat.PRIORITY_LOW } @@ -310,10 +300,9 @@ class DefaultNotificationCreator( } override fun createFallbackNotification( + notificationAccountParams: NotificationAccountParams, fallbackNotifiableEvent: FallbackNotifiableEvent, - @ColorInt color: Int, ): Notification { - val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(false) return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) @@ -321,8 +310,7 @@ class DefaultNotificationCreator( .setContentText(fallbackNotifiableEvent.description.orEmpty().annotateForDebug(8)) .setGroup(fallbackNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) - .setSmallIcon(smallIcon) - .setColor(color) + .configureWith(notificationAccountParams) .setAutoCancel(true) .setWhen(fallbackNotifiableEvent.timestamp) // Ideally we'd use `createOpenRoomPendingIntent` here, but the broken notification might apply to an invite @@ -343,24 +331,22 @@ class DefaultNotificationCreator( * Create the summary notification. */ override fun createSummaryListNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, compatSummary: String, noisy: Boolean, lastMessageTimestamp: Long, - @ColorInt color: Int, ): Notification { - val smallIcon = CommonDrawables.ic_notification val channelId = notificationChannels.getChannelIdForMessage(noisy) + val userId = notificationAccountParams.user.userId return NotificationCompat.Builder(context, channelId) .setOnlyAlertOnce(true) // used in compat < N, after summary is built based on child notifications .setWhen(lastMessageTimestamp) .setCategory(NotificationCompat.CATEGORY_MESSAGE) - .setSmallIcon(smallIcon) - .setGroup(currentUser.userId.value) + .setGroup(userId.value) // set this notification as the summary for the group .setGroupSummary(true) - .setColor(color) + .configureWith(notificationAccountParams) .apply { if (noisy) { // Compat @@ -370,14 +356,14 @@ class DefaultNotificationCreator( setSound(it) } */ - setLights(color, 500, 500) + setLights(notificationAccountParams.color, 500, 500) } else { // compat priority = NotificationCompat.PRIORITY_LOW } } - .setContentIntent(pendingIntentFactory.createOpenSessionPendingIntent(currentUser.userId)) - .setDeleteIntent(pendingIntentFactory.createDismissSummaryPendingIntent(currentUser.userId)) + .setContentIntent(pendingIntentFactory.createOpenSessionPendingIntent(userId)) + .setDeleteIntent(pendingIntentFactory.createDismissSummaryPendingIntent(userId)) .build() } @@ -487,4 +473,12 @@ class DefaultNotificationCreator( } } +private fun NotificationCompat.Builder.configureWith(notificationAccountParams: NotificationAccountParams) = apply { + setSmallIcon(CommonDrawables.ic_notification) + setColor(notificationAccountParams.color) + if (notificationAccountParams.showSessionId) { + setSubText(notificationAccountParams.user.userId.value) + } +} + fun NotifiableMessageEvent.isSmartReplyError() = outGoingMessage && outGoingMessageFailed diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt index 694319c9e7..00848390b5 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt @@ -13,7 +13,6 @@ import androidx.core.app.NotificationCompat import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.matrix.api.media.MediaSource -import io.element.android.libraries.matrix.test.A_COLOR_INT import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_TIMESTAMP import io.element.android.libraries.matrix.ui.components.aMatrixUser @@ -21,6 +20,7 @@ import io.element.android.libraries.matrix.ui.media.AVATAR_THUMBNAIL_SIZE_IN_PIX import io.element.android.libraries.matrix.ui.media.MediaRequestData import io.element.android.libraries.push.impl.notifications.factories.MARK_AS_READ_ACTION_TITLE import io.element.android.libraries.push.impl.notifications.factories.QUICK_REPLY_ACTION_TITLE +import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.createNotificationCreator import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeImageLoader @@ -44,7 +44,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { val sut = createRoomGroupMessageCreator() val fakeImageLoader = FakeImageLoader() val result = sut.createRoomMessage( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP).copy( imageUriString = "aUri", @@ -54,7 +54,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) @Suppress("DEPRECATION") @@ -68,7 +67,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { val sut = createRoomGroupMessageCreator() val fakeImageLoader = FakeImageLoader() val result = sut.createRoomMessage( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP).copy( noisy = true, @@ -78,7 +77,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) @Suppress("DEPRECATION") assertThat(result.priority).isEqualTo(NotificationCompat.PRIORITY_DEFAULT) @@ -130,9 +128,11 @@ class DefaultBaseRoomGroupMessageCreatorTest { sdkIntProvider = FakeBuildVersionSdkIntProvider(api) ) val result = sut.createRoomMessage( - currentUser = aMatrixUser( - // Some user avatar - avatarUrl = A_USER_AVATAR_1, + notificationAccountParams = aNotificationAccountParams( + user = aMatrixUser( + // Some user avatar + avatarUrl = A_USER_AVATAR_1, + ) ), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP).copy( @@ -144,7 +144,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) assertThat(fakeImageLoader.getCoilRequests()).containsExactlyElementsIn(expectedCoilRequests) @@ -155,7 +154,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { val sut = createRoomGroupMessageCreator() val fakeImageLoader = FakeImageLoader() val result = sut.createRoomMessage( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP), aNotifiableMessageEvent(timestamp = A_TIMESTAMP + 10), @@ -164,7 +163,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(2) assertThat(result.`when`).isEqualTo(A_TIMESTAMP + 10) @@ -183,7 +181,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { val sut = createRoomGroupMessageCreator() val fakeImageLoader = FakeImageLoader() val result = sut.createRoomMessage( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP).copy( outGoingMessage = true, @@ -194,7 +192,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( @@ -210,7 +207,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { val sut = createRoomGroupMessageCreator() val fakeImageLoader = FakeImageLoader() val result = sut.createRoomMessage( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), events = listOf( aNotifiableMessageEvent(timestamp = A_TIMESTAMP).copy( roomIsDm = true, @@ -220,7 +217,6 @@ class DefaultBaseRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, threadId = null, - color = A_COLOR_INT, ) assertThat(result.number).isEqualTo(1) assertThat(result.`when`).isEqualTo(A_TIMESTAMP) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index b2a4cc1c9b..275c1ac490 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -8,8 +8,10 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification +import androidx.compose.ui.graphics.Color import androidx.core.app.NotificationManagerCompat import com.google.common.truth.Truth.assertThat +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_EVENT_ID @@ -21,12 +23,15 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.push.api.notifications.NotificationIdProvider +import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator import io.element.android.libraries.push.impl.notifications.fake.FakeRoomGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fake.FakeSummaryGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder +import io.element.android.libraries.sessionstorage.api.SessionStore +import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.services.appnavstate.api.AppNavigationState import io.element.android.services.appnavstate.api.AppNavigationStateService import io.element.android.services.appnavstate.api.NavigationState @@ -64,8 +69,8 @@ class DefaultNotificationDrawerManagerTest { // For now just call all the API. Later, add more valuable tests. val matrixUser = aMatrixUser(id = A_SESSION_ID.value, displayName = "alice", avatarUrl = "mxc://data") val mockRoomGroupMessageCreator = FakeRoomGroupMessageCreator( - createRoomMessageResult = lambdaRecorder { user, _, roomId, _, _, existingNotification -> - assertThat(user).isEqualTo(matrixUser) + createRoomMessageResult = lambdaRecorder { notificationAccountParams, _, roomId, _, _, existingNotification -> + assertThat(notificationAccountParams.user).isEqualTo(matrixUser) assertThat(roomId).isEqualTo(A_ROOM_ID) assertThat(existingNotification).isNull() Notification() @@ -128,6 +133,9 @@ class DefaultNotificationDrawerManagerTest { val defaultNotificationDrawerManager = createDefaultNotificationDrawerManager( matrixClientProvider = matrixClientProvider, roomGroupMessageCreator = messageCreator, + enterpriseService = FakeEnterpriseService( + initialBrandColor = Color.Red, + ) ) // Gets a display name from MatrixClient.getUserProfile matrixClient.givenGetProfileResult(A_SESSION_ID, Result.success(aMatrixUser(id = A_SESSION_ID.value, displayName = "alice"))) @@ -144,15 +152,29 @@ class DefaultNotificationDrawerManagerTest { messageCreator.createRoomMessageResult.assertions() .isCalledExactly(3) .withSequence( - listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = "alice")), any(), any(), any(), any(), any()), - listOf(value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value)), any(), any(), any(), any(), any()), listOf( - value(aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value, avatarUrl = AN_AVATAR_URL)), + value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = "alice"))), + any(), + any(), + any(), + any(), + any(), + ), + listOf( + value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value))), + any(), + any(), + any(), + any(), + any(), + ), + listOf( + value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value, avatarUrl = AN_AVATAR_URL))), + any(), any(), any(), any(), any(), - any() ), ) @@ -194,6 +216,8 @@ class DefaultNotificationDrawerManagerTest { summaryGroupMessageCreator: SummaryGroupMessageCreator = FakeSummaryGroupMessageCreator(), activeNotificationsProvider: FakeActiveNotificationsProvider = FakeActiveNotificationsProvider(), matrixClientProvider: FakeMatrixClientProvider = FakeMatrixClientProvider(), + sessionStore: SessionStore = InMemorySessionStore(), + enterpriseService: EnterpriseService = FakeEnterpriseService(), ): DefaultNotificationDrawerManager { val context = RuntimeEnvironment.getApplication() return DefaultNotificationDrawerManager( @@ -207,7 +231,8 @@ class DefaultNotificationDrawerManagerTest { activeNotificationsProvider = activeNotificationsProvider, stringProvider = FakeStringProvider(), ), - enterpriseService = FakeEnterpriseService(), + enterpriseService = enterpriseService, + sessionStore = sessionStore, ), appNavigationStateService = appNavigationStateService, coroutineScope = this, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt index 8b668a7f77..e5a4b01043 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.push.impl.notifications -import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID @@ -18,7 +17,6 @@ import io.element.android.libraries.matrix.test.notification.FakeNotificationSer import io.element.android.libraries.matrix.test.notification.aNotificationData import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDataFactory -import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeCallNotificationEventResolver import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder @@ -53,10 +51,8 @@ class DefaultOnMissedCallNotificationHandlerTest { matrixClientProvider = matrixClientProvider, defaultNotificationDrawerManager = DefaultNotificationDrawerManager( notificationManager = mockk(relaxed = true), - notificationRenderer = NotificationRenderer( - notificationDisplayer = FakeNotificationDisplayer(), + notificationRenderer = createNotificationRenderer( notificationDataFactory = dataFactory, - enterpriseService = FakeEnterpriseService(), ), appNavigationStateService = FakeAppNavigationStateService(), coroutineScope = backgroundScope, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt index e34ea0848c..f701dae6c7 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultSummaryGroupMessageCreatorTest.kt @@ -10,9 +10,8 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import androidx.core.app.NotificationCompat import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.matrix.test.A_COLOR_INT import io.element.android.libraries.matrix.test.A_ROOM_ID -import io.element.android.libraries.matrix.ui.components.aMatrixUser +import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.services.toolbox.test.systemclock.A_FAKE_TIMESTAMP @@ -34,7 +33,7 @@ class DefaultSummaryGroupMessageCreatorTest { ) val result = summaryCreator.createSummaryNotification( - currentUser = aMatrixUser(), + notificationAccountParams = aNotificationAccountParams(), roomNotifications = listOf( RoomNotification( notification = Notification(), @@ -49,12 +48,11 @@ class DefaultSummaryGroupMessageCreatorTest { invitationNotifications = emptyList(), simpleNotifications = emptyList(), fallbackNotifications = emptyList(), - color = A_COLOR_INT, ) notificationCreator.createSummaryListNotificationResult.assertions() .isCalledOnce() - .with(any(), nonNull(), any(), any()) + .with(any(), any(), nonNull(), any(), any()) // Set from the events included @Suppress("DEPRECATION") diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index f563106c14..2b11ce949b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -11,9 +11,9 @@ import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID -import io.element.android.libraries.matrix.test.A_COLOR_INT 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.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator import io.element.android.libraries.push.impl.notifications.fake.FakeRoomGroupMessageCreator @@ -51,10 +51,13 @@ class NotificationDataFactoryTest { @Test fun `given a room invitation when mapping to notification then it's added`() = testWith(notificationDataFactory) { - val expectedNotification = notificationCreator.createRoomInvitationNotificationResult(AN_INVITATION_EVENT) + val expectedNotification = notificationCreator.createRoomInvitationNotificationResult( + aNotificationAccountParams(), + AN_INVITATION_EVENT, + ) val roomInvitation = listOf(AN_INVITATION_EVENT) - val result = toNotifications(roomInvitation, A_COLOR_INT) + val result = toNotifications(roomInvitation, aNotificationAccountParams()) assertThat(result).isEqualTo( listOf( @@ -71,10 +74,13 @@ class NotificationDataFactoryTest { @Test fun `given a simple event when mapping to notification then it's added`() = testWith(notificationDataFactory) { - val expectedNotification = notificationCreator.createRoomInvitationNotificationResult(AN_INVITATION_EVENT) + val expectedNotification = notificationCreator.createRoomInvitationNotificationResult( + aNotificationAccountParams(), + AN_INVITATION_EVENT, + ) val roomInvitation = listOf(A_SIMPLE_EVENT) - val result = toNotifications(roomInvitation, A_COLOR_INT) + val result = toNotifications(roomInvitation, aNotificationAccountParams()) assertThat(result).isEqualTo( listOf( @@ -94,13 +100,14 @@ class NotificationDataFactoryTest { val events = listOf(A_MESSAGE_EVENT) val expectedNotification = RoomNotification( notification = fakeRoomGroupMessageCreator.createRoomMessage( - currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + notificationAccountParams = aNotificationAccountParams( + user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + ), events = events, roomId = A_ROOM_ID, threadId = null, imageLoader = FakeImageLoader().getImageLoader(), existingNotification = null, - color = A_COLOR_INT, ), roomId = A_ROOM_ID, summaryLine = "A room name: Bob Hello world!", @@ -113,10 +120,11 @@ class NotificationDataFactoryTest { val fakeImageLoader = FakeImageLoader() val result = toNotifications( + notificationAccountParams = aNotificationAccountParams( + user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + ), messages = roomWithMessage, - currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), - color = A_COLOR_INT, ) assertThat(result.size).isEqualTo(1) @@ -130,10 +138,11 @@ class NotificationDataFactoryTest { val fakeImageLoader = FakeImageLoader() val result = toNotifications( + notificationAccountParams = aNotificationAccountParams( + user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + ), messages = redactedRoom, - currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), - color = A_COLOR_INT, ) assertThat(result).isEmpty() @@ -151,13 +160,14 @@ class NotificationDataFactoryTest { val withRedactedRemoved = listOf(A_MESSAGE_EVENT.copy(eventId = EventId("\$not-redacted"))) val expectedNotification = RoomNotification( notification = fakeRoomGroupMessageCreator.createRoomMessage( - currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + notificationAccountParams = aNotificationAccountParams( + user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + ), events = withRedactedRemoved, roomId = A_ROOM_ID, threadId = null, imageLoader = FakeImageLoader().getImageLoader(), existingNotification = null, - color = A_COLOR_INT, ), roomId = A_ROOM_ID, summaryLine = "A room name: Bob Hello world!", @@ -169,10 +179,11 @@ class NotificationDataFactoryTest { val fakeImageLoader = FakeImageLoader() val result = toNotifications( + notificationAccountParams = aNotificationAccountParams( + user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), + ), messages = roomWithRedactedMessage, - currentUser = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), imageLoader = fakeImageLoader.getImageLoader(), - color = A_COLOR_INT, ) assertThat(result.size).isEqualTo(1) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index 589d7876f5..1026dca849 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.push.impl.notifications +import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID @@ -15,6 +16,7 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.push.api.notifications.NotificationIdProvider import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator +import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDataFactory import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.push.impl.notifications.fake.FakeRoomGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fake.FakeSummaryGroupMessageCreator @@ -24,6 +26,8 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNoti import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.test.notifications.FakeImageLoader +import io.element.android.libraries.sessionstorage.api.SessionStore +import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -56,10 +60,9 @@ class NotificationRendererTest { ) private val notificationIdProvider = NotificationIdProvider - private val notificationRenderer = NotificationRenderer( + private val notificationRenderer = createNotificationRenderer( notificationDisplayer = notificationDisplayer, notificationDataFactory = notificationDataFactory, - enterpriseService = FakeEnterpriseService(), ) @Test @@ -83,7 +86,7 @@ class NotificationRendererTest { @Test fun `given a simple notification is added when rendering then show the simple notification and update summary`() = runTest { - notificationCreator.createSimpleNotificationResult = lambdaRecorder { _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } + notificationCreator.createSimpleNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } renderEventsAsNotifications(listOf(aSimpleNotifiableEvent(eventId = AN_EVENT_ID))) @@ -95,7 +98,7 @@ class NotificationRendererTest { @Test fun `given an invitation notification is added when rendering then show the invitation notification and update summary`() = runTest { - notificationCreator.createRoomInvitationNotificationResult = lambdaRecorder { _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } + notificationCreator.createRoomInvitationNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } renderEventsAsNotifications(listOf(anInviteNotifiableEvent())) @@ -114,3 +117,15 @@ class NotificationRendererTest { ) } } + +fun createNotificationRenderer( + notificationDisplayer: NotificationDisplayer = FakeNotificationDisplayer(), + notificationDataFactory: NotificationDataFactory = FakeNotificationDataFactory(), + enterpriseService: EnterpriseService = FakeEnterpriseService(), + sessionStore: SessionStore = InMemorySessionStore(), +) = NotificationRenderer( + notificationDisplayer = notificationDisplayer, + notificationDataFactory = notificationDataFactory, + enterpriseService = enterpriseService, + sessionStore = sessionStore, +) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index 045cc0492d..df9f106972 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -65,6 +65,7 @@ class DefaultNotificationCreatorTest { fun `test createFallbackNotification`() { val sut = createNotificationCreator() val result = sut.createFallbackNotification( + notificationAccountParams = aNotificationAccountParams(), FallbackNotifiableEvent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -77,7 +78,6 @@ class DefaultNotificationCreatorTest { timestamp = A_FAKE_TIMESTAMP, cause = null, ), - color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -88,6 +88,7 @@ class DefaultNotificationCreatorTest { fun `test createSimpleEventNotification`() { val sut = createNotificationCreator() val result = sut.createSimpleEventNotification( + notificationAccountParams = aNotificationAccountParams(), SimpleNotifiableEvent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -103,7 +104,6 @@ class DefaultNotificationCreatorTest { isRedacted = false, isUpdated = false, ), - color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -114,6 +114,7 @@ class DefaultNotificationCreatorTest { fun `test createSimpleEventNotification noisy`() { val sut = createNotificationCreator() val result = sut.createSimpleEventNotification( + notificationAccountParams = aNotificationAccountParams(), SimpleNotifiableEvent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -129,7 +130,6 @@ class DefaultNotificationCreatorTest { isRedacted = false, isUpdated = false, ), - color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -140,6 +140,7 @@ class DefaultNotificationCreatorTest { fun `test createRoomInvitationNotification`() { val sut = createNotificationCreator() val result = sut.createRoomInvitationNotification( + notificationAccountParams = aNotificationAccountParams(), InviteNotifiableEvent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -156,7 +157,6 @@ class DefaultNotificationCreatorTest { isUpdated = false, roomName = "roomName", ), - color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -174,6 +174,7 @@ class DefaultNotificationCreatorTest { fun `test createRoomInvitationNotification noisy`() { val sut = createNotificationCreator() val result = sut.createRoomInvitationNotification( + notificationAccountParams = aNotificationAccountParams(), InviteNotifiableEvent( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -190,7 +191,6 @@ class DefaultNotificationCreatorTest { isUpdated = false, roomName = "roomName", ), - color = A_COLOR_INT, ) result.commonAssertions( expectedCategory = null, @@ -202,11 +202,10 @@ class DefaultNotificationCreatorTest { val sut = createNotificationCreator() val matrixUser = aMatrixUser() val result = sut.createSummaryListNotification( - currentUser = matrixUser, + notificationAccountParams = aNotificationAccountParams(user = matrixUser), compatSummary = "compatSummary", noisy = false, lastMessageTimestamp = 123_456L, - color = A_COLOR_INT, ) result.commonAssertions( expectedGroup = matrixUser.userId.value, @@ -218,11 +217,10 @@ class DefaultNotificationCreatorTest { val sut = createNotificationCreator() val matrixUser = aMatrixUser() val result = sut.createSummaryListNotification( - currentUser = matrixUser, + notificationAccountParams = aNotificationAccountParams(user = matrixUser), compatSummary = "compatSummary", noisy = true, lastMessageTimestamp = 123_456L, - color = A_COLOR_INT, ) result.commonAssertions( expectedGroup = matrixUser.userId.value, @@ -232,8 +230,8 @@ class DefaultNotificationCreatorTest { @Test fun `test createMessagesListNotification`() = runTest { val sut = createNotificationCreator() - aMatrixUser() val result = sut.createMessagesListNotification( + notificationAccountParams = aNotificationAccountParams(), roomInfo = RoomEventGroupInfo( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -247,11 +245,9 @@ class DefaultNotificationCreatorTest { largeIcon = null, lastMessageTimestamp = 123_456L, tickerText = "tickerText", - currentUser = aMatrixUser(), existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), events = listOf(aNotifiableMessageEvent()), - color = A_COLOR_INT, ) result.commonAssertions() } @@ -259,8 +255,8 @@ class DefaultNotificationCreatorTest { @Test fun `test createMessagesListNotification should bing and thread`() = runTest { val sut = createNotificationCreator() - aMatrixUser() val result = sut.createMessagesListNotification( + notificationAccountParams = aNotificationAccountParams(), roomInfo = RoomEventGroupInfo( sessionId = A_SESSION_ID, roomId = A_ROOM_ID, @@ -274,11 +270,9 @@ class DefaultNotificationCreatorTest { largeIcon = null, lastMessageTimestamp = 123_456L, tickerText = "tickerText", - currentUser = aMatrixUser(), existingNotification = null, imageLoader = FakeImageLoader().getImageLoader(), events = listOf(aNotifiableMessageEvent()), - color = A_COLOR_INT, ) result.commonAssertions() } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt new file mode 100644 index 0000000000..eca910b07e --- /dev/null +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationAccountParams.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.push.impl.notifications.factories + +import androidx.annotation.ColorInt +import io.element.android.libraries.matrix.api.user.MatrixUser +import io.element.android.libraries.matrix.test.A_COLOR_INT +import io.element.android.libraries.matrix.ui.components.aMatrixUser + +fun aNotificationAccountParams( + user: MatrixUser = aMatrixUser(), + @ColorInt color: Int = A_COLOR_INT, + showSessionId: Boolean = false, +) = NotificationAccountParams( + user = user, + color = color, + showSessionId = showSessionId, +) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt index 1cc4468b15..3a4acb757f 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationCreator.kt @@ -12,81 +12,84 @@ import android.graphics.Bitmap import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.core.ThreadId -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.RoomEventGroupInfo +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.NotificationCreator import io.element.android.libraries.push.impl.notifications.fixtures.A_NOTIFICATION import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent -import io.element.android.tests.testutils.lambda.LambdaFourParamsRecorder +import io.element.android.tests.testutils.lambda.LambdaFiveParamsRecorder import io.element.android.tests.testutils.lambda.LambdaListAnyParamsRecorder -import io.element.android.tests.testutils.lambda.LambdaNoParamRecorder import io.element.android.tests.testutils.lambda.LambdaOneParamRecorder +import io.element.android.tests.testutils.lambda.LambdaTwoParamsRecorder import io.element.android.tests.testutils.lambda.lambdaAnyRecorder import io.element.android.tests.testutils.lambda.lambdaRecorder class FakeNotificationCreator( var createMessagesListNotificationResult: LambdaListAnyParamsRecorder = lambdaAnyRecorder { A_NOTIFICATION }, - var createRoomInvitationNotificationResult: LambdaOneParamRecorder = lambdaRecorder { _ -> A_NOTIFICATION }, - var createSimpleNotificationResult: LambdaOneParamRecorder = lambdaRecorder { _ -> A_NOTIFICATION }, - var createFallbackNotificationResult: LambdaOneParamRecorder = lambdaRecorder { _ -> A_NOTIFICATION }, - var createSummaryListNotificationResult: LambdaFourParamsRecorder = - lambdaRecorder { _, _, _, _ -> A_NOTIFICATION }, - var createDiagnosticNotificationResult: LambdaNoParamRecorder = lambdaRecorder { A_NOTIFICATION }, + var createRoomInvitationNotificationResult: LambdaTwoParamsRecorder = + lambdaRecorder { _, _ -> A_NOTIFICATION }, + var createSimpleNotificationResult: LambdaTwoParamsRecorder = + lambdaRecorder { _, _ -> A_NOTIFICATION }, + var createFallbackNotificationResult: LambdaTwoParamsRecorder = + lambdaRecorder { _, _ -> A_NOTIFICATION }, + var createSummaryListNotificationResult: LambdaFiveParamsRecorder< + NotificationAccountParams, String, Boolean, Long, NotificationAccountParams, Notification + > = lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION }, + var createDiagnosticNotificationResult: LambdaOneParamRecorder = + lambdaRecorder { _ -> A_NOTIFICATION }, ) : NotificationCreator { override suspend fun createMessagesListNotification( + notificationAccountParams: NotificationAccountParams, roomInfo: RoomEventGroupInfo, threadId: ThreadId?, largeIcon: Bitmap?, lastMessageTimestamp: Long, tickerText: String, - currentUser: MatrixUser, existingNotification: Notification?, imageLoader: ImageLoader, events: List, - @ColorInt color: Int, ): Notification { return createMessagesListNotificationResult( - listOf(roomInfo, threadId, largeIcon, lastMessageTimestamp, tickerText, currentUser, existingNotification, imageLoader, events) + listOf(notificationAccountParams, roomInfo, threadId, largeIcon, lastMessageTimestamp, tickerText, existingNotification, imageLoader, events) ) } override fun createRoomInvitationNotification( + notificationAccountParams: NotificationAccountParams, inviteNotifiableEvent: InviteNotifiableEvent, - @ColorInt color: Int, ): Notification { - return createRoomInvitationNotificationResult(inviteNotifiableEvent) + return createRoomInvitationNotificationResult(notificationAccountParams, inviteNotifiableEvent) } override fun createSimpleEventNotification( + notificationAccountParams: NotificationAccountParams, simpleNotifiableEvent: SimpleNotifiableEvent, - @ColorInt color: Int, ): Notification { - return createSimpleNotificationResult(simpleNotifiableEvent) + return createSimpleNotificationResult(notificationAccountParams, simpleNotifiableEvent) } override fun createFallbackNotification( + notificationAccountParams: NotificationAccountParams, fallbackNotifiableEvent: FallbackNotifiableEvent, - @ColorInt color: Int, ): Notification { - return createFallbackNotificationResult(fallbackNotifiableEvent) + return createFallbackNotificationResult(notificationAccountParams, fallbackNotifiableEvent) } override fun createSummaryListNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, compatSummary: String, noisy: Boolean, lastMessageTimestamp: Long, - @ColorInt color: Int, ): Notification { - return createSummaryListNotificationResult(currentUser, compatSummary, noisy, lastMessageTimestamp) + return createSummaryListNotificationResult(notificationAccountParams, compatSummary, noisy, lastMessageTimestamp, notificationAccountParams) } override fun createDiagnosticNotification( @ColorInt color: Int, ): Notification { - return createDiagnosticNotificationResult() + return createDiagnosticNotificationResult(color) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt index 9a0a5fe7ef..a897dbfc09 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt @@ -7,13 +7,12 @@ package io.element.android.libraries.push.impl.notifications.fake -import androidx.annotation.ColorInt import coil3.ImageLoader -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.NotificationDataFactory import io.element.android.libraries.push.impl.notifications.OneShotNotification import io.element.android.libraries.push.impl.notifications.RoomNotification import io.element.android.libraries.push.impl.notifications.SummaryNotification +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.fixtures.A_NOTIFICATION import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent @@ -25,14 +24,15 @@ import io.element.android.tests.testutils.lambda.LambdaThreeParamsRecorder import io.element.android.tests.testutils.lambda.lambdaRecorder class FakeNotificationDataFactory( - var messageEventToNotificationsResult: LambdaThreeParamsRecorder, MatrixUser, ImageLoader, List> = - lambdaRecorder { _, _, _ -> emptyList() }, + var messageEventToNotificationsResult: LambdaThreeParamsRecorder< + List, ImageLoader, NotificationAccountParams, List + > = lambdaRecorder { _, _, _ -> emptyList() }, var summaryToNotificationsResult: LambdaFiveParamsRecorder< - MatrixUser, List, List, List, List, + NotificationAccountParams, SummaryNotification > = lambdaRecorder { _, _, _, _, _ -> SummaryNotification.Update(A_NOTIFICATION) }, var inviteToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, @@ -42,18 +42,17 @@ class FakeNotificationDataFactory( ) : NotificationDataFactory { override suspend fun toNotifications( messages: List, - currentUser: MatrixUser, imageLoader: ImageLoader, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { - return messageEventToNotificationsResult(messages, currentUser, imageLoader) + return messageEventToNotificationsResult(messages, imageLoader, notificationAccountParams) } @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( invites: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return inviteToNotificationsResult(invites) } @@ -62,7 +61,7 @@ class FakeNotificationDataFactory( @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( simpleEvents: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return simpleEventToNotificationsResult(simpleEvents) } @@ -71,25 +70,24 @@ class FakeNotificationDataFactory( @Suppress("INAPPLICABLE_JVM_NAME") override fun toNotifications( fallback: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): List { return fallbackEventToNotificationsResult(fallback) } override fun createSummaryNotification( - currentUser: MatrixUser, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, + notificationAccountParams: NotificationAccountParams, ): SummaryNotification { return summaryToNotificationsResult( - currentUser, roomNotifications, invitationNotifications, simpleNotifications, fallbackNotifications, + notificationAccountParams, ) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt index 351300937b..6bb5b63977 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeRoomGroupMessageCreator.kt @@ -8,12 +8,11 @@ package io.element.android.libraries.push.impl.notifications.fake import android.app.Notification -import androidx.annotation.ColorInt import coil3.ImageLoader import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.RoomGroupMessageCreator +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.fixtures.A_NOTIFICATION import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.tests.testutils.lambda.LambdaSixParamsRecorder @@ -22,18 +21,18 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder // We just can't make the param types fit @Suppress("MaxLineLength", "ktlint:standard:max-line-length", "ktlint:standard:parameter-wrapping") class FakeRoomGroupMessageCreator( - var createRoomMessageResult: LambdaSixParamsRecorder, RoomId, ThreadId?, ImageLoader, Notification?, Notification> = - lambdaRecorder { _, _, _, _, _, _ -> A_NOTIFICATION } + var createRoomMessageResult: LambdaSixParamsRecorder< + NotificationAccountParams, List, RoomId, ThreadId?, ImageLoader, Notification?, Notification + > = lambdaRecorder { _, _, _, _, _, _ -> A_NOTIFICATION } ) : RoomGroupMessageCreator { override suspend fun createRoomMessage( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, events: List, roomId: RoomId, threadId: ThreadId?, imageLoader: ImageLoader, existingNotification: Notification?, - @ColorInt color: Int, ): Notification { - return createRoomMessageResult(currentUser, events, roomId, threadId, imageLoader, existingNotification) + return createRoomMessageResult(notificationAccountParams, events, roomId, threadId, imageLoader, existingNotification) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt index bc8a5515c9..8a1e8bb4ed 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeSummaryGroupMessageCreator.kt @@ -8,30 +8,28 @@ package io.element.android.libraries.push.impl.notifications.fake import android.app.Notification -import androidx.annotation.ColorInt -import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.push.impl.notifications.OneShotNotification import io.element.android.libraries.push.impl.notifications.RoomNotification import io.element.android.libraries.push.impl.notifications.SummaryGroupMessageCreator +import io.element.android.libraries.push.impl.notifications.factories.NotificationAccountParams import io.element.android.libraries.push.impl.notifications.fixtures.A_NOTIFICATION import io.element.android.tests.testutils.lambda.LambdaFiveParamsRecorder import io.element.android.tests.testutils.lambda.lambdaRecorder class FakeSummaryGroupMessageCreator( var createSummaryNotificationResult: LambdaFiveParamsRecorder< - MatrixUser, List, List, List, List, Notification> = + NotificationAccountParams, List, List, List, List, Notification> = lambdaRecorder { _, _, _, _, _ -> A_NOTIFICATION } ) : SummaryGroupMessageCreator { override fun createSummaryNotification( - currentUser: MatrixUser, + notificationAccountParams: NotificationAccountParams, roomNotifications: List, invitationNotifications: List, simpleNotifications: List, fallbackNotifications: List, - @ColorInt color: Int, ): Notification { return createSummaryNotificationResult( - currentUser, + notificationAccountParams, roomNotifications, invitationNotifications, simpleNotifications, From b0e5e6cc616a1561aa4e256821f67cc206ada6df Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 26 Oct 2025 08:49:48 +0100 Subject: [PATCH 265/898] NotificationDataFactory: improve API --- .../notifications/NotificationDataFactory.kt | 32 ++++++--------- .../notifications/NotificationRenderer.kt | 16 ++++++-- .../NotificationDataFactoryTest.kt | 41 ++++++------------- .../fake/FakeNotificationDataFactory.kt | 20 ++++----- 4 files changed, 45 insertions(+), 64 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index 329d34d5f5..25cac5922d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -28,30 +28,26 @@ import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiab import io.element.android.services.toolbox.api.strings.StringProvider interface NotificationDataFactory { - suspend fun toNotifications( - messages: List, + suspend fun List.toNotifications( imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications( - invites: List, + fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications( - simpleEvents: List, + fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun toNotifications( - fallback: List, + fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List @@ -72,12 +68,11 @@ class DefaultNotificationDataFactory( private val activeNotificationsProvider: ActiveNotificationsProvider, private val stringProvider: StringProvider, ) : NotificationDataFactory { - override suspend fun toNotifications( - messages: List, + override suspend fun List.toNotifications( imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List { - val messagesToDisplay = messages.filterNot { it.canNotBeDisplayed() } + val messagesToDisplay = filterNot { it.canNotBeDisplayed() } .groupBy { it.roomId } return messagesToDisplay.flatMap { (roomId, events) -> val roomName = events.lastOrNull()?.roomName ?: roomId.value @@ -114,11 +109,10 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - invites: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return invites.map { event -> + return map { event -> OneShotNotification( key = event.roomId.value, notification = notificationCreator.createRoomInvitationNotification(notificationAccountParams, event), @@ -131,11 +125,10 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - simpleEvents: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return simpleEvents.map { event -> + return map { event -> OneShotNotification( key = event.eventId.value, notification = notificationCreator.createSimpleEventNotification(notificationAccountParams, event), @@ -148,11 +141,10 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - fallback: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return fallback.map { event -> + return map { event -> OneShotNotification( key = event.eventId.value, notification = notificationCreator.createFallbackNotification(notificationAccountParams, event), diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 05b72b0bcd..4d6e588726 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -51,10 +51,18 @@ class NotificationRenderer( showSessionId = numberOfAccounts > 1, ) val groupedEvents = eventsToProcess.groupByType() - val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, imageLoader, notificationAccountParams) - val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents, notificationAccountParams) - val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents, notificationAccountParams) - val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents, notificationAccountParams) + val roomNotifications = with(notificationDataFactory) { + groupedEvents.roomEvents.toNotifications(imageLoader, notificationAccountParams) + } + val invitationNotifications = with(notificationDataFactory) { + groupedEvents.invitationEvents.toNotifications(notificationAccountParams) + } + val simpleNotifications = with(notificationDataFactory) { + groupedEvents.simpleEvents.toNotifications(notificationAccountParams) + } + val fallbackNotifications = with(notificationDataFactory) { + groupedEvents.fallbackEvents.toNotifications(notificationAccountParams) + } val summaryNotification = notificationDataFactory.createSummaryNotification( roomNotifications = roomNotifications, invitationNotifications = invitationNotifications, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index 2b11ce949b..c8a7e6ba33 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -55,10 +55,7 @@ class NotificationDataFactoryTest { aNotificationAccountParams(), AN_INVITATION_EVENT, ) - val roomInvitation = listOf(AN_INVITATION_EVENT) - - val result = toNotifications(roomInvitation, aNotificationAccountParams()) - + val result = listOf(AN_INVITATION_EVENT).toNotifications(aNotificationAccountParams()) assertThat(result).isEqualTo( listOf( OneShotNotification( @@ -78,19 +75,14 @@ class NotificationDataFactoryTest { aNotificationAccountParams(), AN_INVITATION_EVENT, ) - val roomInvitation = listOf(A_SIMPLE_EVENT) - - val result = toNotifications(roomInvitation, aNotificationAccountParams()) - - assertThat(result).isEqualTo( - listOf( - OneShotNotification( - notification = expectedNotification, - key = AN_EVENT_ID.value, - summaryLine = A_SIMPLE_EVENT.description, - isNoisy = A_SIMPLE_EVENT.noisy, - timestamp = AN_INVITATION_EVENT.timestamp - ) + val result = listOf(A_SIMPLE_EVENT).toNotifications(aNotificationAccountParams()) + assertThat(result).containsExactly( + OneShotNotification( + notification = expectedNotification, + key = AN_EVENT_ID.value, + summaryLine = A_SIMPLE_EVENT.description, + isNoisy = A_SIMPLE_EVENT.noisy, + timestamp = AN_INVITATION_EVENT.timestamp ) ) } @@ -116,14 +108,11 @@ class NotificationDataFactoryTest { shouldBing = events.any { it.noisy }, threadId = null, ) - val roomWithMessage = listOf(A_MESSAGE_EVENT) - val fakeImageLoader = FakeImageLoader() - val result = toNotifications( + val result = listOf(A_MESSAGE_EVENT).toNotifications( notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - messages = roomWithMessage, imageLoader = fakeImageLoader.getImageLoader(), ) @@ -134,17 +123,14 @@ class NotificationDataFactoryTest { @Test fun `given a room with only redacted events when mapping to notification then is Empty`() = testWith(notificationDataFactory) { - val redactedRoom = listOf(A_MESSAGE_EVENT.copy(isRedacted = true)) - + val redactedRoom = A_MESSAGE_EVENT.copy(isRedacted = true) val fakeImageLoader = FakeImageLoader() - val result = toNotifications( + val result = listOf(redactedRoom).toNotifications( notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - messages = redactedRoom, imageLoader = fakeImageLoader.getImageLoader(), ) - assertThat(result).isEmpty() assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) } @@ -178,11 +164,10 @@ class NotificationDataFactoryTest { ) val fakeImageLoader = FakeImageLoader() - val result = toNotifications( + val result = roomWithRedactedMessage.toNotifications( notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - messages = roomWithRedactedMessage, imageLoader = fakeImageLoader.getImageLoader(), ) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt index a897dbfc09..89326f5ad9 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt @@ -40,39 +40,35 @@ class FakeNotificationDataFactory( var fallbackEventToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, ) : NotificationDataFactory { - override suspend fun toNotifications( - messages: List, + override suspend fun List.toNotifications( imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List { - return messageEventToNotificationsResult(messages, imageLoader, notificationAccountParams) + return messageEventToNotificationsResult(this, imageLoader, notificationAccountParams) } @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - invites: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return inviteToNotificationsResult(invites) + return inviteToNotificationsResult(this) } @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - simpleEvents: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return simpleEventToNotificationsResult(simpleEvents) + return simpleEventToNotificationsResult(this) } @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun toNotifications( - fallback: List, + override fun List.toNotifications( notificationAccountParams: NotificationAccountParams, ): List { - return fallbackEventToNotificationsResult(fallback) + return fallbackEventToNotificationsResult(this) } override fun createSummaryNotification( From 529c708d7eb04f1d17c21564b516b91f4271a283 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 26 Oct 2025 09:05:12 +0100 Subject: [PATCH 266/898] Rename OneShotNotification.key to OneShotNotification.tag for clarity. --- .../push/impl/notifications/NotificationDataFactory.kt | 8 ++++---- .../push/impl/notifications/NotificationRenderer.kt | 8 ++++---- .../impl/notifications/NotificationDataFactoryTest.kt | 4 ++-- .../push/impl/notifications/NotificationRendererTest.kt | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index 25cac5922d..ab8406f1af 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -114,7 +114,7 @@ class DefaultNotificationDataFactory( ): List { return map { event -> OneShotNotification( - key = event.roomId.value, + tag = event.roomId.value, notification = notificationCreator.createRoomInvitationNotification(notificationAccountParams, event), summaryLine = event.description, isNoisy = event.noisy, @@ -130,7 +130,7 @@ class DefaultNotificationDataFactory( ): List { return map { event -> OneShotNotification( - key = event.eventId.value, + tag = event.eventId.value, notification = notificationCreator.createSimpleEventNotification(notificationAccountParams, event), summaryLine = event.description, isNoisy = event.noisy, @@ -146,7 +146,7 @@ class DefaultNotificationDataFactory( ): List { return map { event -> OneShotNotification( - key = event.eventId.value, + tag = event.eventId.value, notification = notificationCreator.createFallbackNotification(notificationAccountParams, event), summaryLine = event.description.orEmpty(), isNoisy = false, @@ -239,7 +239,7 @@ data class RoomNotification( data class OneShotNotification( val notification: Notification, - val key: String, + val tag: String, val summaryLine: CharSequence, val isNoisy: Boolean, val timestamp: Long, diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 4d6e588726..46018d48f4 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -94,9 +94,9 @@ class NotificationRenderer( invitationNotifications.forEach { notificationData -> if (useCompleteNotificationFormat) { - Timber.tag(loggerTag.value).d("Updating invitation notification ${notificationData.key}") + Timber.tag(loggerTag.value).d("Updating invitation notification ${notificationData.tag}") notificationDisplayer.showNotificationMessage( - tag = notificationData.key, + tag = notificationData.tag, id = NotificationIdProvider.getRoomInvitationNotificationId(currentUser.userId), notification = notificationData.notification ) @@ -105,9 +105,9 @@ class NotificationRenderer( simpleNotifications.forEach { notificationData -> if (useCompleteNotificationFormat) { - Timber.tag(loggerTag.value).d("Updating simple notification ${notificationData.key}") + Timber.tag(loggerTag.value).d("Updating simple notification ${notificationData.tag}") notificationDisplayer.showNotificationMessage( - tag = notificationData.key, + tag = notificationData.tag, id = NotificationIdProvider.getRoomEventNotificationId(currentUser.userId), notification = notificationData.notification ) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index c8a7e6ba33..7bc19640e6 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -60,7 +60,7 @@ class NotificationDataFactoryTest { listOf( OneShotNotification( notification = expectedNotification, - key = A_ROOM_ID.value, + tag = A_ROOM_ID.value, summaryLine = AN_INVITATION_EVENT.description, isNoisy = AN_INVITATION_EVENT.noisy, timestamp = AN_INVITATION_EVENT.timestamp @@ -79,7 +79,7 @@ class NotificationDataFactoryTest { assertThat(result).containsExactly( OneShotNotification( notification = expectedNotification, - key = AN_EVENT_ID.value, + tag = AN_EVENT_ID.value, summaryLine = A_SIMPLE_EVENT.description, isNoisy = A_SIMPLE_EVENT.noisy, timestamp = AN_INVITATION_EVENT.timestamp diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index 1026dca849..fa34552769 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -42,7 +42,7 @@ private const val USE_COMPLETE_NOTIFICATION_FORMAT = true private val A_SUMMARY_NOTIFICATION = SummaryNotification.Update(A_NOTIFICATION) private val ONE_SHOT_NOTIFICATION = - OneShotNotification(notification = A_NOTIFICATION, key = "ignored", summaryLine = "ignored", isNoisy = false, timestamp = -1) + OneShotNotification(notification = A_NOTIFICATION, tag = "ignored", summaryLine = "ignored", isNoisy = false, timestamp = -1) @RunWith(RobolectricTestRunner::class) class NotificationRendererTest { @@ -86,7 +86,7 @@ class NotificationRendererTest { @Test fun `given a simple notification is added when rendering then show the simple notification and update summary`() = runTest { - notificationCreator.createSimpleNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } + notificationCreator.createSimpleNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(tag = AN_EVENT_ID.value).notification } renderEventsAsNotifications(listOf(aSimpleNotifiableEvent(eventId = AN_EVENT_ID))) @@ -98,7 +98,7 @@ class NotificationRendererTest { @Test fun `given an invitation notification is added when rendering then show the invitation notification and update summary`() = runTest { - notificationCreator.createRoomInvitationNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(key = AN_EVENT_ID.value).notification } + notificationCreator.createRoomInvitationNotificationResult = lambdaRecorder { _, _ -> ONE_SHOT_NOTIFICATION.copy(tag = AN_EVENT_ID.value).notification } renderEventsAsNotifications(listOf(anInviteNotifiableEvent())) From f0e42a70fb20e70e8f8c21bbf6967ec66fee32e1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 26 Oct 2025 09:07:57 +0100 Subject: [PATCH 267/898] Use better names for API. --- .../impl/notifications/NotificationDisplayer.kt | 12 ++++++------ .../impl/notifications/NotificationRenderer.kt | 12 ++++++------ .../push/impl/push/OnRedactedEventReceived.kt | 2 +- .../impl/notifications/NotificationRendererTest.kt | 6 +++--- .../fake/FakeNotificationDisplayer.kt | 14 +++++++------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt index 4348c9bfb5..deb486547b 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt @@ -19,8 +19,8 @@ import io.element.android.libraries.di.annotations.ApplicationContext import timber.log.Timber interface NotificationDisplayer { - fun showNotificationMessage(tag: String?, id: Int, notification: Notification): Boolean - fun cancelNotificationMessage(tag: String?, id: Int) + fun showNotification(tag: String?, id: Int, notification: Notification): Boolean + fun cancelNotification(tag: String?, id: Int) fun displayDiagnosticNotification(notification: Notification): Boolean fun dismissDiagnosticNotification() } @@ -30,7 +30,7 @@ class DefaultNotificationDisplayer( @ApplicationContext private val context: Context, private val notificationManager: NotificationManagerCompat ) : NotificationDisplayer { - override fun showNotificationMessage(tag: String?, id: Int, notification: Notification): Boolean { + override fun showNotification(tag: String?, id: Int, notification: Notification): Boolean { if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { Timber.w("Not allowed to notify.") return false @@ -40,12 +40,12 @@ class DefaultNotificationDisplayer( return true } - override fun cancelNotificationMessage(tag: String?, id: Int) { + override fun cancelNotification(tag: String?, id: Int) { notificationManager.cancel(tag, id) } override fun displayDiagnosticNotification(notification: Notification): Boolean { - return showNotificationMessage( + return showNotification( tag = "DIAGNOSTIC", id = NOTIFICATION_ID_DIAGNOSTIC, notification = notification @@ -53,7 +53,7 @@ class DefaultNotificationDisplayer( } override fun dismissDiagnosticNotification() { - cancelNotificationMessage( + cancelNotification( tag = "DIAGNOSTIC", id = NOTIFICATION_ID_DIAGNOSTIC ) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 46018d48f4..9f24ccecb0 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -74,7 +74,7 @@ class NotificationRenderer( // Remove summary first to avoid briefly displaying it after dismissing the last notification if (summaryNotification == SummaryNotification.Removed) { Timber.tag(loggerTag.value).d("Removing summary notification") - notificationDisplayer.cancelNotificationMessage( + notificationDisplayer.cancelNotification( tag = null, id = NotificationIdProvider.getSummaryNotificationId(currentUser.userId) ) @@ -85,7 +85,7 @@ class NotificationRenderer( roomId = notificationData.roomId, threadId = notificationData.threadId ) - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( tag = tag, id = NotificationIdProvider.getRoomMessagesNotificationId(currentUser.userId), notification = notificationData.notification @@ -95,7 +95,7 @@ class NotificationRenderer( invitationNotifications.forEach { notificationData -> if (useCompleteNotificationFormat) { Timber.tag(loggerTag.value).d("Updating invitation notification ${notificationData.tag}") - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( tag = notificationData.tag, id = NotificationIdProvider.getRoomInvitationNotificationId(currentUser.userId), notification = notificationData.notification @@ -106,7 +106,7 @@ class NotificationRenderer( simpleNotifications.forEach { notificationData -> if (useCompleteNotificationFormat) { Timber.tag(loggerTag.value).d("Updating simple notification ${notificationData.tag}") - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( tag = notificationData.tag, id = NotificationIdProvider.getRoomEventNotificationId(currentUser.userId), notification = notificationData.notification @@ -117,7 +117,7 @@ class NotificationRenderer( // Show only the first fallback notification if (fallbackNotifications.isNotEmpty()) { Timber.tag(loggerTag.value).d("Showing fallback notification") - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( tag = "FALLBACK", id = NotificationIdProvider.getFallbackNotificationId(currentUser.userId), notification = fallbackNotifications.first().notification @@ -127,7 +127,7 @@ class NotificationRenderer( // Update summary last to avoid briefly displaying it before other notifications if (summaryNotification is SummaryNotification.Update) { Timber.tag(loggerTag.value).d("Updating summary notification") - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( tag = null, id = NotificationIdProvider.getSummaryNotificationId(currentUser.userId), notification = summaryNotification.notification diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt index 37d3b32c80..5be67606a4 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/push/OnRedactedEventReceived.kt @@ -73,7 +73,7 @@ class DefaultOnRedactedEventReceived( oldMessage.person ) messagingStyle.messages[messageToRedactIndex] = newMessage - notificationDisplayer.showNotificationMessage( + notificationDisplayer.showNotification( statusBarNotification.tag, statusBarNotification.id, NotificationCompat.Builder(context, notification) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index fa34552769..cb97174cb1 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -78,7 +78,7 @@ class NotificationRendererTest { renderEventsAsNotifications(listOf(aNotifiableMessageEvent())) - notificationDisplayer.showNotificationMessageResult.assertions().isCalledExactly(2).withSequence( + notificationDisplayer.showNotificationResult.assertions().isCalledExactly(2).withSequence( listOf(value(A_ROOM_ID.value), value(notificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID)), value(A_NOTIFICATION)), listOf(value(null), value(notificationIdProvider.getSummaryNotificationId(A_SESSION_ID)), value(A_SUMMARY_NOTIFICATION.notification)) ) @@ -90,7 +90,7 @@ class NotificationRendererTest { renderEventsAsNotifications(listOf(aSimpleNotifiableEvent(eventId = AN_EVENT_ID))) - notificationDisplayer.showNotificationMessageResult.assertions().isCalledExactly(2).withSequence( + notificationDisplayer.showNotificationResult.assertions().isCalledExactly(2).withSequence( listOf(value(AN_EVENT_ID.value), value(notificationIdProvider.getRoomEventNotificationId(A_SESSION_ID)), value(A_NOTIFICATION)), listOf(value(null), value(notificationIdProvider.getSummaryNotificationId(A_SESSION_ID)), value(A_SUMMARY_NOTIFICATION.notification)) ) @@ -102,7 +102,7 @@ class NotificationRendererTest { renderEventsAsNotifications(listOf(anInviteNotifiableEvent())) - notificationDisplayer.showNotificationMessageResult.assertions().isCalledExactly(2).withSequence( + notificationDisplayer.showNotificationResult.assertions().isCalledExactly(2).withSequence( listOf(value(A_ROOM_ID.value), value(notificationIdProvider.getRoomInvitationNotificationId(A_SESSION_ID)), value(A_NOTIFICATION)), listOf(value(null), value(notificationIdProvider.getSummaryNotificationId(A_SESSION_ID)), value(A_SUMMARY_NOTIFICATION.notification)) ) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDisplayer.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDisplayer.kt index cd3d047e2e..d1c5de9ffb 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDisplayer.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDisplayer.kt @@ -19,17 +19,17 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value class FakeNotificationDisplayer( - var showNotificationMessageResult: LambdaThreeParamsRecorder = lambdaRecorder { _, _, _ -> true }, - var cancelNotificationMessageResult: LambdaTwoParamsRecorder = lambdaRecorder { _, _ -> }, + var showNotificationResult: LambdaThreeParamsRecorder = lambdaRecorder { _, _, _ -> true }, + var cancelNotificationResult: LambdaTwoParamsRecorder = lambdaRecorder { _, _ -> }, var displayDiagnosticNotificationResult: LambdaOneParamRecorder = lambdaRecorder { _ -> true }, var dismissDiagnosticNotificationResult: LambdaNoParamRecorder = lambdaRecorder { -> }, ) : NotificationDisplayer { - override fun showNotificationMessage(tag: String?, id: Int, notification: Notification): Boolean { - return showNotificationMessageResult(tag, id, notification) + override fun showNotification(tag: String?, id: Int, notification: Notification): Boolean { + return showNotificationResult(tag, id, notification) } - override fun cancelNotificationMessage(tag: String?, id: Int) { - return cancelNotificationMessageResult(tag, id) + override fun cancelNotification(tag: String?, id: Int) { + return cancelNotificationResult(tag, id) } override fun displayDiagnosticNotification(notification: Notification): Boolean { @@ -41,7 +41,7 @@ class FakeNotificationDisplayer( } fun verifySummaryCancelled(times: Int = 1) { - cancelNotificationMessageResult.assertions().isCalledExactly(times).withSequence( + cancelNotificationResult.assertions().isCalledExactly(times).withSequence( listOf(value(null), value(NotificationIdProvider.getSummaryNotificationId(A_SESSION_ID))) ) } From 55517e5cb1e7c3bb376848d607159215d3b37e66 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 26 Oct 2025 09:09:10 +0100 Subject: [PATCH 268/898] Create const for diagnostic tag. --- .../push/impl/notifications/NotificationDisplayer.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt index deb486547b..decee9f198 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt @@ -46,7 +46,7 @@ class DefaultNotificationDisplayer( override fun displayDiagnosticNotification(notification: Notification): Boolean { return showNotification( - tag = "DIAGNOSTIC", + tag = TAG_DIAGNOSTIC, id = NOTIFICATION_ID_DIAGNOSTIC, notification = notification ) @@ -54,12 +54,13 @@ class DefaultNotificationDisplayer( override fun dismissDiagnosticNotification() { cancelNotification( - tag = "DIAGNOSTIC", + tag = TAG_DIAGNOSTIC, id = NOTIFICATION_ID_DIAGNOSTIC ) } companion object { + private const val TAG_DIAGNOSTIC = "DIAGNOSTIC" /* ========================================================================================== * IDs for notifications * ========================================================================================== */ From fbecf8d34f1cf08eab8f3667e186c4a8be008b4b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 27 Oct 2025 08:26:12 +0100 Subject: [PATCH 269/898] Let DefaultNotificationDrawerManager use NotificationDisplayer instead of NotificationManagerCompat --- features/call/impl/build.gradle.kts | 1 + .../RingingCallNotificationCreatorTest.kt | 2 +- .../utils/DefaultActiveCallManagerTest.kt | 3 +- libraries/matrixui-test/build.gradle.kts | 20 ++++++++ .../matrix/ui/test/media/FakeImageLoader.kt | 50 +++++++++++++++++++ .../ui/test/media}/FakeImageLoaderHolder.kt | 11 ++-- libraries/push/impl/build.gradle.kts | 1 + .../DefaultNotificationDrawerManager.kt | 17 +++---- .../notifications/NotificationDisplayer.kt | 1 + .../DefaultBaseRoomGroupMessageCreatorTest.kt | 26 +++++----- .../DefaultNotificationDrawerManagerTest.kt | 31 ++++++------ ...aultOnMissedCallNotificationHandlerTest.kt | 9 ++-- .../NotificationDataFactoryTest.kt | 18 +++---- .../notifications/NotificationRendererTest.kt | 4 +- ...aultNotificationConversationServiceTest.kt | 2 +- .../DefaultNotificationCreatorTest.kt | 6 +-- .../test/notifications/FakeImageLoader.kt | 45 ----------------- 17 files changed, 136 insertions(+), 111 deletions(-) create mode 100644 libraries/matrixui-test/build.gradle.kts create mode 100644 libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoader.kt rename libraries/{push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications => matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media}/FakeImageLoaderHolder.kt (67%) delete mode 100644 libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoader.kt diff --git a/features/call/impl/build.gradle.kts b/features/call/impl/build.gradle.kts index 9efe5ba75b..5c1b4ef0a6 100644 --- a/features/call/impl/build.gradle.kts +++ b/features/call/impl/build.gradle.kts @@ -93,6 +93,7 @@ dependencies { testImplementation(projects.libraries.featureflag.test) testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.matrixuiTest) testImplementation(projects.libraries.push.test) testImplementation(projects.services.analytics.test) testImplementation(projects.services.appnavstate.test) diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/notifications/RingingCallNotificationCreatorTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/notifications/RingingCallNotificationCreatorTest.kt index 0af482fc49..7ec5532e83 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/notifications/RingingCallNotificationCreatorTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/notifications/RingingCallNotificationCreatorTest.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider -import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoaderHolder import io.element.android.libraries.push.test.notifications.push.FakeNotificationBitmapLoader import io.element.android.tests.testutils.lambda.lambdaRecorder import kotlinx.coroutines.test.runTest diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt index 3d1c35df4d..9464af603f 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt @@ -33,9 +33,9 @@ import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.libraries.matrix.test.room.aRoomInfo +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoaderHolder import io.element.android.libraries.push.api.notifications.ForegroundServiceType import io.element.android.libraries.push.api.notifications.NotificationIdProvider -import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder import io.element.android.libraries.push.test.notifications.FakeOnMissedCallNotificationHandler import io.element.android.libraries.push.test.notifications.push.FakeNotificationBitmapLoader import io.element.android.services.appnavstate.test.FakeAppForegroundStateService @@ -415,6 +415,7 @@ class DefaultActiveCallManagerTest { verify { notificationManagerCompat.cancel(any()) } } + @OptIn(ExperimentalCoroutinesApi::class) @Test fun `IncomingCall - ignore expired ring lifetime`() = runTest { diff --git a/libraries/matrixui-test/build.gradle.kts b/libraries/matrixui-test/build.gradle.kts new file mode 100644 index 0000000000..c385d05b54 --- /dev/null +++ b/libraries/matrixui-test/build.gradle.kts @@ -0,0 +1,20 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +plugins { + id("io.element.android-library") +} + +android { + namespace = "io.element.android.libraries.matrix.ui.test" +} + +dependencies { + implementation(projects.libraries.matrix.api) + implementation(projects.libraries.matrixui) + implementation(libs.coil.compose) +} diff --git a/libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoader.kt b/libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoader.kt new file mode 100644 index 0000000000..05e380fb9e --- /dev/null +++ b/libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoader.kt @@ -0,0 +1,50 @@ +/* + * 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.test.media + +import coil3.ComponentRegistry +import coil3.ImageLoader +import coil3.disk.DiskCache +import coil3.memory.MemoryCache +import coil3.request.Disposable +import coil3.request.ImageRequest +import coil3.request.ImageResult + +class FakeImageLoader : ImageLoader { + private val executedRequests = mutableListOf() + + override val defaults: ImageRequest.Defaults + get() = error("Not implemented") + override val components: ComponentRegistry + get() = error("Not implemented") + override val memoryCache: MemoryCache? + get() = error("Not implemented") + override val diskCache: DiskCache? + get() = error("Not implemented") + + override fun enqueue(request: ImageRequest): Disposable { + error("Not implemented") + } + + override suspend fun execute(request: ImageRequest): ImageResult { + executedRequests.add(request) + error("Not implemented") + } + + override fun shutdown() { + error("Not implemented") + } + + override fun newBuilder(): ImageLoader.Builder { + error("Not implemented") + } + + fun getExecutedRequestsData(): List { + return executedRequests.map { it.data } + } +} diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoaderHolder.kt b/libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoaderHolder.kt similarity index 67% rename from libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoaderHolder.kt rename to libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoaderHolder.kt index 4c92dc8c18..4deef7274b 100644 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoaderHolder.kt +++ b/libraries/matrixui-test/src/main/kotlin/io/element/android/libraries/matrix/ui/test/media/FakeImageLoaderHolder.kt @@ -1,21 +1,22 @@ /* - * 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.libraries.push.test.notifications +package io.element.android.libraries.matrix.ui.test.media import coil3.ImageLoader import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder -class FakeImageLoaderHolder : ImageLoaderHolder { - private val fakeImageLoader = FakeImageLoader() +class FakeImageLoaderHolder( + val fakeImageLoader: ImageLoader = FakeImageLoader(), +) : ImageLoaderHolder { override fun get(client: MatrixClient): ImageLoader { - return fakeImageLoader.getImageLoader() + return fakeImageLoader } override fun remove(sessionId: SessionId) { diff --git a/libraries/push/impl/build.gradle.kts b/libraries/push/impl/build.gradle.kts index 87b3c681f1..2ea597b4f2 100644 --- a/libraries/push/impl/build.gradle.kts +++ b/libraries/push/impl/build.gradle.kts @@ -70,6 +70,7 @@ dependencies { testCommonDependencies(libs) testImplementation(libs.coil.test) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.libraries.matrixuiTest) testImplementation(projects.libraries.preferences.test) testImplementation(projects.libraries.sessionStorage.test) testImplementation(projects.libraries.push.test) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 01a1b1f9a9..072ddcc891 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.push.impl.notifications import androidx.annotation.VisibleForTesting -import androidx.core.app.NotificationManagerCompat import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.SingleIn @@ -46,7 +45,7 @@ private val loggerTag = LoggerTag("DefaultNotificationDrawerManager", LoggerTag. @SingleIn(AppScope::class) @ContributesBinding(AppScope::class) class DefaultNotificationDrawerManager( - private val notificationManager: NotificationManagerCompat, + private val notificationDisplayer: NotificationDisplayer, private val notificationRenderer: NotificationRenderer, private val appNavigationStateService: AppNavigationStateService, @AppCoroutineScope @@ -124,7 +123,7 @@ class DefaultNotificationDrawerManager( * Clear all known message events for a [sessionId]. */ override fun clearAllMessagesEvents(sessionId: SessionId) { - notificationManager.cancel(null, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) + notificationDisplayer.cancelNotification(null, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) clearSummaryNotificationIfNeeded(sessionId) } @@ -133,7 +132,7 @@ class DefaultNotificationDrawerManager( */ fun clearAllEvents(sessionId: SessionId) { activeNotificationsProvider.getNotificationsForSession(sessionId) - .forEach { notificationManager.cancel(it.tag, it.id) } + .forEach { notificationDisplayer.cancelNotification(it.tag, it.id) } } /** @@ -142,7 +141,7 @@ class DefaultNotificationDrawerManager( * Can also be called when a notification for this room is dismissed by the user. */ override fun clearMessagesForRoom(sessionId: SessionId, roomId: RoomId) { - notificationManager.cancel(roomId.value, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) + notificationDisplayer.cancelNotification(roomId.value, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) clearSummaryNotificationIfNeeded(sessionId) } @@ -158,7 +157,7 @@ class DefaultNotificationDrawerManager( override fun clearMembershipNotificationForSession(sessionId: SessionId) { activeNotificationsProvider.getMembershipNotificationForSession(sessionId) - .forEach { notificationManager.cancel(it.tag, it.id) } + .forEach { notificationDisplayer.cancelNotification(it.tag, it.id) } clearSummaryNotificationIfNeeded(sessionId) } @@ -167,7 +166,7 @@ class DefaultNotificationDrawerManager( */ override fun clearMembershipNotificationForRoom(sessionId: SessionId, roomId: RoomId) { activeNotificationsProvider.getMembershipNotificationForRoom(sessionId, roomId) - .forEach { notificationManager.cancel(it.tag, it.id) } + .forEach { notificationDisplayer.cancelNotification(it.tag, it.id) } clearSummaryNotificationIfNeeded(sessionId) } @@ -176,14 +175,14 @@ class DefaultNotificationDrawerManager( */ override fun clearEvent(sessionId: SessionId, eventId: EventId) { val id = NotificationIdProvider.getRoomEventNotificationId(sessionId) - notificationManager.cancel(eventId.value, id) + notificationDisplayer.cancelNotification(eventId.value, id) clearSummaryNotificationIfNeeded(sessionId) } private fun clearSummaryNotificationIfNeeded(sessionId: SessionId) { val summaryNotification = activeNotificationsProvider.getSummaryNotification(sessionId) if (summaryNotification != null && activeNotificationsProvider.count(sessionId) == 1) { - notificationManager.cancel(null, summaryNotification.id) + notificationDisplayer.cancelNotification(null, summaryNotification.id) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt index decee9f198..c1e7ba1d29 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDisplayer.kt @@ -61,6 +61,7 @@ class DefaultNotificationDisplayer( companion object { private const val TAG_DIAGNOSTIC = "DIAGNOSTIC" + /* ========================================================================================== * IDs for notifications * ========================================================================================== */ diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt index 00848390b5..f5acd8ddb4 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultBaseRoomGroupMessageCreatorTest.kt @@ -18,12 +18,12 @@ import io.element.android.libraries.matrix.test.A_TIMESTAMP import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.matrix.ui.media.AVATAR_THUMBNAIL_SIZE_IN_PIXEL import io.element.android.libraries.matrix.ui.media.MediaRequestData +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoader import io.element.android.libraries.push.impl.notifications.factories.MARK_AS_READ_ACTION_TITLE import io.element.android.libraries.push.impl.notifications.factories.QUICK_REPLY_ACTION_TITLE import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.factories.createNotificationCreator import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent -import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider import io.element.android.services.toolbox.impl.strings.AndroidStringProvider import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider @@ -51,7 +51,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { ) ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) @@ -59,7 +59,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { @Suppress("DEPRECATION") assertThat(result.priority).isEqualTo(NotificationCompat.PRIORITY_LOW) assertThat(result.`when`).isEqualTo(A_TIMESTAMP) - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -74,13 +74,13 @@ class DefaultBaseRoomGroupMessageCreatorTest { ) ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) @Suppress("DEPRECATION") assertThat(result.priority).isEqualTo(NotificationCompat.PRIORITY_DEFAULT) - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -141,12 +141,12 @@ class DefaultBaseRoomGroupMessageCreatorTest { ) ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) assertThat(result.number).isEqualTo(1) - assertThat(fakeImageLoader.getCoilRequests()).containsExactlyElementsIn(expectedCoilRequests) + assertThat(fakeImageLoader.getExecutedRequestsData()).containsExactlyElementsIn(expectedCoilRequests) } @Test @@ -160,7 +160,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { aNotifiableMessageEvent(timestamp = A_TIMESTAMP + 10), ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) @@ -173,7 +173,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { QUICK_REPLY_ACTION_TITLE.takeIf { NotificationConfig.SHOW_QUICK_REPLY_ACTION }, ) ) - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -189,7 +189,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { ), ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) @@ -199,7 +199,7 @@ class DefaultBaseRoomGroupMessageCreatorTest { MARK_AS_READ_ACTION_TITLE.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION } ) ) - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -214,13 +214,13 @@ class DefaultBaseRoomGroupMessageCreatorTest { ), ), roomId = A_ROOM_ID, - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, existingNotification = null, threadId = null, ) assertThat(result.number).isEqualTo(1) assertThat(result.`when`).isEqualTo(A_TIMESTAMP) - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index 275c1ac490..b3c4569470 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.push.impl.notifications import android.app.Notification import androidx.compose.ui.graphics.Color -import androidx.core.app.NotificationManagerCompat import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService @@ -22,14 +21,15 @@ import io.element.android.libraries.matrix.test.A_THREAD_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.ui.components.aMatrixUser +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoaderHolder import io.element.android.libraries.push.api.notifications.NotificationIdProvider import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator +import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.push.impl.notifications.fake.FakeRoomGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fake.FakeSummaryGroupMessageCreator import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent -import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.services.appnavstate.api.AppNavigationState @@ -43,19 +43,14 @@ import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import io.mockk.every import io.mockk.mockk -import io.mockk.verify import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test -import org.junit.runner.RunWith -import org.robolectric.RobolectricTestRunner -import org.robolectric.RuntimeEnvironment @OptIn(ExperimentalCoroutinesApi::class) -@RunWith(RobolectricTestRunner::class) class DefaultNotificationDrawerManagerTest { @Test fun `clearAllEvents should have no effect when queue is empty`() = runTest { @@ -183,10 +178,12 @@ class DefaultNotificationDrawerManagerTest { @Test fun `clearSummaryNotificationIfNeeded will run after clearing all other notifications`() = runTest { - val notificationManager = mockk { - every { cancel(any(), any()) } returns Unit - } + val cancelNotificationResult = lambdaRecorder { _, _ -> } + val notificationDisplayer = FakeNotificationDisplayer( + cancelNotificationResult = cancelNotificationResult, + ) val summaryId = NotificationIdProvider.getSummaryNotificationId(A_SESSION_ID) + val roomMessageId = NotificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID) val activeNotificationsProvider = FakeActiveNotificationsProvider( getSummaryNotificationResult = { mockk { @@ -196,7 +193,7 @@ class DefaultNotificationDrawerManagerTest { countResult = { 1 }, ) val defaultNotificationDrawerManager = createDefaultNotificationDrawerManager( - notificationManager = notificationManager, + notificationDisplayer = notificationDisplayer, activeNotificationsProvider = activeNotificationsProvider, ) @@ -204,13 +201,16 @@ class DefaultNotificationDrawerManagerTest { defaultNotificationDrawerManager.clearAllMessagesEvents(A_SESSION_ID) // Verify we asked to cancel the notification with summaryId - verify { notificationManager.cancel(null, summaryId) } + cancelNotificationResult.assertions().isCalledExactly(2).withSequence( + listOf(value(null), value(roomMessageId)), + listOf(value(null), value(summaryId)), + ) defaultNotificationDrawerManager.destroy() } private fun TestScope.createDefaultNotificationDrawerManager( - notificationManager: NotificationManagerCompat = NotificationManagerCompat.from(RuntimeEnvironment.getApplication()), + notificationDisplayer: NotificationDisplayer = FakeNotificationDisplayer(), appNavigationStateService: AppNavigationStateService = FakeAppNavigationStateService(), roomGroupMessageCreator: RoomGroupMessageCreator = FakeRoomGroupMessageCreator(), summaryGroupMessageCreator: SummaryGroupMessageCreator = FakeSummaryGroupMessageCreator(), @@ -219,11 +219,10 @@ class DefaultNotificationDrawerManagerTest { sessionStore: SessionStore = InMemorySessionStore(), enterpriseService: EnterpriseService = FakeEnterpriseService(), ): DefaultNotificationDrawerManager { - val context = RuntimeEnvironment.getApplication() return DefaultNotificationDrawerManager( - notificationManager = notificationManager, + notificationDisplayer = notificationDisplayer, notificationRenderer = NotificationRenderer( - notificationDisplayer = DefaultNotificationDisplayer(context, NotificationManagerCompat.from(context)), + notificationDisplayer = FakeNotificationDisplayer(), notificationDataFactory = DefaultNotificationDataFactory( notificationCreator = FakeNotificationCreator(), roomGroupMessageCreator = roomGroupMessageCreator, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt index e5a4b01043..f2b26b3437 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultOnMissedCallNotificationHandlerTest.kt @@ -15,22 +15,19 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.notification.FakeNotificationService import io.element.android.libraries.matrix.test.notification.aNotificationData +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoaderHolder import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDataFactory +import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationDisplayer import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeCallNotificationEventResolver -import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder import io.element.android.services.appnavstate.test.FakeAppNavigationStateService import io.element.android.tests.testutils.lambda.lambdaRecorder -import io.mockk.mockk import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test -import org.junit.runner.RunWith -import org.robolectric.RobolectricTestRunner -@RunWith(RobolectricTestRunner::class) class DefaultOnMissedCallNotificationHandlerTest { @OptIn(ExperimentalCoroutinesApi::class) @Test @@ -50,7 +47,7 @@ class DefaultOnMissedCallNotificationHandlerTest { val defaultOnMissedCallNotificationHandler = DefaultOnMissedCallNotificationHandler( matrixClientProvider = matrixClientProvider, defaultNotificationDrawerManager = DefaultNotificationDrawerManager( - notificationManager = mockk(relaxed = true), + notificationDisplayer = FakeNotificationDisplayer(), notificationRenderer = createNotificationRenderer( notificationDataFactory = dataFactory, ), diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index 7bc19640e6..50e0b5dfb8 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoader import io.element.android.libraries.push.impl.notifications.factories.aNotificationAccountParams import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator @@ -21,7 +22,6 @@ import io.element.android.libraries.push.impl.notifications.fake.FakeSummaryGrou import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNotifiableEvent import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent -import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.services.toolbox.test.strings.FakeStringProvider import kotlinx.coroutines.test.runTest import org.junit.Test @@ -98,7 +98,7 @@ class NotificationDataFactoryTest { events = events, roomId = A_ROOM_ID, threadId = null, - imageLoader = FakeImageLoader().getImageLoader(), + imageLoader = FakeImageLoader(), existingNotification = null, ), roomId = A_ROOM_ID, @@ -113,12 +113,12 @@ class NotificationDataFactoryTest { notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, ) assertThat(result.size).isEqualTo(1) assertThat(result.first().isDataEqualTo(expectedNotification)).isTrue() - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -129,10 +129,10 @@ class NotificationDataFactoryTest { notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, ) assertThat(result).isEmpty() - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } @Test @@ -152,7 +152,7 @@ class NotificationDataFactoryTest { events = withRedactedRemoved, roomId = A_ROOM_ID, threadId = null, - imageLoader = FakeImageLoader().getImageLoader(), + imageLoader = FakeImageLoader(), existingNotification = null, ), roomId = A_ROOM_ID, @@ -168,12 +168,12 @@ class NotificationDataFactoryTest { notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), - imageLoader = fakeImageLoader.getImageLoader(), + imageLoader = fakeImageLoader, ) assertThat(result.size).isEqualTo(1) assertThat(result.first().isDataEqualTo(expectedNotification)).isTrue() - assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) + assertThat(fakeImageLoader.getExecutedRequestsData()).isEmpty() } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt index cb97174cb1..00ce37b09b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRendererTest.kt @@ -13,6 +13,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoader import io.element.android.libraries.push.api.notifications.NotificationIdProvider import io.element.android.libraries.push.impl.notifications.fake.FakeActiveNotificationsProvider import io.element.android.libraries.push.impl.notifications.fake.FakeNotificationCreator @@ -25,7 +26,6 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiable import io.element.android.libraries.push.impl.notifications.fixtures.aSimpleNotifiableEvent import io.element.android.libraries.push.impl.notifications.fixtures.anInviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent -import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.test.InMemorySessionStore import io.element.android.services.toolbox.test.strings.FakeStringProvider @@ -113,7 +113,7 @@ class NotificationRendererTest { MatrixUser(A_SESSION_ID, MY_USER_DISPLAY_NAME, MY_USER_AVATAR_URL), useCompleteNotificationFormat = USE_COMPLETE_NOTIFICATION_FORMAT, eventsToProcess = events, - imageLoader = FakeImageLoader().getImageLoader(), + imageLoader = FakeImageLoader(), ) } } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationServiceTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationServiceTest.kt index d05966f9a6..82441883a7 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationServiceTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/conversations/DefaultNotificationConversationServiceTest.kt @@ -20,9 +20,9 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID_2 import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_SESSION_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClientProvider +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoaderHolder import io.element.android.libraries.push.impl.notifications.factories.FakeIntentProvider import io.element.android.libraries.push.impl.notifications.shortcut.createShortcutId -import io.element.android.libraries.push.test.notifications.FakeImageLoaderHolder import io.element.android.libraries.push.test.notifications.push.FakeNotificationBitmapLoader import io.element.android.libraries.sessionstorage.test.observer.FakeSessionObserver import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index df9f106972..b95b3128fc 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -22,6 +22,7 @@ import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_THREAD_ID import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.ui.components.aMatrixUser +import io.element.android.libraries.matrix.ui.test.media.FakeImageLoader import io.element.android.libraries.push.api.notifications.NotificationBitmapLoader import io.element.android.libraries.push.impl.notifications.DefaultNotificationBitmapLoader import io.element.android.libraries.push.impl.notifications.NotificationActionIds @@ -36,7 +37,6 @@ import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiable import io.element.android.libraries.push.impl.notifications.model.FallbackNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiableEvent -import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.services.toolbox.test.sdk.FakeBuildVersionSdkIntProvider import io.element.android.services.toolbox.test.strings.FakeStringProvider import io.element.android.services.toolbox.test.systemclock.A_FAKE_TIMESTAMP @@ -246,7 +246,7 @@ class DefaultNotificationCreatorTest { lastMessageTimestamp = 123_456L, tickerText = "tickerText", existingNotification = null, - imageLoader = FakeImageLoader().getImageLoader(), + imageLoader = FakeImageLoader(), events = listOf(aNotifiableMessageEvent()), ) result.commonAssertions() @@ -271,7 +271,7 @@ class DefaultNotificationCreatorTest { lastMessageTimestamp = 123_456L, tickerText = "tickerText", existingNotification = null, - imageLoader = FakeImageLoader().getImageLoader(), + imageLoader = FakeImageLoader(), events = listOf(aNotifiableMessageEvent()), ) result.commonAssertions() diff --git a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoader.kt b/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoader.kt deleted file mode 100644 index 067376cfbc..0000000000 --- a/libraries/push/test/src/main/kotlin/io/element/android/libraries/push/test/notifications/FakeImageLoader.kt +++ /dev/null @@ -1,45 +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.libraries.push.test.notifications - -import android.graphics.Color -import android.graphics.drawable.ColorDrawable -import coil3.ImageLoader -import coil3.test.FakeImageLoaderEngine -import coil3.test.intercept -import org.robolectric.RuntimeEnvironment - -class FakeImageLoader { - private val coilRequests = mutableListOf() - - private var cache: ImageLoader? = null - - fun getImageLoader(): ImageLoader { - return cache ?: ImageLoader.Builder(RuntimeEnvironment.getApplication()) - .components { - val engine = FakeImageLoaderEngine.Builder() - .intercept( - predicate = { - coilRequests.add(it) - true - }, - drawable = ColorDrawable(Color.BLUE) - ) - .build() - add(engine) - } - .build() - .also { - cache = it - } - } - - fun getCoilRequests(): List { - return coilRequests.toList() - } -} From 31ff72b319b7cce2e42e3fc44fd7755b188a108d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 27 Oct 2025 10:58:28 +0100 Subject: [PATCH 270/898] Use TestScope.backgroundScope --- .../DefaultNotificationDrawerManager.kt | 12 +----------- .../DefaultNotificationDrawerManagerTest.kt | 11 ++--------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 072ddcc891..71e5f8b7af 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -7,7 +7,6 @@ package io.element.android.libraries.push.impl.notifications -import androidx.annotation.VisibleForTesting import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.SingleIn @@ -31,7 +30,6 @@ import io.element.android.services.appnavstate.api.AppNavigationStateService import io.element.android.services.appnavstate.api.NavigationState import io.element.android.services.appnavstate.api.currentSessionId import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Job import kotlinx.coroutines.launch import timber.log.Timber @@ -54,25 +52,17 @@ class DefaultNotificationDrawerManager( private val imageLoaderHolder: ImageLoaderHolder, private val activeNotificationsProvider: ActiveNotificationsProvider, ) : NotificationCleaner { - private var appNavigationStateObserver: Job? = null - // TODO EAx add a setting per user for this private var useCompleteNotificationFormat = true init { // Observe application state - appNavigationStateObserver = coroutineScope.launch { + coroutineScope.launch { appNavigationStateService.appNavigationState .collect { onAppNavigationStateChange(it.navigationState) } } } - // For test only - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) - internal fun destroy() { - appNavigationStateObserver?.cancel() - } - private var currentAppNavigationState: NavigationState? = null private fun onAppNavigationStateChange(navigationState: NavigationState) { diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index b3c4569470..ff484df96f 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -56,7 +56,6 @@ class DefaultNotificationDrawerManagerTest { fun `clearAllEvents should have no effect when queue is empty`() = runTest { val defaultNotificationDrawerManager = createDefaultNotificationDrawerManager() defaultNotificationDrawerManager.clearAllEvents(A_SESSION_ID) - defaultNotificationDrawerManager.destroy() } @Test @@ -88,7 +87,6 @@ class DefaultNotificationDrawerManagerTest { defaultNotificationDrawerManager.onNotifiableEventReceived(aNotifiableMessageEvent()) // Add the same Event again (will be ignored) defaultNotificationDrawerManager.onNotifiableEventReceived(aNotifiableMessageEvent()) - defaultNotificationDrawerManager.destroy() } @Test @@ -101,7 +99,7 @@ class DefaultNotificationDrawerManagerTest { ) ) val appNavigationStateService = FakeAppNavigationStateService(appNavigationState = appNavigationStateFlow) - val defaultNotificationDrawerManager = createDefaultNotificationDrawerManager( + createDefaultNotificationDrawerManager( appNavigationStateService = appNavigationStateService ) appNavigationStateFlow.emit(AppNavigationState(aNavigationState(), isInForeground = true)) @@ -117,7 +115,6 @@ class DefaultNotificationDrawerManagerTest { // Like a user sign out appNavigationStateFlow.emit(AppNavigationState(aNavigationState(), isInForeground = true)) runCurrent() - defaultNotificationDrawerManager.destroy() } @Test @@ -172,8 +169,6 @@ class DefaultNotificationDrawerManagerTest { any(), ), ) - - defaultNotificationDrawerManager.destroy() } @Test @@ -205,8 +200,6 @@ class DefaultNotificationDrawerManagerTest { listOf(value(null), value(roomMessageId)), listOf(value(null), value(summaryId)), ) - - defaultNotificationDrawerManager.destroy() } private fun TestScope.createDefaultNotificationDrawerManager( @@ -234,7 +227,7 @@ class DefaultNotificationDrawerManagerTest { sessionStore = sessionStore, ), appNavigationStateService = appNavigationStateService, - coroutineScope = this, + coroutineScope = backgroundScope, matrixClientProvider = matrixClientProvider, imageLoaderHolder = FakeImageLoaderHolder(), activeNotificationsProvider = activeNotificationsProvider, From 947347b3f178d949d9f1c264a1cdca3a7adffb76 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 27 Oct 2025 12:32:36 +0100 Subject: [PATCH 271/898] Move call to `setGroup` to `configureWith` --- .../impl/notifications/factories/NotificationCreator.kt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 411cb25db1..79b4bb7db0 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -155,9 +155,6 @@ class DefaultNotificationCreator( setShortcutId(createShortcutId(roomInfo.sessionId, roomInfo.roomId)) } } - // Auto-bundling is enabled for 4 or more notifications on API 24+ (N+) - // devices and all Wear devices. But we want a custom grouping, so we specify the groupID - .setGroup(roomInfo.sessionId.value) .setGroupSummary(false) // In order to avoid notification making sound twice (due to the summary notification) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN) @@ -236,7 +233,6 @@ class DefaultNotificationCreator( .setOnlyAlertOnce(true) .setContentTitle((inviteNotifiableEvent.roomName ?: buildMeta.applicationName).annotateForDebug(5)) .setContentText(inviteNotifiableEvent.description.annotateForDebug(6)) - .setGroup(inviteNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .configureWith(notificationAccountParams) .apply { @@ -277,7 +273,6 @@ class DefaultNotificationCreator( .setOnlyAlertOnce(true) .setContentTitle(buildMeta.applicationName.annotateForDebug(7)) .setContentText(simpleNotifiableEvent.description.annotateForDebug(8)) - .setGroup(simpleNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .configureWith(notificationAccountParams) .setAutoCancel(true) @@ -308,7 +303,6 @@ class DefaultNotificationCreator( .setOnlyAlertOnce(true) .setContentTitle(buildMeta.applicationName.annotateForDebug(7)) .setContentText(fallbackNotifiableEvent.description.orEmpty().annotateForDebug(8)) - .setGroup(fallbackNotifiableEvent.sessionId.value) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL) .configureWith(notificationAccountParams) .setAutoCancel(true) @@ -343,7 +337,6 @@ class DefaultNotificationCreator( // used in compat < N, after summary is built based on child notifications .setWhen(lastMessageTimestamp) .setCategory(NotificationCompat.CATEGORY_MESSAGE) - .setGroup(userId.value) // set this notification as the summary for the group .setGroupSummary(true) .configureWith(notificationAccountParams) @@ -476,6 +469,7 @@ class DefaultNotificationCreator( private fun NotificationCompat.Builder.configureWith(notificationAccountParams: NotificationAccountParams) = apply { setSmallIcon(CommonDrawables.ic_notification) setColor(notificationAccountParams.color) + setGroup(notificationAccountParams.user.userId.value) if (notificationAccountParams.showSessionId) { setSubText(notificationAccountParams.user.userId.value) } From d5fdc5f8e6c3e3b96bfde4cf4b505dfec83fe284 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 27 Oct 2025 12:40:59 +0100 Subject: [PATCH 272/898] Small cleanup --- .../push/impl/notifications/factories/NotificationCreator.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 79b4bb7db0..390f6b66d7 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -164,7 +164,7 @@ class DefaultNotificationCreator( val messagingStyle = existingNotification?.let { MessagingStyle.extractMessagingStyleFromNotification(it) - } ?: messagingStyleFromCurrentUser( + } ?: createMessagingStyleFromCurrentUser( user = notificationAccountParams.user, imageLoader = imageLoader, roomName = roomInfo.roomDisplayName, @@ -437,7 +437,7 @@ class DefaultNotificationCreator( } } - private suspend fun messagingStyleFromCurrentUser( + private suspend fun createMessagingStyleFromCurrentUser( user: MatrixUser, imageLoader: ImageLoader, roomName: String, From 231077d94b6a695a06de8254dc0d961365108342 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 27 Oct 2025 12:50:12 +0100 Subject: [PATCH 273/898] Remove obsolete TODO --- .../push/impl/notifications/SummaryGroupMessageCreator.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt index 8600472c9d..80bc92dc23 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/SummaryGroupMessageCreator.kt @@ -49,13 +49,10 @@ class DefaultSummaryGroupMessageCreator( val summaryIsNoisy = roomNotifications.any { it.shouldBing } || invitationNotifications.any { it.isNoisy } || simpleNotifications.any { it.isNoisy } - val lastMessageTimestamp = roomNotifications.lastOrNull()?.latestTimestamp ?: invitationNotifications.lastOrNull()?.timestamp ?: simpleNotifications.last().timestamp - - // FIXME roomIdToEventMap.size is not correct, this is the number of rooms - val nbEvents = roomNotifications.size + simpleNotifications.size + val nbEvents = roomNotifications.size + invitationNotifications.size + simpleNotifications.size val sumTitle = stringProvider.getQuantityString(R.plurals.notification_compat_summary_title, nbEvents, nbEvents) return notificationCreator.createSummaryListNotification( notificationAccountParams = notificationAccountParams, From 4dc33d6c11ed29f7dcc9adeeaf821c53c73ddd4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 09:45:43 +0100 Subject: [PATCH 274/898] fix(deps): update dependencyanalysis to v3.4.1 (#5642) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 64085f7306..3b6048c7ee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -49,7 +49,7 @@ telephoto = "0.18.0" haze = "1.6.10" # Dependency analysis -dependencyAnalysis = "3.4.0" +dependencyAnalysis = "3.4.1" # DI metro = "0.7.2" From aaf6f8535b9153fe0a4cb23a4bf6a9b29b2cf5f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 08:47:43 +0000 Subject: [PATCH 275/898] fix(deps): update dependency com.squareup.okhttp3:okhttp-bom to v5.3.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3b6048c7ee..08ec71915c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -141,7 +141,7 @@ accompanist_permission = { module = "com.google.accompanist:accompanist-permissi squareup_seismic = "com.squareup:seismic:1.0.3" # network -network_okhttp_bom = "com.squareup.okhttp3:okhttp-bom:5.2.1" +network_okhttp_bom = "com.squareup.okhttp3:okhttp-bom:5.3.0" network_okhttp_logging = { module = "com.squareup.okhttp3:logging-interceptor" } network_okhttp_okhttp = { module = "com.squareup.okhttp3:okhttp" } network_okhttp = { module = "com.squareup.okhttp3:okhttp" } From af2429d8edc1198fbec64580d335e8d973ba121c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 09:42:22 +0100 Subject: [PATCH 276/898] Fix issue after rebase. --- .../push/impl/notifications/DefaultNotificationDrawerManager.kt | 2 +- .../push/impl/push/DefaultOnRedactedEventReceivedTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 71e5f8b7af..f3ba1c6d84 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -141,7 +141,7 @@ class DefaultNotificationDrawerManager( */ override fun clearMessagesForThread(sessionId: SessionId, roomId: RoomId, threadId: ThreadId) { val tag = NotificationCreator.messageTag(roomId, threadId) - notificationManager.cancel(tag, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) + notificationDisplayer.cancelNotification(tag, NotificationIdProvider.getRoomMessagesNotificationId(sessionId)) clearSummaryNotificationIfNeeded(sessionId) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt index b27c96d8de..71ec7c3545 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/push/DefaultOnRedactedEventReceivedTest.kt @@ -122,7 +122,7 @@ class DefaultOnRedactedEventReceivedTest { } ) }, - displayer = FakeNotificationDisplayer(showNotificationMessageResult = showNotificationLambda), + displayer = FakeNotificationDisplayer(showNotificationResult = showNotificationLambda), ) sut.onRedactedEventsReceived(listOf(ResolvedPushEvent.Redaction(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID, null))) From df4853e1f5deb4bfbdf1b9b5c302cbbe5d0bef8e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 10:10:00 +0100 Subject: [PATCH 277/898] Fix test. --- .../notifications/factories/DefaultNotificationCreatorTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index b95b3128fc..419a348f08 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -278,7 +278,7 @@ class DefaultNotificationCreatorTest { } private fun Notification.commonAssertions( - expectedGroup: String? = A_SESSION_ID.value, + expectedGroup: String? = aMatrixUser().userId.value, expectedCategory: String? = NotificationCompat.CATEGORY_MESSAGE, ) { assertThat(contentIntent).isNotNull() From e70d7671837bc38123ab96868a960a959d44d599 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 12:04:57 +0100 Subject: [PATCH 278/898] Remove context(parentNode: Node) and provide the parent Node as a parameter. --- .../android/appnav/LoggedInFlowNode.kt | 10 ++++++- .../android/appnav/NotLoggedInFlowNode.kt | 1 + .../io/element/android/appnav/RootFlowNode.kt | 3 +++ .../android/appnav/room/RoomFlowNode.kt | 8 +++++- .../room/joined/JoinedRoomLoadedFlowNode.kt | 4 +++ .../appnav/JoinedRoomLoadedFlowNodeTest.kt | 6 ++--- .../impl/DefaultAnalyticsEntryPoint.kt | 3 +-- .../impl/DefaultAnalyticsEntryPointTest.kt | 4 +-- .../api/ChangeRoomMemberRolesEntryPoint.kt | 2 +- .../DefaultChangeRoomMemberRolesEntyPoint.kt | 2 +- ...faultChangeRoomMemberRolesEntyPointTest.kt | 13 +++++----- .../FakeChangeRoomMemberRolesEntryPoint.kt | 2 +- .../createroom/api/CreateRoomEntryPoint.kt | 7 +++-- .../impl/DefaultCreateRoomEntryPoint.kt | 7 +++-- .../impl/DefaultCreateRoomEntryPointTest.kt | 11 ++++---- .../api/FakeCreateRoomEntryPoint.kt | 2 +- .../DefaultAccountDeactivationEntryPoint.kt | 3 +-- ...efaultAccountDeactivationEntryPointTest.kt | 4 +-- .../test/FakeAccountDeactivationEntryPoint.kt | 6 +++-- .../features/forward/api/ForwardEntryPoint.kt | 8 ++++-- .../forward/impl/DefaultForwardEntryPoint.kt | 8 ++++-- .../forward/impl/ForwardMessagesNode.kt | 1 + .../impl/DefaultForwardEntryPointTest.kt | 13 +++++----- .../forward/test/FakeForwardEntryPoint.kt | 2 +- .../ftue/impl/DefaultFtueEntryPoint.kt | 3 +-- .../features/ftue/impl/FtueFlowNode.kt | 3 ++- .../FtueSessionVerificationFlowNode.kt | 3 +++ .../ftue/impl/DefaultFtueEntryPointTest.kt | 6 ++--- .../features/home/api/HomeEntryPoint.kt | 7 +++-- .../home/impl/DefaultHomeEntryPoint.kt | 7 +++-- .../features/home/impl/HomeFlowNode.kt | 17 ++++++++++-- .../home/impl/DefaultHomeEntryPointTest.kt | 17 ++++++------ .../DeclineInviteAndBlockEntryPoint.kt | 7 +++-- .../DefaultDeclineAndBlockEntryPoint.kt | 7 +++-- .../DefaultDeclineAndBlockEntryPointTest.kt | 11 ++++---- .../FakeDeclineInviteAndBlockEntryPoint.kt | 7 +++-- .../joinroom/api/JoinRoomEntryPoint.kt | 7 +++-- .../impl/DefaultJoinRoomEntryPoint.kt | 7 +++-- .../joinroom/impl/JoinRoomFlowNode.kt | 6 ++++- .../impl/DefaultJoinRoomEntryPointTest.kt | 8 +++--- .../DefaultKnockRequestsListEntryPoint.kt | 3 +-- .../DefaultKnockRequestsListEntryPointTest.kt | 4 +-- .../test/FakeKnockRequestsListEntryPoint.kt | 6 +++-- .../DefaultOpenSourcesLicensesEntryPoint.kt | 3 +-- ...efaultOpenSourcesLicensesEntryPointTest.kt | 4 +-- .../test/FakeOpenSourceLicensesEntryPoint.kt | 6 +++-- .../location/api/SendLocationEntryPoint.kt | 2 +- .../location/api/ShowLocationEntryPoint.kt | 12 ++++++--- .../send/DefaultSendLocationEntryPoint.kt | 2 +- .../show/DefaultShowLocationEntryPoint.kt | 7 +++-- .../send/DefaultSendLocationEntryPointTest.kt | 11 ++++---- .../show/DefaultShowLocationEntryPointTest.kt | 11 ++++---- .../test/FakeSendLocationEntryPoint.kt | 2 +- .../test/FakeShowLocationEntryPoint.kt | 2 +- .../lockscreen/api/LockScreenEntryPoint.kt | 8 ++++-- .../impl/DefaultLockScreenEntryPoint.kt | 2 +- .../impl/DefaultLockScreenEntryPointTest.kt | 26 +++++++++---------- .../test/FakeLockScreenEntryPoint.kt | 2 +- .../features/login/api/LoginEntryPoint.kt | 8 ++++-- .../login/impl/DefaultLoginEntryPoint.kt | 8 ++++-- .../login/impl/DefaultLoginEntryPointTest.kt | 13 +++++----- .../features/logout/api/LogoutEntryPoint.kt | 7 +++-- .../logout/impl/DefaultLogoutEntryPoint.kt | 7 +++-- .../impl/DefaultLogoutEntryPointTest.kt | 11 ++++---- .../logout/test/FakeLogoutEntryPoint.kt | 2 +- .../messages/api/MessagesEntryPoint.kt | 8 ++++-- .../impl/DefaultMessagesEntryPoint.kt | 8 ++++-- .../messages/impl/MessagesFlowNode.kt | 13 ++++++++-- .../impl/DefaultMessagesEntryPointTest.kt | 13 +++++----- .../messages/test/FakeMessagesEntryPoint.kt | 2 +- .../poll/api/create/CreatePollEntryPoint.kt | 7 +++-- .../create/DefaultCreatePollEntryPoint.kt | 7 +++-- .../history/DefaultPollHistoryEntryPoint.kt | 3 +-- .../poll/impl/history/PollHistoryFlowNode.kt | 1 + .../create/DefaultCreatePollEntryPointTest.kt | 11 ++++---- .../DefaultPollHistoryEntryPointTest.kt | 4 +-- .../test/create/FakeCreatePollEntryPoint.kt | 2 +- .../test/history/FakePollHistoryEntryPoint.kt | 2 +- .../preferences/api/PreferencesEntryPoint.kt | 8 ++++-- .../impl/DefaultPreferencesEntryPoint.kt | 2 +- .../preferences/impl/PreferencesFlowNode.kt | 8 ++++-- .../impl/DefaultPreferencesEntryPointTest.kt | 13 +++++----- .../api/bugreport/BugReportEntryPoint.kt | 7 +++-- .../impl/bugreport/BugReportFlowNode.kt | 1 + .../bugreport/DefaultBugReportEntryPoint.kt | 7 +++-- .../DefaultBugReportEntryPointTest.kt | 11 ++++---- .../reportroom/api/ReportRoomEntryPoint.kt | 7 +++-- .../impl/DefaultReportRoomEntryPoint.kt | 7 +++-- .../impl/DefaultReportRoomEntryPointTest.kt | 8 +++--- .../test/FakeReportRoomEntryPoint.kt | 7 +++-- .../api/RoomAliasResolverEntryPoint.kt | 8 ++++-- .../DefaultRoomAliasResolverEntryPoint.kt | 2 +- .../DefaultRoomAliasResolverEntryPointTest.kt | 13 +++++----- .../roomdetails/api/RoomDetailsEntryPoint.kt | 8 ++++-- .../impl/DefaultRoomDetailsEntryPoint.kt | 2 +- .../roomdetails/impl/RoomDetailsFlowNode.kt | 15 ++++++++--- .../RolesAndPermissionsFlowNode.kt | 2 ++ .../impl/DefaultRoomDetailsEntryPointTest.kt | 13 +++++----- .../api/RoomDirectoryEntryPoint.kt | 7 +++-- .../impl/DefaultRoomDirectoryEntryPoint.kt | 7 +++-- .../DefaultRoomDirectoryEntryPointTest.kt | 11 ++++---- .../api/SecureBackupEntryPoint.kt | 8 ++++-- .../impl/DefaultSecureBackupEntryPoint.kt | 2 +- .../impl/DefaultSecureBackupEntryPointTest.kt | 13 +++++----- .../features/share/api/ShareEntryPoint.kt | 8 ++++-- .../share/impl/DefaultShareEntryPoint.kt | 8 ++++-- .../android/features/share/impl/ShareNode.kt | 1 + .../share/impl/DefaultShareEntryPointTest.kt | 13 +++++----- .../signedout/api/SignedOutEntryPoint.kt | 7 +++-- .../impl/DefaultSignedOutEntryPoint.kt | 7 +++-- .../impl/DefaultSignedOutEntryPointTest.kt | 11 ++++---- .../features/space/api/SpaceEntryPoint.kt | 2 +- .../space/impl/DefaultSpaceEntryPoint.kt | 8 ++++-- .../space/impl/DefaultSpaceEntryPointTest.kt | 13 +++++----- .../startchat/api/StartChatEntryPoint.kt | 7 +++-- .../impl/DefaultStartChatEntryPoint.kt | 7 +++-- .../startchat/impl/StartChatFlowNode.kt | 1 + .../impl/DefaultStartChatEntryPointTest.kt | 11 ++++---- .../userprofile/api/UserProfileEntryPoint.kt | 8 ++++-- .../impl/DefaultUserProfileEntryPoint.kt | 2 +- .../userprofile/impl/UserProfileFlowNode.kt | 2 ++ .../impl/DefaultUserProfileEntryPointTest.kt | 13 +++++----- .../api/IncomingVerificationEntryPoint.kt | 8 ++++-- .../api/OutgoingVerificationEntryPoint.kt | 8 ++++-- .../DefaultIncomingVerificationEntryPoint.kt | 2 +- .../DefaultOutgoingVerificationEntryPoint.kt | 2 +- ...faultIncomingVerificationEntryPointTest.kt | 13 +++++----- ...faultOutgoingVerificationEntryPointTest.kt | 13 +++++----- .../FakeIncomingVerificationEntryPoint.kt | 2 +- .../FakeOutgoingVerificationEntryPoint.kt | 2 +- .../viewfolder/api/ViewFolderEntryPoint.kt | 8 ++++-- .../impl/DefaultViewFolderEntryPoint.kt | 8 ++++-- .../impl/DefaultViewFolderEntryPointTest.kt | 13 +++++----- .../test/FakeViewFolderEntryPoint.kt | 2 +- .../api/AccountSelectEntryPoint.kt | 7 +++-- .../impl/DefaultAccountSelectEntryPoint.kt | 7 +++-- .../DefaultAccountSelectEntryPointTest.kt | 11 ++++---- .../architecture/FeatureEntryPoint.kt | 3 +-- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 7 +++-- .../mediaviewer/api/MediaViewerEntryPoint.kt | 8 ++++-- .../impl/DefaultMediaGalleryEntryPoint.kt | 7 +++-- .../impl/DefaultMediaViewerEntryPoint.kt | 2 +- .../impl/gallery/root/MediaGalleryFlowNode.kt | 1 + .../impl/DefaultMediaGalleryEntryPointTest.kt | 11 ++++---- .../impl/DefaultMediaViewerEntryPointTest.kt | 26 +++++++++---------- .../test/FakeMediaGalleryEntryPoint.kt | 2 +- .../test/FakeMediaViewerEntryPoint.kt | 2 +- .../roomselect/api/RoomSelectEntryPoint.kt | 8 ++++-- .../impl/DefaultRoomSelectEntryPoint.kt | 8 ++++-- .../impl/DefaultRoomSelectEntryPointTest.kt | 13 +++++----- .../test/FakeRoomSelectEntryPoint.kt | 2 +- .../api/NotificationTroubleShootEntryPoint.kt | 7 +++-- .../troubleshoot/api/PushHistoryEntryPoint.kt | 7 +++-- ...faultNotificationTroubleShootEntryPoint.kt | 7 +++-- .../history/DefaultPushHistoryEntryPoint.kt | 7 +++-- ...tNotificationTroubleShootEntryPointTest.kt | 11 ++++---- .../DefaultPushHistoryEntryPointTest.kt | 11 ++++---- .../FakeNotificationTroubleShootEntryPoint.kt | 2 +- .../test/FakePushHistoryEntryPoint.kt | 2 +- ...Template Module Feature Entry Point API.kt | 7 +++-- ...te Module Feature Entry Point Flow Impl.kt | 8 ++++-- 161 files changed, 668 insertions(+), 436 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 34815a55a1..ae61a03281 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -334,6 +334,7 @@ class LoggedInFlowNode( } } homeEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) @@ -390,6 +391,7 @@ class LoggedInFlowNode( } } userProfileEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = UserProfileEntryPoint.Params(userId = navTarget.userId), callback = callback, @@ -419,6 +421,7 @@ class LoggedInFlowNode( } val inputs = PreferencesEntryPoint.Params(navTarget.initialElement) preferencesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = inputs, callback = callback, @@ -436,12 +439,14 @@ class LoggedInFlowNode( } startChatEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) } is NavTarget.SecureBackup -> { secureBackupEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(initialElement = navTarget.initialElement), callback = object : SecureBackupEntryPoint.Callback { @@ -452,10 +457,11 @@ class LoggedInFlowNode( ) } NavTarget.Ftue -> { - ftueEntryPoint.createNode(buildContext) + ftueEntryPoint.createNode(this, buildContext) } NavTarget.RoomDirectory -> { roomDirectoryEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) { @@ -472,6 +478,7 @@ class LoggedInFlowNode( } is NavTarget.IncomingShare -> { shareEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = ShareEntryPoint.Params(intent = navTarget.intent), callback = object : ShareEntryPoint.Callback { @@ -486,6 +493,7 @@ class LoggedInFlowNode( } is NavTarget.IncomingVerificationRequest -> { incomingVerificationEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = IncomingVerificationEntryPoint.Params(navTarget.data), callback = object : IncomingVerificationEntryPoint.Callback { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt index 4ca9a2db17..b372155bd3 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/NotLoggedInFlowNode.kt @@ -84,6 +84,7 @@ class NotLoggedInFlowNode( } } loginEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = LoginEntryPoint.Params( accountProvider = inputs.loginParams?.accountProvider, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index e1322d0bbe..bdad3c2ab0 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -250,6 +250,7 @@ class RootFlowNode( } is NavTarget.SignedOutFlow -> { signedOutEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = SignedOutEntryPoint.Params( sessionId = navTarget.sessionId, @@ -264,6 +265,7 @@ class RootFlowNode( } } bugReportEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) @@ -292,6 +294,7 @@ class RootFlowNode( } } accountSelectEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index 602979edca..a41eb8d777 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -181,6 +181,7 @@ class RoomFlowNode( } val params = Params(navTarget.roomAlias) roomAliasResolverEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -194,7 +195,11 @@ class RoomFlowNode( serverNames = navTarget.serverNames, trigger = navTarget.trigger, ) - joinRoomEntryPoint.createNode(buildContext, inputs) + joinRoomEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inputs = inputs, + ) } is NavTarget.JoinedRoom -> { val roomFlowNodeCallback = plugins() @@ -207,6 +212,7 @@ class RoomFlowNode( is NavTarget.JoinedSpace -> { val spaceCallback = plugins().single() spaceEntryPoint.createNode( + parentNode = this, buildContext = buildContext, inputs = SpaceEntryPoint.Inputs(roomId = navTarget.spaceId), callback = spaceCallback, diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index af0ed4c919..16eaff89b1 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -141,6 +141,7 @@ class JoinedRoomLoadedFlowNode( } } return roomDetailsEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = RoomDetailsEntryPoint.Params(initialTarget), callback = callback, @@ -179,6 +180,7 @@ class JoinedRoomLoadedFlowNode( } } forwardEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -202,6 +204,7 @@ class JoinedRoomLoadedFlowNode( } } return spaceEntryPoint.createNode( + parentNode = this, buildContext = buildContext, inputs = SpaceEntryPoint.Inputs(roomId = inputs.room.roomId), callback = callback, @@ -237,6 +240,7 @@ class JoinedRoomLoadedFlowNode( MessagesEntryPoint.InitialTarget.Messages(navTarget.focusedEventId) ) return messagesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, diff --git a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt index 0474be0eb7..e560593399 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/JoinedRoomLoadedFlowNodeTest.kt @@ -55,8 +55,8 @@ class JoinedRoomLoadedFlowNodeTest { var parameters: MessagesEntryPoint.Params? = null var callback: MessagesEntryPoint.Callback? = null - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback, @@ -78,8 +78,8 @@ class JoinedRoomLoadedFlowNodeTest { private class FakeRoomDetailsEntryPoint : RoomDetailsEntryPoint { var nodeId: String? = null - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: RoomDetailsEntryPoint.Params, callback: RoomDetailsEntryPoint.Callback, @@ -91,8 +91,8 @@ class JoinedRoomLoadedFlowNodeTest { private class FakeSpaceEntryPoint : SpaceEntryPoint { var nodeId: String? = null - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback, diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt index 09dd1d0181..af59c94e0a 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAnalyticsEntryPoint : AnalyticsEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt index e87473a447..b5ec819632 100644 --- a/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt +++ b/features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/DefaultAnalyticsEntryPointTest.kt @@ -33,9 +33,7 @@ class DefaultAnalyticsEntryPointTest { ) ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(AnalyticsOptInNode::class.java) } } diff --git a/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt b/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt index 2b41a0ae76..7905cdc0ae 100644 --- a/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt +++ b/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.room.JoinedRoom fun interface ChangeRoomMemberRolesEntryPoint : FeatureEntryPoint { - context(parentNode: Node) fun createNode( + parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, 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 index b5aab56ce5..e76333cda7 100644 --- 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 @@ -18,8 +18,8 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesBinding(SessionScope::class) class DefaultChangeRoomMemberRolesEntyPoint : ChangeRoomMemberRolesEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt index efc91b45aa..84e53c0cb6 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt +++ b/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt @@ -31,13 +31,12 @@ class DefaultChangeRoomMemberRolesEntyPointTest { } val room = FakeJoinedRoom() val listType = ChangeRoomMemberRolesListType.Admins - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - room = FakeJoinedRoom(), - listType = listType, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + room = FakeJoinedRoom(), + listType = listType, + ) assertThat(result).isInstanceOf(ChangeRoomMemberRolesRootNode::class.java) // Search for the Inputs plugin val input = result.plugins.filterIsInstance().single() diff --git a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt index 9508447f25..16b404ab5e 100644 --- a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt +++ b/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.tests.testutils.lambda.lambdaError class FakeChangeRoomMemberRolesEntryPoint : ChangeRoomMemberRolesEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, room: JoinedRoom, listType: ChangeRoomMemberRolesListType, diff --git a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt index 1a5a1bef5c..c9763f183d 100644 --- a/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt +++ b/features/createroom/api/src/main/kotlin/io/element/android/features/createroom/api/CreateRoomEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface CreateRoomEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onRoomCreated(roomId: RoomId) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt index ab00e6402f..35b05a548d 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultCreateRoomEntryPoint : CreateRoomEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: CreateRoomEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt index 5d415c5d44..4690b5b7f3 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/DefaultCreateRoomEntryPointTest.kt @@ -38,12 +38,11 @@ class DefaultCreateRoomEntryPointTest { val callback = object : CreateRoomEntryPoint.Callback { override fun onRoomCreated(roomId: RoomId) = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result.plugins).contains(callback) } } diff --git a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt index 929d22b3de..1f5a217537 100644 --- a/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt +++ b/features/createroom/test/src/main/kotlin/io/element/android/features/createroom/api/FakeCreateRoomEntryPoint.kt @@ -12,8 +12,8 @@ import com.bumble.appyx.core.node.Node import io.element.android.tests.testutils.lambda.lambdaError class FakeCreateRoomEntryPoint : CreateRoomEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, callback: CreateRoomEntryPoint.Callback, ): Node = lambdaError() diff --git a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt index 788cc393ed..a7c0d50dbe 100644 --- a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt +++ b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt b/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt index 1e8dfe36cc..05ad52efe9 100644 --- a/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt +++ b/features/deactivation/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultAccountDeactivationEntryPointTest.kt @@ -28,9 +28,7 @@ class DefaultAccountDeactivationEntryPointTest { presenter = createPresenter(), ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(AccountDeactivationNode::class.java) } } diff --git a/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt b/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt index 8c898dfb6b..769f07f1a4 100644 --- a/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt +++ b/features/deactivation/test/src/main/kotlin/io/element/android/features/deactivation/test/FakeAccountDeactivationEntryPoint.kt @@ -13,8 +13,10 @@ import io.element.android.features.deactivation.api.AccountDeactivationEntryPoin import io.element.android.tests.testutils.lambda.lambdaError class FakeAccountDeactivationEntryPoint : AccountDeactivationEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + ): Node { lambdaError() } } diff --git a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt index 1de948dea3..960c5362c2 100644 --- a/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt +++ b/features/forward/api/src/main/kotlin/io/element/android/features/forward/api/ForwardEntryPoint.kt @@ -26,6 +26,10 @@ interface ForwardEntryPoint : FeatureEntryPoint { val timelineProvider: TimelineProvider, ) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt index 7cf20c017f..ab472fefbc 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultForwardEntryPoint : ForwardEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ForwardEntryPoint.Params, + callback: ForwardEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt index f033e97694..a38f71264b 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesNode.kt @@ -71,6 +71,7 @@ class ForwardMessagesNode( } return roomSelectEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Forward), callback = callback, diff --git a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt index f344d58063..28c5f668e6 100644 --- a/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt +++ b/features/forward/impl/src/test/kotlin/io/element/android/features/forward/impl/DefaultForwardEntryPointTest.kt @@ -47,13 +47,12 @@ class DefaultForwardEntryPointTest { eventId = AN_EVENT_ID, timelineProvider = FakeTimelineProvider(), ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ForwardMessagesNode::class.java) assertThat(result.plugins).contains( ForwardMessagesNode.Inputs( diff --git a/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt b/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt index d42ea203a0..4882461ad0 100644 --- a/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt +++ b/features/forward/test/src/main/kotlin/io/element/android/features/forward/test/FakeForwardEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeForwardEntryPoint : ForwardEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: ForwardEntryPoint.Params, callback: ForwardEntryPoint.Callback, diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt index 184e3bb802..c480d329a8 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultFtueEntryPoint : FtueEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt index 779e16f310..7c045f0150 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/FtueFlowNode.kt @@ -102,7 +102,7 @@ class FtueFlowNode( createNode(buildContext, listOf(callback)) } NavTarget.AnalyticsOptIn -> { - analyticsEntryPoint.createNode(buildContext) + analyticsEntryPoint.createNode(this, buildContext) } NavTarget.LockScreenSetup -> { val callback = object : LockScreenEntryPoint.Callback { @@ -111,6 +111,7 @@ class FtueFlowNode( } } lockScreenEntryPoint.createNode( + parentNode = this, buildContext = buildContext, navTarget = LockScreenEntryPoint.Target.Setup, callback = callback, diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt index 974c66d243..13da4a0748 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/FtueSessionVerificationFlowNode.kt @@ -104,6 +104,7 @@ class FtueSessionVerificationFlowNode( } is NavTarget.UseAnotherDevice -> { outgoingVerificationEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = OutgoingVerificationEntryPoint.Params( showDeviceVerifiedScreen = true, @@ -127,6 +128,7 @@ class FtueSessionVerificationFlowNode( } is NavTarget.EnterRecoveryKey -> { secureBackupEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey), callback = secureBackupEntryPointCallback @@ -134,6 +136,7 @@ class FtueSessionVerificationFlowNode( } is NavTarget.ResetIdentity -> { secureBackupEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity), callback = object : SecureBackupEntryPoint.Callback { diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt index efd787b1c4..b7036ee69b 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/DefaultFtueEntryPointTest.kt @@ -32,14 +32,12 @@ class DefaultFtueEntryPointTest { FtueFlowNode( buildContext = buildContext, plugins = plugins, - analyticsEntryPoint = { _ -> lambdaError() }, + analyticsEntryPoint = { _, _ -> lambdaError() }, defaultFtueService = createDefaultFtueService(), lockScreenEntryPoint = FakeLockScreenEntryPoint(), ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(FtueFlowNode::class.java) } } diff --git a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt index 101f631cd9..91196dc2ad 100644 --- a/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt +++ b/features/home/api/src/main/kotlin/io/element/android/features/home/api/HomeEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId interface HomeEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun navigateToRoom(roomId: RoomId) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt index 34c9b5f0d9..73b928ce02 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultHomeEntryPoint : HomeEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: HomeEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: HomeEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } 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 b0848d85af..5380c51295 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 @@ -186,11 +186,24 @@ class HomeFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - is NavTarget.ReportRoom -> reportRoomEntryPoint.createNode(buildContext, navTarget.roomId) - is NavTarget.DeclineInviteAndBlockUser -> declineInviteAndBlockUserEntryPoint.createNode(buildContext, navTarget.inviteData) + is NavTarget.ReportRoom -> { + reportRoomEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + roomId = navTarget.roomId, + ) + } + is NavTarget.DeclineInviteAndBlockUser -> { + declineInviteAndBlockUserEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inviteData = navTarget.inviteData, + ) + } is NavTarget.SelectNewOwnersWhenLeavingRoom -> { val room = runBlocking { matrixClient.getJoinedRoom(navTarget.roomId) } ?: error("Room ${navTarget.roomId} not found") changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, room = room, listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt index 47574cd639..489234a827 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/DefaultHomeEntryPointTest.kt @@ -34,9 +34,9 @@ class DefaultHomeEntryPointTest { analyticsService = FakeAnalyticsService(), acceptDeclineInviteView = { _, _, _, _ -> lambdaError() }, directLogoutView = { _ -> lambdaError() }, - reportRoomEntryPoint = { _, _ -> lambdaError() }, - declineInviteAndBlockUserEntryPoint = { _, _ -> lambdaError() }, - changeRoomMemberRolesEntryPoint = { _, _, _ -> lambdaError() }, + reportRoomEntryPoint = { _, _, _ -> lambdaError() }, + declineInviteAndBlockUserEntryPoint = { _, _, _ -> lambdaError() }, + changeRoomMemberRolesEntryPoint = { _, _, _, _ -> lambdaError() }, leaveRoomRenderer = { _, _, _ -> lambdaError() }, ) } @@ -49,12 +49,11 @@ class DefaultHomeEntryPointTest { override fun navigateToRoomSettings(roomId: RoomId) = lambdaError() override fun navigateToBugReport() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(HomeFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt b/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt index 44b88f627b..1bd4b0031b 100644 --- a/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt +++ b/features/invite/api/src/main/kotlin/io/element/android/features/invite/api/declineandblock/DeclineInviteAndBlockEntryPoint.kt @@ -13,6 +13,9 @@ import io.element.android.features.invite.api.InviteData import io.element.android.libraries.architecture.FeatureEntryPoint fun interface DeclineInviteAndBlockEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, inviteData: InviteData): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + inviteData: InviteData, + ): Node } diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt index a356636cad..00f91356c4 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPoint.kt @@ -17,8 +17,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultDeclineAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inviteData: InviteData): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inviteData: InviteData, + ): Node { val inputs = DeclineAndBlockNode.Inputs(inviteData) return parentNode.createNode(buildContext, plugins = listOf(inputs)) } diff --git a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt index c1919831c0..7cdf208b9a 100644 --- a/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt +++ b/features/invite/impl/src/test/kotlin/io/element/android/features/invite/impl/declineandblock/DefaultDeclineAndBlockEntryPointTest.kt @@ -30,12 +30,11 @@ class DefaultDeclineAndBlockEntryPointTest { ) } val inviteData = anInviteData() - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - inviteData = inviteData - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + inviteData = inviteData + ) assertThat(result).isInstanceOf(DeclineAndBlockNode::class.java) assertThat(result.plugins).contains(DeclineAndBlockNode.Inputs(inviteData)) } diff --git a/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt b/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt index 75d93666c0..5df4ff6c0f 100644 --- a/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt +++ b/features/invite/test/src/main/kotlin/io/element/android/features/invite/test/declineandblock/FakeDeclineInviteAndBlockEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBl import io.element.android.tests.testutils.lambda.lambdaError class FakeDeclineInviteAndBlockEntryPoint : DeclineInviteAndBlockEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inviteData: InviteData): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inviteData: InviteData, + ): Node { lambdaError() } } diff --git a/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt b/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt index 7b4f9a8ac0..0860c1053b 100644 --- a/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt +++ b/features/joinroom/api/src/main/kotlin/io/element/android/features/joinroom/api/JoinRoomEntryPoint.kt @@ -18,8 +18,11 @@ import io.element.android.libraries.matrix.api.core.RoomIdOrAlias import java.util.Optional interface JoinRoomEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, inputs: Inputs): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: Inputs, + ): Node data class Inputs( val roomId: RoomId, diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt index eb1deb4897..0289dc5993 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultJoinRoomEntryPoint : JoinRoomEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inputs: JoinRoomEntryPoint.Inputs): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: JoinRoomEntryPoint.Inputs, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(inputs) diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt index 92cd023bc9..aa1c0d452f 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomFlowNode.kt @@ -64,7 +64,11 @@ class JoinRoomFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - is NavTarget.DeclineInviteAndBlockUser -> declineAndBlockEntryPoint.createNode(buildContext, navTarget.inviteData) + is NavTarget.DeclineInviteAndBlockUser -> declineAndBlockEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inviteData = navTarget.inviteData, + ) NavTarget.Root -> rootNode(buildContext) } } diff --git a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt index abde7e9e4e..570323c377 100644 --- a/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt +++ b/features/joinroom/impl/src/test/kotlin/io/element/android/features/joinroom/impl/DefaultJoinRoomEntryPointTest.kt @@ -48,9 +48,11 @@ class DefaultJoinRoomEntryPointTest { serverNames = emptyList(), trigger = JoinedRoom.Trigger.RoomDirectory, ) - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null), inputs) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + inputs = inputs, + ) assertThat(result).isInstanceOf(JoinRoomFlowNode::class.java) assertThat(result.plugins).contains(inputs) } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt index a3186072f3..c77065324d 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt b/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt index 2e6a8426e8..b6b6d766c7 100644 --- a/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt +++ b/features/knockrequests/impl/src/test/kotlin/io/element/android/features/knockrequests/impl/list/DefaultKnockRequestsListEntryPointTest.kt @@ -30,9 +30,7 @@ class DefaultKnockRequestsListEntryPointTest { presenter = createKnockRequestsListPresenter(), ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(KnockRequestsListNode::class.java) } } diff --git a/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt b/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt index 4c7a6ffdc7..bb5ab5045f 100644 --- a/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt +++ b/features/knockrequests/test/src/main/kotlin/io/element/android/features/knockrequests/test/FakeKnockRequestsListEntryPoint.kt @@ -13,6 +13,8 @@ import io.element.android.features.knockrequests.api.list.KnockRequestsListEntry import io.element.android.tests.testutils.lambda.lambdaError class FakeKnockRequestsListEntryPoint : KnockRequestsListEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node = lambdaError() + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + ): Node = lambdaError() } diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt index 4839c1a8cf..77c56b6d3a 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultOpenSourcesLicensesEntryPoint : OpenSourceLicensesEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt b/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt index 9fbd370c55..3209e28fe6 100644 --- a/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt +++ b/features/licenses/impl/src/test/kotlin/io/element/android/features/licenses/impl/DefaultOpenSourcesLicensesEntryPointTest.kt @@ -31,9 +31,7 @@ class DefaultOpenSourcesLicensesEntryPointTest { plugins = plugins, ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(DependenciesFlowNode::class.java) } } diff --git a/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt b/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt index 0ce30a7839..49772dd946 100644 --- a/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt +++ b/features/licenses/test/src/main/kotlin/io/element/android/features/licenses/test/FakeOpenSourceLicensesEntryPoint.kt @@ -13,8 +13,10 @@ import io.element.android.features.licenses.api.OpenSourceLicensesEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeOpenSourceLicensesEntryPoint : OpenSourceLicensesEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + ): Node { lambdaError() } } diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt index f522992872..afd1b895b5 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/SendLocationEntryPoint.kt @@ -18,8 +18,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline * Allows a user to share a location message within a room. */ interface SendLocationEntryPoint : FeatureEntryPoint { - context(parentNode: Node) fun createNode( + parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ): Node diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt index 2bf4ac5871..3c1f3ec288 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/ShowLocationEntryPoint.kt @@ -13,8 +13,14 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.architecture.NodeInputs interface ShowLocationEntryPoint : FeatureEntryPoint { - data class Inputs(val location: Location, val description: String?) : NodeInputs + data class Inputs( + val location: Location, + val description: String?, + ) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, inputs: Inputs): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: Inputs, + ): Node } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt index 6d14dc06dc..2a8e9309a1 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPoint.kt @@ -17,8 +17,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline @ContributesBinding(AppScope::class) class DefaultSendLocationEntryPoint : SendLocationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ): Node { diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt index ab2c45eb1a..674dea4782 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultShowLocationEntryPoint : ShowLocationEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: ShowLocationEntryPoint.Inputs, + ): Node { return parentNode.createNode(buildContext, listOf(inputs)) } } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt index ff3cc57dcf..4cac3df6a2 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/send/DefaultSendLocationEntryPointTest.kt @@ -47,12 +47,11 @@ class DefaultSendLocationEntryPointTest { ) } val timelineMode = Timeline.Mode.Live - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - timelineMode = timelineMode, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + timelineMode = timelineMode, + ) assertThat(result).isInstanceOf(SendLocationNode::class.java) assertThat(result.plugins).contains(SendLocationNode.Inputs(timelineMode)) } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt index b7d7a1be44..8d0d862c9b 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/show/DefaultShowLocationEntryPointTest.kt @@ -47,12 +47,11 @@ class DefaultShowLocationEntryPointTest { location = Location(37.4219983, -122.084, 10f), description = "My location", ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - inputs = inputs, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + inputs = inputs, + ) assertThat(result).isInstanceOf(ShowLocationNode::class.java) assertThat(result.plugins).contains(inputs) } diff --git a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt index 7bcccef4bb..ba39be70b1 100644 --- a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt +++ b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeSendLocationEntryPoint.kt @@ -14,8 +14,8 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.tests.testutils.lambda.lambdaError class FakeSendLocationEntryPoint : SendLocationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, timelineMode: Timeline.Mode, ): Node = lambdaError() diff --git a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt index 33d269f68d..a1ff742497 100644 --- a/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt +++ b/features/location/test/src/main/kotlin/io/element/android/features/location/test/FakeShowLocationEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.location.api.ShowLocationEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeShowLocationEntryPoint : ShowLocationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, inputs: ShowLocationEntryPoint.Inputs, ): Node = lambdaError() diff --git a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt index c5c187db83..c777d3a6b5 100644 --- a/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt +++ b/features/lockscreen/api/src/main/kotlin/io/element/android/features/lockscreen/api/LockScreenEntryPoint.kt @@ -15,8 +15,12 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LockScreenEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, navTarget: Target, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + navTarget: Target, + callback: Callback, + ): Node fun pinUnlockIntent(context: Context): Intent diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt index 8651480c37..39430c5ad1 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPoint.kt @@ -19,8 +19,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLockScreenEntryPoint : LockScreenEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target, callback: LockScreenEntryPoint.Callback, diff --git a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt index 425f5a70e3..15473fe43c 100644 --- a/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt +++ b/features/lockscreen/impl/src/test/kotlin/io/element/android/features/lockscreen/impl/DefaultLockScreenEntryPointTest.kt @@ -37,13 +37,12 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Setup - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - navTarget = navTarget, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Setup)) assertThat(result.plugins).contains(callback) @@ -62,13 +61,12 @@ class DefaultLockScreenEntryPointTest { override fun onSetupDone() = lambdaError() } val navTarget = LockScreenEntryPoint.Target.Settings - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - navTarget = navTarget, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + navTarget = navTarget, + callback = callback, + ) assertThat(result).isInstanceOf(LockScreenFlowNode::class.java) assertThat(result.plugins).contains(LockScreenFlowNode.Inputs(LockScreenFlowNode.NavTarget.Settings)) assertThat(result.plugins).contains(callback) diff --git a/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt index dc722dd0c8..1c41d9d6ea 100644 --- a/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt +++ b/features/lockscreen/test/src/main/kotlin/io/element/android/features/lockscreen/test/FakeLockScreenEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.features.lockscreen.api.LockScreenEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeLockScreenEntryPoint : LockScreenEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, navTarget: LockScreenEntryPoint.Target, callback: LockScreenEntryPoint.Callback, diff --git a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt index b9f4228162..bebe2f0afc 100644 --- a/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt +++ b/features/login/api/src/main/kotlin/io/element/android/features/login/api/LoginEntryPoint.kt @@ -22,6 +22,10 @@ interface LoginEntryPoint : FeatureEntryPoint { fun navigateToBugReport() } - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt index 327ec5036a..71fbe1598c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLoginEntryPoint : LoginEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: LoginEntryPoint.Params, callback: LoginEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: LoginEntryPoint.Params, + callback: LoginEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt index 2396831b1d..4a6f6cae22 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/DefaultLoginEntryPointTest.kt @@ -45,13 +45,12 @@ class DefaultLoginEntryPointTest { accountProvider = "ac", loginHint = "lh", ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(LoginFlowNode::class.java) assertThat(result.plugins).contains(LoginFlowNode.Params(params.accountProvider, params.loginHint)) assertThat(result.plugins).contains(callback) diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt index 207f92a489..cf7deaf334 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt @@ -13,8 +13,11 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface LogoutEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun navigateToSecureBackup() diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index 42c11cf0d6..844c5ad0ad 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultLogoutEntryPoint : LogoutEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: LogoutEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: LogoutEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt index b319a30e44..dd4b3b36fc 100644 --- a/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt +++ b/features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPointTest.kt @@ -34,12 +34,11 @@ class DefaultLogoutEntryPointTest { val callback = object : LogoutEntryPoint.Callback { override fun navigateToSecureBackup() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(LogoutNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt index 4273bf7169..953fe87587 100644 --- a/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt +++ b/features/logout/test/src/main/kotlin/io/element/android/features/logout/test/FakeLogoutEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.logout.api.LogoutEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeLogoutEntryPoint : LogoutEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, callback: LogoutEntryPoint.Callback, ): Node = lambdaError() diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 6f883bb683..54df2b7fec 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -41,8 +41,12 @@ interface MessagesEntryPoint : FeatureEntryPoint { data class Params(val initialTarget: InitialTarget) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node } interface MessagesEntryPointNode { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt index 90784912e6..1b20580b62 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultMessagesEntryPoint : MessagesEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: MessagesEntryPoint.Params, + callback: MessagesEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(params, callback)) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 0c700d5695..7d468354d8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -321,6 +321,7 @@ class MessagesFlowNode( } } mediaViewerEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback @@ -336,7 +337,11 @@ class MessagesFlowNode( } is NavTarget.LocationViewer -> { val inputs = ShowLocationEntryPoint.Inputs(navTarget.location, navTarget.description) - showLocationEntryPoint.createNode(buildContext, inputs) + showLocationEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + inputs = inputs, + ) } is NavTarget.EventDebugInfo -> { val inputs = EventDebugInfoNode.Inputs(navTarget.eventId, navTarget.debugInfo) @@ -358,6 +363,7 @@ class MessagesFlowNode( } } forwardEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -369,12 +375,14 @@ class MessagesFlowNode( } is NavTarget.SendLocation -> { sendLocationEntryPoint.createNode( + parentNode = this, buildContext = buildContext, timelineMode = navTarget.timelineMode, ) } is NavTarget.CreatePoll -> { createPollEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = navTarget.timelineMode, @@ -384,6 +392,7 @@ class MessagesFlowNode( } is NavTarget.EditPoll -> { createPollEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = navTarget.timelineMode, @@ -423,7 +432,7 @@ class MessagesFlowNode( createNode(buildContext, plugins = listOf(callback)) } NavTarget.KnockRequestsList -> { - knockRequestsListEntryPoint.createNode(buildContext) + knockRequestsListEntryPoint.createNode(this, buildContext) } is NavTarget.Thread -> { val inputs = ThreadedMessagesNode.Inputs( diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 2c8cb88875..880f89f3bc 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -95,13 +95,12 @@ class DefaultMessagesEntryPointTest { } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) val params = MessagesEntryPoint.Params(initialTarget) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MessagesFlowNode::class.java) assertThat(result.plugins).contains(MessagesEntryPoint.Params(initialTarget)) assertThat(result.plugins).contains(callback) diff --git a/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt index 91258521de..8cd8e6dc89 100644 --- a/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt +++ b/features/messages/test/src/main/kotlin/io/element/android/features/messages/test/FakeMessagesEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeMessagesEntryPoint : MessagesEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: MessagesEntryPoint.Params, callback: MessagesEntryPoint.Callback, diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt index 202ff9c7c1..f1f4ee4f5c 100644 --- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt +++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/create/CreatePollEntryPoint.kt @@ -18,6 +18,9 @@ interface CreatePollEntryPoint : FeatureEntryPoint { val mode: CreatePollMode, ) - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + ): Node } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt index 5d3a6d66cb..1e41cdc59e 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultCreatePollEntryPoint : CreatePollEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: CreatePollEntryPoint.Params): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: CreatePollEntryPoint.Params, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt index c309a5324e..7f867def0a 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPoint.kt @@ -16,8 +16,7 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultPollHistoryEntryPoint : PollHistoryEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext): Node { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { return parentNode.createNode(buildContext) } } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt index 56ae72e58f..6b43a06d01 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryFlowNode.kt @@ -54,6 +54,7 @@ class PollHistoryFlowNode( return when (navTarget) { is NavTarget.EditPoll -> { createPollEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = CreatePollEntryPoint.Params( timelineMode = Timeline.Mode.Live, diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt index 14c41f50cd..464fae98a0 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/create/DefaultCreatePollEntryPointTest.kt @@ -53,12 +53,11 @@ class DefaultCreatePollEntryPointTest { timelineMode = Timeline.Mode.Live, mode = CreatePollMode.NewPoll, ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + ) assertThat(result).isInstanceOf(CreatePollNode::class.java) assertThat(result.plugins).contains(CreatePollNode.Inputs(timelineMode = params.timelineMode, mode = params.mode)) } diff --git a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt index 41c99d1cd1..dfee9a7320 100644 --- a/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt +++ b/features/poll/impl/src/test/kotlin/io/element/android/features/poll/impl/history/DefaultPollHistoryEntryPointTest.kt @@ -34,9 +34,7 @@ class DefaultPollHistoryEntryPointTest { createPollEntryPoint = FakeCreatePollEntryPoint(), ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null)) - } + val result = entryPoint.createNode(parentNode, BuildContext.root(null)) assertThat(result).isInstanceOf(PollHistoryFlowNode::class.java) } } diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt index 3563c341f4..96a63225b2 100644 --- a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/create/FakeCreatePollEntryPoint.kt @@ -14,8 +14,8 @@ import io.element.android.features.poll.api.create.CreatePollEntryPoint.Params import io.element.android.tests.testutils.lambda.lambdaError class FakeCreatePollEntryPoint : CreatePollEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: Params, ): Node = lambdaError() diff --git a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt index 5e20159fd8..725b5dc0ee 100644 --- a/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt +++ b/features/poll/test/src/main/kotlin/io/element/android/features/poll/test/history/FakePollHistoryEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.poll.api.history.PollHistoryEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakePollHistoryEntryPoint : PollHistoryEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, ): Node = lambdaError() } diff --git a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt index af92b58cbb..5bb8a68a99 100644 --- a/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt +++ b/features/preferences/api/src/main/kotlin/io/element/android/features/preferences/api/PreferencesEntryPoint.kt @@ -31,8 +31,12 @@ interface PreferencesEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun navigateToAddAccount() diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt index 338a3ff434..ffc9a2b798 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultPreferencesEntryPoint : PreferencesEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: PreferencesEntryPoint.Params, callback: PreferencesEntryPoint.Callback, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index ba5313dd7e..c8520c4f27 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -216,6 +216,7 @@ class PreferencesFlowNode( } NavTarget.TroubleshootNotifications -> { notificationTroubleShootEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = object : NotificationTroubleShootEntryPoint.Callback { override fun onDone() { @@ -234,6 +235,7 @@ class PreferencesFlowNode( } NavTarget.PushHistory -> { pushHistoryEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = object : PushHistoryEntryPoint.Callback { override fun onDone() { @@ -268,6 +270,7 @@ class PreferencesFlowNode( } NavTarget.LockScreenSettings -> { lockScreenEntryPoint.createNode( + parentNode = this, buildContext = buildContext, navTarget = LockScreenEntryPoint.Target.Settings, callback = object : LockScreenEntryPoint.Callback { @@ -287,15 +290,16 @@ class PreferencesFlowNode( } } logoutEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callBack, ) } is NavTarget.OssLicenses -> { - openSourceLicensesEntryPoint.createNode(buildContext) + openSourceLicensesEntryPoint.createNode(this, buildContext) } NavTarget.AccountDeactivation -> { - accountDeactivationEntryPoint.createNode(buildContext) + accountDeactivationEntryPoint.createNode(this, buildContext) } } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt index f46a66248e..86ff65677c 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/DefaultPreferencesEntryPointTest.kt @@ -57,13 +57,12 @@ class DefaultPreferencesEntryPointTest { val params = PreferencesEntryPoint.Params( initialElement = PreferencesEntryPoint.InitialTarget.NotificationSettings, ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(PreferencesFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt index a8fbf56b75..df6de4746e 100644 --- a/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt +++ b/features/rageshake/api/src/main/kotlin/io/element/android/features/rageshake/api/bugreport/BugReportEntryPoint.kt @@ -13,8 +13,11 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface BugReportEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt index af0c06054f..8749199fd1 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportFlowNode.kt @@ -78,6 +78,7 @@ class BugReportFlowNode( rootPath = navTarget.rootPath, ) viewFolderEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt index ffdaf41167..e094c62244 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultBugReportEntryPoint : BugReportEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: BugReportEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: BugReportEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt index da3e2e8982..fb59100c43 100644 --- a/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt +++ b/features/rageshake/impl/src/test/kotlin/io/element/android/features/rageshake/impl/bugreport/DefaultBugReportEntryPointTest.kt @@ -39,12 +39,11 @@ class DefaultBugReportEntryPointTest { val callback = object : BugReportEntryPoint.Callback { override fun onDone() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(BugReportFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt b/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt index 27d8fea348..28536d9412 100644 --- a/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt +++ b/features/reportroom/api/src/main/kotlin/io/element/android/features/reportroom/api/ReportRoomEntryPoint.kt @@ -13,6 +13,9 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomId fun interface ReportRoomEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, roomId: RoomId): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + roomId: RoomId, + ): Node } diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt index a97f93d79e..7babf80e39 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPoint.kt @@ -17,8 +17,11 @@ import io.element.android.libraries.matrix.api.core.RoomId @ContributesBinding(AppScope::class) class DefaultReportRoomEntryPoint : ReportRoomEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, roomId: RoomId): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + roomId: RoomId, + ): Node { return parentNode.createNode(buildContext, plugins = listOf(ReportRoomNode.Inputs(roomId))) } } diff --git a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt index 16cd8d298f..3de8a6c926 100644 --- a/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt +++ b/features/reportroom/impl/src/test/kotlin/io/element/android/features/reportroom/impl/DefaultReportRoomEntryPointTest.kt @@ -32,9 +32,11 @@ class DefaultReportRoomEntryPointTest { } ) } - val result = with(parentNode) { - entryPoint.createNode(BuildContext.root(null), A_ROOM_ID) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + roomId = A_ROOM_ID, + ) assertThat(result).isInstanceOf(ReportRoomNode::class.java) assertThat(result.plugins).contains(ReportRoomNode.Inputs(A_ROOM_ID)) } diff --git a/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt b/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt index 0129686ff0..0ff0a3ed89 100644 --- a/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt +++ b/features/reportroom/test/src/main/kotlin/io/element/android/features/reportroom/test/FakeReportRoomEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.tests.testutils.lambda.lambdaError class FakeReportRoomEntryPoint : ReportRoomEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, roomId: RoomId): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + roomId: RoomId, + ): Node { lambdaError() } } diff --git a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt index 067eed7d65..1bdde018e0 100644 --- a/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/api/src/main/kotlin/io/element/android/features/roomaliasesolver/api/RoomAliasResolverEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.matrix.api.core.RoomAlias import io.element.android.libraries.matrix.api.room.alias.ResolvedRoomAlias interface RoomAliasResolverEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onAliasResolved(data: ResolvedRoomAlias) diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt index 405317d303..b6e4fe6716 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomAliasResolverEntryPoint : RoomAliasResolverEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: RoomAliasResolverEntryPoint.Params, callback: RoomAliasResolverEntryPoint.Callback, diff --git a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt index f7cc1d57c6..6e3dbb2ba8 100644 --- a/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt +++ b/features/roomaliasresolver/impl/src/test/kotlin/io/element/android/features/roomaliasresolver/impl/DefaultRoomAliasResolverEntryPointTest.kt @@ -43,13 +43,12 @@ class DefaultRoomAliasResolverEntryPointTest { val params = RoomAliasResolverEntryPoint.Params( roomAlias = A_ROOM_ALIAS ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomAliasResolverNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index ce03aca20a..3a690ddea6 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -43,6 +43,10 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { fun startForwardEventFlow(eventId: EventId) } - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt index 4f2fb1d741..8066cc70f5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPoint.kt @@ -18,8 +18,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDetailsEntryPoint : RoomDetailsEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: RoomDetailsEntryPoint.Params, callback: RoomDetailsEntryPoint.Callback, 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 f5e1307d72..d31adaae8d 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 @@ -308,13 +308,14 @@ class RoomDetailsFlowNode( avatarUrl = navTarget.avatarUrl, ) mediaViewerEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, ) } is NavTarget.PollHistory -> { - pollHistoryEntryPoint.createNode(buildContext) + pollHistoryEntryPoint.createNode(this, buildContext) } is NavTarget.MediaGallery -> { val callback = object : MediaGalleryEntryPoint.Callback { @@ -335,6 +336,7 @@ class RoomDetailsFlowNode( } } mediaGalleryEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) @@ -365,13 +367,14 @@ class RoomDetailsFlowNode( } } return messagesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, ) } NavTarget.KnockRequestsList -> { - knockRequestsListEntryPoint.createNode(buildContext) + knockRequestsListEntryPoint.createNode(this, buildContext) } NavTarget.SecurityAndPrivacy -> { createNode(buildContext) @@ -382,6 +385,7 @@ class RoomDetailsFlowNode( verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) outgoingVerificationEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = object : OutgoingVerificationEntryPoint.Callback { @@ -400,11 +404,16 @@ class RoomDetailsFlowNode( ) } is NavTarget.ReportRoom -> { - reportRoomEntryPoint.createNode(buildContext, room.roomId) + reportRoomEntryPoint.createNode( + parentNode = this, + buildContext = buildContext, + roomId = room.roomId, + ) } is NavTarget.SelectNewOwnersWhenLeaving -> { changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, room = room, listType = ChangeRoomMemberRolesListType.SelectNewOwnersWhenLeaving, 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 c923c57f50..b2b7d46780 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 @@ -102,6 +102,7 @@ class RolesAndPermissionsFlowNode( } is NavTarget.AdminList -> { changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, room = joinedRoom, listType = ChangeRoomMemberRolesListType.Admins, @@ -109,6 +110,7 @@ class RolesAndPermissionsFlowNode( } is NavTarget.ModeratorList -> { changeRoomMemberRolesEntryPoint.createNode( + parentNode = this, buildContext = buildContext, room = joinedRoom, listType = ChangeRoomMemberRolesListType.Moderators, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index 0e542a96d6..ebe92332e8 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -69,13 +69,12 @@ class DefaultRoomDetailsEntryPointTest { val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomDetailsFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt index d290287c2c..c3cb8a199b 100644 --- a/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/api/src/main/kotlin/io/element/android/features/roomdirectory/api/RoomDirectoryEntryPoint.kt @@ -13,8 +13,11 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface RoomDirectoryEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun navigateToRoom(roomDescription: RoomDescription) diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt index 55804d3f68..48211d7f59 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPoint.kt @@ -17,8 +17,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultRoomDirectoryEntryPoint : RoomDirectoryEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: RoomDirectoryEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: RoomDirectoryEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt index 332c89b2ae..24205d6681 100644 --- a/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt +++ b/features/roomdirectory/impl/src/test/kotlin/io/element/android/features/roomdirectory/impl/DefaultRoomDirectoryEntryPointTest.kt @@ -37,12 +37,11 @@ class DefaultRoomDirectoryEntryPointTest { val callback = object : RoomDirectoryEntryPoint.Callback { override fun navigateToRoom(roomDescription: RoomDescription) = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(RoomDirectoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt index dbaa319034..cb1af18f24 100644 --- a/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt +++ b/features/securebackup/api/src/main/kotlin/io/element/android/features/securebackup/api/SecureBackupEntryPoint.kt @@ -32,8 +32,12 @@ interface SecureBackupEntryPoint : FeatureEntryPoint { data class Params(val initialElement: InitialTarget) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt index 49ea66dc79..b2c533b53b 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSecureBackupEntryPoint : SecureBackupEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: SecureBackupEntryPoint.Params, callback: SecureBackupEntryPoint.Callback, diff --git a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt index 7a4c096bfc..04d0030753 100644 --- a/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt +++ b/features/securebackup/impl/src/test/kotlin/io/element/android/features/securebackup/impl/DefaultSecureBackupEntryPointTest.kt @@ -37,13 +37,12 @@ class DefaultSecureBackupEntryPointTest { override fun onDone() = lambdaError() } val params = SecureBackupEntryPoint.Params(SecureBackupEntryPoint.InitialTarget.ResetIdentity) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(SecureBackupFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt index fadd584355..baab6d3d5c 100644 --- a/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt +++ b/features/share/api/src/main/kotlin/io/element/android/features/share/api/ShareEntryPoint.kt @@ -17,8 +17,12 @@ import io.element.android.libraries.matrix.api.core.RoomId interface ShareEntryPoint : FeatureEntryPoint { data class Params(val intent: Intent) - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone(roomIds: List) diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt index 6df01558e5..a283bf9d78 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/DefaultShareEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultShareEntryPoint : ShareEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: ShareEntryPoint.Params, callback: ShareEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ShareEntryPoint.Params, + callback: ShareEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt index b3ce268d6c..977211ca05 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/ShareNode.kt @@ -67,6 +67,7 @@ class ShareNode( } return roomSelectEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = RoomSelectEntryPoint.Params(mode = RoomSelectMode.Share), callback = callback, diff --git a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt index bdbeb37d40..e3d39cf47a 100644 --- a/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt +++ b/features/share/impl/src/test/kotlin/io/element/android/features/share/impl/DefaultShareEntryPointTest.kt @@ -45,13 +45,12 @@ class DefaultShareEntryPointTest { val params = ShareEntryPoint.Params( intent = Intent(), ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ShareNode::class.java) assertThat(result.plugins).contains(ShareNode.Inputs(params.intent)) assertThat(result.plugins).contains(callback) diff --git a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt index 442ad1ef7d..e0af9f491f 100644 --- a/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt +++ b/features/signedout/api/src/main/kotlin/io/element/android/features/signedout/api/SignedOutEntryPoint.kt @@ -17,6 +17,9 @@ interface SignedOutEntryPoint : FeatureEntryPoint { val sessionId: SessionId, ) - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + ): Node } diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt index d25dbf26ad..7026f0081b 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultSignedOutEntryPoint : SignedOutEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: SignedOutEntryPoint.Params): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: SignedOutEntryPoint.Params, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(SignedOutNode.Inputs(params.sessionId)) diff --git a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt index b6ef121c47..64c48d9a5f 100644 --- a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt +++ b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/DefaultSignedOutEntryPointTest.kt @@ -34,12 +34,11 @@ class DefaultSignedOutEntryPointTest { ) } val params = SignedOutEntryPoint.Params(A_SESSION_ID) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + ) assertThat(result).isInstanceOf(SignedOutNode::class.java) assertThat(result.plugins).contains(SignedOutNode.Inputs(params.sessionId)) } diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index d4d6f8d97b..6b5bd7f892 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.matrix.api.core.RoomId interface SpaceEntryPoint : FeatureEntryPoint { - context(parentNode: Node) fun createNode( + parentNode: Node, buildContext: BuildContext, inputs: Inputs, callback: Callback diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt index 8ceafc6ffb..4d30503b80 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.di.SessionScope @ContributesBinding(SessionScope::class) class DefaultSpaceEntryPoint : SpaceEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, inputs: SpaceEntryPoint.Inputs, callback: SpaceEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + inputs: SpaceEntryPoint.Inputs, + callback: SpaceEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(inputs, callback), diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 78931c4caf..3fd260dd4f 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -48,13 +48,12 @@ class DefaultSpaceEntryPointTest { override fun navigateToRoomDetails() = lambdaError() override fun navigateToRoomMemberList() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - inputs = nodeInputs, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + inputs = nodeInputs, + callback = callback, + ) assertThat(result).isInstanceOf(SpaceFlowNode::class.java) assertThat(result.plugins).contains(nodeInputs) assertThat(result.plugins).contains(callback) diff --git a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt index 92376974ec..0e16e05967 100644 --- a/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt +++ b/features/startchat/api/src/main/kotlin/io/element/android/features/startchat/api/StartChatEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.RoomIdOrAlias interface StartChatEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt index 043cd0df1c..fa28c882c7 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultStartChatEntryPoint : StartChatEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: StartChatEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: StartChatEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt index e3c846895c..ee30f4997c 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/StartChatFlowNode.kt @@ -80,6 +80,7 @@ class StartChatFlowNode( } } createRoomEntryPoint.createNode( + parentNode = this, buildContext = buildContext, callback = callback, ) diff --git a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt index e8644da700..1792567a87 100644 --- a/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt +++ b/features/startchat/impl/src/test/kotlin/io/element/android/features/startchat/impl/DefaultStartChatEntryPointTest.kt @@ -40,12 +40,11 @@ class DefaultStartChatEntryPointTest { override fun onRoomCreated(roomIdOrAlias: RoomIdOrAlias, serverNames: List) = lambdaError() override fun navigateToRoomDirectory() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(StartChatFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt index d9ab4ff9e5..ef3b0afeaa 100644 --- a/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt +++ b/features/userprofile/api/src/main/kotlin/io/element/android/features/userprofile/api/UserProfileEntryPoint.kt @@ -22,6 +22,10 @@ interface UserProfileEntryPoint : FeatureEntryPoint { fun navigateToRoom(roomId: RoomId) } - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt index 71353b2cb2..e69ef185c0 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultUserProfileEntryPoint : UserProfileEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: UserProfileEntryPoint.Params, callback: UserProfileEntryPoint.Callback, diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index 187fe36b87..fd019c3587 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -112,6 +112,7 @@ class UserProfileFlowNode( avatarUrl = navTarget.avatarUrl, ) mediaViewerEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = callback, @@ -123,6 +124,7 @@ class UserProfileFlowNode( verificationRequest = VerificationRequest.Outgoing.User(userId = navTarget.userId) ) outgoingVerificationEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = params, callback = object : OutgoingVerificationEntryPoint.Callback { diff --git a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt index 520f2e39af..eca2b4b382 100644 --- a/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt +++ b/features/userprofile/impl/src/test/kotlin/io/element/android/features/userprofile/impl/DefaultUserProfileEntryPointTest.kt @@ -52,13 +52,12 @@ class DefaultUserProfileEntryPointTest { val params = UserProfileEntryPoint.Params( userId = A_USER_ID, ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(UserProfileFlowNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt index c09b47e581..e6ea0ed687 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/IncomingVerificationEntryPoint.kt @@ -19,8 +19,12 @@ interface IncomingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Incoming, ) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt index 372426e0d8..f6c1f41a0b 100644 --- a/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt +++ b/features/verifysession/api/src/main/kotlin/io/element/android/features/verifysession/api/OutgoingVerificationEntryPoint.kt @@ -20,8 +20,12 @@ interface OutgoingVerificationEntryPoint : FeatureEntryPoint { val verificationRequest: VerificationRequest.Outgoing, ) : NodeInputs - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun navigateToLearnMoreAboutEncryption() diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt index 26f0597ca2..9d6d91c79a 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: IncomingVerificationEntryPoint.Params, callback: IncomingVerificationEntryPoint.Callback, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt index ab29d152f4..3328b1df1e 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPoint.kt @@ -16,8 +16,8 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: OutgoingVerificationEntryPoint.Params, callback: OutgoingVerificationEntryPoint.Callback, diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt index 3a8743dccd..437657b811 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/incoming/DefaultIncomingVerificationEntryPointTest.kt @@ -37,13 +37,12 @@ class DefaultIncomingVerificationEntryPointTest { val params = IncomingVerificationEntryPoint.Params( verificationRequest = anIncomingSessionVerificationRequest() ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(IncomingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt index 1f9213a680..80906bc86a 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/outgoing/DefaultOutgoingVerificationEntryPointTest.kt @@ -42,13 +42,12 @@ class DefaultOutgoingVerificationEntryPointTest { showDeviceVerifiedScreen = true, verificationRequest = anOutgoingSessionVerificationRequest(), ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(OutgoingVerificationNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) diff --git a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt index 754d493996..1001c636e4 100644 --- a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt +++ b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeIncomingVerificationEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.verifysession.api.IncomingVerificationEntryPo import io.element.android.tests.testutils.lambda.lambdaError class FakeIncomingVerificationEntryPoint : IncomingVerificationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: IncomingVerificationEntryPoint.Params, callback: IncomingVerificationEntryPoint.Callback, diff --git a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt index 2d5491578e..8deca450cd 100644 --- a/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt +++ b/features/verifysession/test/src/main/kotlin/io/element/android/features/verifysession/test/FakeOutgoingVerificationEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.verifysession.api.OutgoingVerificationEntryPo import io.element.android.tests.testutils.lambda.lambdaError class FakeOutgoingVerificationEntryPoint : OutgoingVerificationEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: OutgoingVerificationEntryPoint.Params, callback: OutgoingVerificationEntryPoint.Callback, diff --git a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt index 97f6ffbf9e..9d756a4529 100644 --- a/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt +++ b/features/viewfolder/api/src/main/kotlin/io/element/android/features/viewfolder/api/ViewFolderEntryPoint.kt @@ -17,8 +17,12 @@ interface ViewFolderEntryPoint : FeatureEntryPoint { val rootPath: String, ) - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt index 8999b853a8..4261c17e72 100644 --- a/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt +++ b/features/viewfolder/impl/src/main/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPoint.kt @@ -17,8 +17,12 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultViewFolderEntryPoint : ViewFolderEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: ViewFolderEntryPoint.Params, + callback: ViewFolderEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt index ae0f4b9f2e..a8e643e1f5 100644 --- a/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt +++ b/features/viewfolder/impl/src/test/kotlin/io/element/android/features/viewfolder/impl/DefaultViewFolderEntryPointTest.kt @@ -40,13 +40,12 @@ class DefaultViewFolderEntryPointTest { val params = ViewFolderEntryPoint.Params( rootPath = "path", ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(ViewFolderFlowNode::class.java) assertThat(result.plugins).contains(ViewFolderFlowNode.Inputs(params.rootPath)) assertThat(result.plugins).contains(callback) diff --git a/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt b/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt index 6b0ba721ad..da908bd925 100644 --- a/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt +++ b/features/viewfolder/test/src/main/kotlin/io/element/android/features/viewfolder/test/FakeViewFolderEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.features.viewfolder.api.ViewFolderEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeViewFolderEntryPoint : ViewFolderEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: ViewFolderEntryPoint.Params, callback: ViewFolderEntryPoint.Callback, diff --git a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt index bb2de92662..c68ec5d95b 100644 --- a/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt +++ b/libraries/accountselect/api/src/main/kotlin/io/element/android/libraries/accountselect/api/AccountSelectEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.SessionId interface AccountSelectEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onAccountSelected(sessionId: SessionId) diff --git a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt index 9ecaaf5787..5b6381ce13 100644 --- a/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt +++ b/libraries/accountselect/impl/src/main/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.architecture.createNode @ContributesBinding(AppScope::class) class DefaultAccountSelectEntryPoint : AccountSelectEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: AccountSelectEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: AccountSelectEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt index ae3ceb29c7..b36fcb5ab8 100644 --- a/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt +++ b/libraries/accountselect/impl/src/test/kotlin/io/element/android/libraries/accountselect/impl/DefaultAccountSelectEntryPointTest.kt @@ -35,12 +35,11 @@ class DefaultAccountSelectEntryPointTest { override fun onAccountSelected(sessionId: SessionId) = lambdaError() override fun onCancel() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(AccountSelectNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt index c8b0a00213..d5a932b705 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/FeatureEntryPoint.kt @@ -19,6 +19,5 @@ interface FeatureEntryPoint * Can be used when the feature only exposes a simple node without the need of plugins. */ fun interface SimpleFeatureEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext): Node + fun createNode(parentNode: Node, buildContext: BuildContext): Node } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index b7257e4ed5..dd71f302d4 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -14,8 +14,11 @@ import io.element.android.libraries.architecture.FeatureEntryPoint import io.element.android.libraries.matrix.api.core.EventId interface MediaGalleryEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onBackClick() diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index a926deb015..201573dc70 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -19,8 +19,12 @@ import io.element.android.libraries.matrix.api.timeline.Timeline import kotlinx.parcelize.Parcelize interface MediaViewerEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node fun createParamsForAvatar(filename: String, avatarUrl: String): Params diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt index 78a15c1997..60935a204c 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPoint.kt @@ -17,8 +17,11 @@ import io.element.android.libraries.mediaviewer.impl.gallery.root.MediaGalleryFl @ContributesBinding(AppScope::class) class DefaultMediaGalleryEntryPoint : MediaGalleryEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: MediaGalleryEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf(callback), diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt index a1d11811c4..7d683bf3df 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPoint.kt @@ -48,8 +48,8 @@ class DefaultMediaViewerEntryPoint : MediaViewerEntryPoint { ) } - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index 8b6ec84eb5..cc71b49dac 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -125,6 +125,7 @@ class MediaGalleryFlowNode( } } mediaViewerEntryPoint.createNode( + parentNode = this, buildContext = buildContext, params = MediaViewerEntryPoint.Params( mode = navTarget.mode, diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index a5dce8f4ec..189644ebd5 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -42,12 +42,11 @@ class DefaultMediaGalleryEntryPointTest { override fun viewInTimeline(eventId: EventId) = lambdaError() override fun forward(eventId: EventId) = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(MediaGalleryFlowNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index 2929badf82..b53fe7913c 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -75,13 +75,12 @@ class DefaultMediaViewerEntryPointTest { override fun forwardEvent(eventId: EventId) = lambdaError() } val params = createMediaViewerEntryPointParams() - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains(params) assertThat(result.plugins).contains(callback) @@ -125,13 +124,12 @@ class DefaultMediaViewerEntryPointTest { filename = "fn", avatarUrl = "avatarUrl", ) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(MediaViewerNode::class.java) assertThat(result.plugins).contains( MediaViewerEntryPoint.Params( diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt index 341bf8a65f..9ba6bfee62 100644 --- a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaGalleryEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.libraries.mediaviewer.api.MediaGalleryEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeMediaGalleryEntryPoint : MediaGalleryEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, callback: MediaGalleryEntryPoint.Callback, ): Node = lambdaError() diff --git a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt index 52e37e84b9..9890169579 100644 --- a/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/test/src/main/kotlin/io/element/android/libraries/mediaviewer/test/FakeMediaViewerEntryPoint.kt @@ -15,8 +15,8 @@ import io.element.android.tests.testutils.lambda.lambdaError class FakeMediaViewerEntryPoint : MediaViewerEntryPoint { override fun createParamsForAvatar(filename: String, avatarUrl: String) = lambdaError() - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: MediaViewerEntryPoint.Params, callback: MediaViewerEntryPoint.Callback, diff --git a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt index 08aa8a2d34..1da6c4dd4c 100644 --- a/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt +++ b/libraries/roomselect/api/src/main/kotlin/io/element/android/libraries/roomselect/api/RoomSelectEntryPoint.kt @@ -18,8 +18,12 @@ interface RoomSelectEntryPoint : FeatureEntryPoint { val mode: RoomSelectMode, ) - context(parentNode: Node) - fun createNode(buildContext: BuildContext, params: Params, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: Params, + callback: Callback, + ): Node interface Callback : Plugin { fun onRoomSelected(roomIds: List) diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt index 15da921a49..94488ec1c4 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPoint.kt @@ -16,8 +16,12 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint @ContributesBinding(SessionScope::class) class DefaultRoomSelectEntryPoint : RoomSelectEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + params: RoomSelectEntryPoint.Params, + callback: RoomSelectEntryPoint.Callback, + ): Node { return parentNode.createNode( buildContext = buildContext, plugins = listOf( diff --git a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt index 6bb68b9707..0bd16f77b0 100644 --- a/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt +++ b/libraries/roomselect/impl/src/test/kotlin/io/element/android/libraries/roomselect/impl/DefaultRoomSelectEntryPointTest.kt @@ -42,13 +42,12 @@ class DefaultRoomSelectEntryPointTest { override fun onCancel() = lambdaError() } val params = RoomSelectEntryPoint.Params(testMode) - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - params = params, - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + params = params, + callback = callback, + ) assertThat(result).isInstanceOf(RoomSelectNode::class.java) assertThat(result.plugins).contains(RoomSelectNode.Inputs(params.mode)) assertThat(result.plugins).contains(callback) diff --git a/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt b/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt index 3b0ea4ac53..5c7e4d11d8 100644 --- a/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt +++ b/libraries/roomselect/test/src/main/kotlin/io/element/android/libraries/roomselect/test/FakeRoomSelectEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.libraries.roomselect.api.RoomSelectEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakeRoomSelectEntryPoint : RoomSelectEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, params: RoomSelectEntryPoint.Params, callback: RoomSelectEntryPoint.Callback, diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt index ae32ace777..7889ba4da3 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/NotificationTroubleShootEntryPoint.kt @@ -13,8 +13,11 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface NotificationTroubleShootEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt index ba11199330..bef39ecdd4 100644 --- a/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/api/src/main/kotlin/io/element/android/libraries/troubleshoot/api/PushHistoryEntryPoint.kt @@ -15,8 +15,11 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomId interface PushHistoryEntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { fun onDone() diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt index 7404aed8ed..285f08b65a 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEnt @ContributesBinding(AppScope::class) class DefaultNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: NotificationTroubleShootEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt index 8477d39714..ca0cccc82c 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPoint.kt @@ -16,8 +16,11 @@ import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint @ContributesBinding(AppScope::class) class DefaultPushHistoryEntryPoint : PushHistoryEntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback): Node { + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: PushHistoryEntryPoint.Callback, + ): Node { return parentNode.createNode(buildContext, listOf(callback)) } } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt index cf4c62b9b4..1eef24fbcb 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/DefaultNotificationTroubleShootEntryPointTest.kt @@ -36,12 +36,11 @@ class DefaultNotificationTroubleShootEntryPointTest { override fun onDone() = lambdaError() override fun navigateToBlockedUsers() = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(TroubleshootNotificationsNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt index 271cd8d8fd..b963183ecc 100644 --- a/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt +++ b/libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/DefaultPushHistoryEntryPointTest.kt @@ -48,12 +48,11 @@ class DefaultPushHistoryEntryPointTest { override fun onDone() = lambdaError() override fun navigateToEvent(roomId: RoomId, eventId: EventId) = lambdaError() } - val result = with(parentNode) { - entryPoint.createNode( - buildContext = BuildContext.root(null), - callback = callback, - ) - } + val result = entryPoint.createNode( + parentNode = parentNode, + buildContext = BuildContext.root(null), + callback = callback, + ) assertThat(result).isInstanceOf(PushHistoryNode::class.java) assertThat(result.plugins).contains(callback) } diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt index 84a79382e2..38ba5bc32f 100644 --- a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakeNotificationTroubleShootEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.libraries.troubleshoot.api.NotificationTroubleShootEnt import io.element.android.tests.testutils.lambda.lambdaError class FakeNotificationTroubleShootEntryPoint : NotificationTroubleShootEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, callback: NotificationTroubleShootEntryPoint.Callback, ): Node = lambdaError() diff --git a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt index 7a4e96b839..c87fe43575 100644 --- a/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt +++ b/libraries/troubleshoot/test/src/main/kotlin/io/element/android/libraries/troubleshoot/test/FakePushHistoryEntryPoint.kt @@ -13,8 +13,8 @@ import io.element.android.libraries.troubleshoot.api.PushHistoryEntryPoint import io.element.android.tests.testutils.lambda.lambdaError class FakePushHistoryEntryPoint : PushHistoryEntryPoint { - context(parentNode: Node) override fun createNode( + parentNode: Node, buildContext: BuildContext, callback: PushHistoryEntryPoint.Callback, ): Node = lambdaError() diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt index af6cf59c8e..c4357b2d3c 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point API.kt @@ -6,8 +6,11 @@ import com.bumble.appyx.core.plugin.Plugin import io.element.android.libraries.architecture.FeatureEntryPoint interface ${FEATURE_NAME}EntryPoint : FeatureEntryPoint { - context(parentNode: Node) - fun createNode(buildContext: BuildContext, callback: Callback): Node + fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: Callback, + ): Node interface Callback : Plugin { // Add your callbacks diff --git a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt index eca83b787f..3642f8e821 100644 --- a/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt +++ b/tools/templates/files/fileTemplates/Template Module Feature Entry Point Flow Impl.kt @@ -10,8 +10,12 @@ import dev.zacsweers.metro.AppScope @ContributesBinding(AppScope::class) class Default${FEATURE_NAME}EntryPoint() : ${FEATURE_NAME}EntryPoint { - context(parentNode: Node) - override fun createNode(buildContext: BuildContext, callback: ${FEATURE_NAME}EntryPoint.Callback): Node { + + override fun createNode( + parentNode: Node, + buildContext: BuildContext, + callback: ${FEATURE_NAME}EntryPoint.Callback, + ): Node { return parentNode.createNode<${FEATURE_NAME}FlowNode>(buildContext, listOf(callback)) } } From aae384bba898967d40952ad35cb9e06c60f04b0c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:45:27 +0000 Subject: [PATCH 279/898] fix(deps): update dependency io.element.android:element-call-embedded to v0.16.1 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 08ec71915c..54bc1660f2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -229,7 +229,7 @@ sigpwned_emoji4j = "com.sigpwned:emoji4j-core:16.0.0" metro_runtime = { module = "dev.zacsweers.metro:runtime", version.ref = "metro" } # Element Call -element_call_embedded = "io.element.android:element-call-embedded:0.16.0" +element_call_embedded = "io.element.android:element-call-embedded:0.16.1" # Auto services google_autoservice = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" } From f7e28346d6e60f7f502ef17407ef9c9311ce1954 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:18:26 +0000 Subject: [PATCH 280/898] chore(deps): update danger/danger-js action to v13.0.5 (#5652) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/danger.yml | 2 +- .github/workflows/quality.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 0868b0729f..e4300b3321 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -20,7 +20,7 @@ jobs: - run: | npm install --save-dev @babel/plugin-transform-flow-strip-types - name: Danger - uses: danger/danger-js@bdccecb77e0144055fbaea9224f10cf8b1229b68 # 13.0.4 + uses: danger/danger-js@67ed2c1f42fd2fc198cc3c14b43c8f83351f4fe9 # 13.0.5 with: args: "--dangerfile ./tools/danger/dangerfile.js" env: diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 5277cbdf05..7190fffe77 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -326,7 +326,7 @@ jobs: yarn add danger-plugin-lint-report --dev - name: Danger lint if: always() - uses: danger/danger-js@bdccecb77e0144055fbaea9224f10cf8b1229b68 # 13.0.4 + uses: danger/danger-js@67ed2c1f42fd2fc198cc3c14b43c8f83351f4fe9 # 13.0.5 with: args: "--dangerfile ./tools/danger/dangerfile-lint.js" env: From c4b8227c58ea1ff1269eaefb9560f7007c33c2e3 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 30 Oct 2025 22:15:08 +0100 Subject: [PATCH 281/898] feature(space) : starts space settings screen --- .../impl/settings/SpaceSettingsEvents.kt | 10 + .../space/impl/settings/SpaceSettingsNode.kt | 58 +++++ .../impl/settings/SpaceSettingsPresenter.kt | 38 ++++ .../space/impl/settings/SpaceSettingsState.kt | 23 ++ .../settings/SpaceSettingsStateProvider.kt | 44 ++++ .../space/impl/settings/SpaceSettingsView.kt | 215 ++++++++++++++++++ 6 files changed, 388 insertions(+) create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsEvents.kt create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt create mode 100644 features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsEvents.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsEvents.kt new file mode 100644 index 0000000000..a6fe90ade6 --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsEvents.kt @@ -0,0 +1,10 @@ +/* + * 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.space.impl.settings + +sealed interface SpaceSettingsEvents diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt new file mode 100644 index 0000000000..77ae924f94 --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt @@ -0,0 +1,58 @@ +/* + * 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.space.impl.settings + +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 +import com.bumble.appyx.core.plugin.Plugin +import com.bumble.appyx.core.plugin.plugins +import dev.zacsweers.metro.Assisted +import dev.zacsweers.metro.AssistedInject +import io.element.android.annotations.ContributesNode +import io.element.android.features.space.impl.di.SpaceFlowScope +import io.element.android.libraries.architecture.appyx.launchMolecule + +@ContributesNode(SpaceFlowScope::class) +@AssistedInject +class SpaceSettingsNode( + @Assisted buildContext: BuildContext, + @Assisted plugins: List, + private val presenter: SpaceSettingsPresenter, +) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun onBackClick() + + fun onSpaceInfoClick() + fun onMembersClick() + fun onRolesAndPermissionsClick() + fun onSecurityAndPrivacyClick() + fun onLeaveSpaceClick() + } + + private val callback = plugins().single() + private val stateFlow = launchMolecule { presenter.present() } + + @Composable + override fun View(modifier: Modifier) { + val state by stateFlow.collectAsState() + SpaceSettingsView( + state = state, + modifier = modifier, + onSpaceInfoClick = callback::onSpaceInfoClick, + onBackClick = callback::onBackClick, + onMembersClick = callback::onMembersClick, + onRolesAndPermissionsClick = callback::onRolesAndPermissionsClick, + onSecurityAndPrivacyClick = callback::onSecurityAndPrivacyClick, + onLeaveSpaceClick = callback::onLeaveSpaceClick, + ) + } +} diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt new file mode 100644 index 0000000000..48cb9f0b3b --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt @@ -0,0 +1,38 @@ +/* + * 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.space.impl.settings + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import dev.zacsweers.metro.Inject +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.libraries.matrix.ui.room.isOwnUserAdmin + +@Inject +class SpaceSettingsPresenter( + private val room: JoinedRoom, +) : Presenter { + @Composable + override fun present(): SpaceSettingsState { + val roomInfo by room.roomInfoFlow.collectAsState() + val isUserAdmin = room.isOwnUserAdmin() + return SpaceSettingsState( + roomId = room.roomId, + name = roomInfo.name.orEmpty(), + canonicalAlias = roomInfo.canonicalAlias, + avatarUrl = roomInfo.avatarUrl, + memberCount = roomInfo.activeMembersCount, + showRolesAndPermissions = isUserAdmin, + showSecurityAndPrivacy = isUserAdmin, + isTombstoned = roomInfo.successorRoom != null, + eventSink = {}, + ) + } +} diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt new file mode 100644 index 0000000000..b3d3353f06 --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.space.impl.settings + +import io.element.android.libraries.matrix.api.core.RoomAlias +import io.element.android.libraries.matrix.api.core.RoomId + +data class SpaceSettingsState( + val roomId: RoomId, + val name: String, + val canonicalAlias: RoomAlias?, + val avatarUrl: String?, + val isTombstoned: Boolean, + val memberCount: Long, + val showRolesAndPermissions: Boolean, + val showSecurityAndPrivacy: Boolean, + val eventSink: (SpaceSettingsEvents) -> Unit +) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt new file mode 100644 index 0000000000..e248c1798a --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt @@ -0,0 +1,44 @@ +/* + * 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.space.impl.settings + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.matrix.api.core.RoomAlias +import io.element.android.libraries.matrix.api.core.RoomId + +open class SpaceSettingsStateProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aSpaceSettingsState(), + aSpaceSettingsState(alias = null), + aSpaceSettingsState(showSecurityAndPrivacy = true), + aSpaceSettingsState(showRolesAndPermissions = true), + ) +} + +fun aSpaceSettingsState( + roomId: RoomId = RoomId("!aRoomId:element.io"), + name: String = "Space name", + alias: RoomAlias? = RoomAlias("#spacename:element.io"), + avatarUrl: String? = null, + memberCount: Long = 100, + isTombstoned: Boolean = false, + showRolesAndPermissions: Boolean = false, + showSecurityAndPrivacy: Boolean = false, + eventSink: (SpaceSettingsEvents) -> Unit = {}, +) = SpaceSettingsState( + roomId = roomId, + name = name, + canonicalAlias = alias, + avatarUrl = avatarUrl, + isTombstoned = isTombstoned, + memberCount = memberCount, + showRolesAndPermissions = showRolesAndPermissions, + showSecurityAndPrivacy = showSecurityAndPrivacy, + eventSink = eventSink, +) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt new file mode 100644 index 0000000000..eaefcf59d5 --- /dev/null +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt @@ -0,0 +1,215 @@ +/* + * 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.space.impl.settings + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp +import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.libraries.designsystem.components.avatar.Avatar +import io.element.android.libraries.designsystem.components.avatar.AvatarData +import io.element.android.libraries.designsystem.components.avatar.AvatarSize +import io.element.android.libraries.designsystem.components.avatar.AvatarType +import io.element.android.libraries.designsystem.components.button.BackButton +import io.element.android.libraries.designsystem.components.list.ListItemContent +import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.IconSource +import io.element.android.libraries.designsystem.theme.components.ListItem +import io.element.android.libraries.designsystem.theme.components.ListItemStyle +import io.element.android.libraries.designsystem.theme.components.Scaffold +import io.element.android.libraries.designsystem.theme.components.Text +import io.element.android.libraries.designsystem.theme.components.TopAppBar +import io.element.android.libraries.ui.strings.CommonStrings + +@Composable +fun SpaceSettingsView( + state: SpaceSettingsState, + onBackClick: () -> Unit, + onSpaceInfoClick: ()->Unit, + onMembersClick: () -> Unit, + onRolesAndPermissionsClick: () -> Unit, + onSecurityAndPrivacyClick: () -> Unit, + onLeaveSpaceClick: () -> Unit, + modifier: Modifier = Modifier, +) { + Scaffold( + modifier = modifier, + topBar = { + SpaceSettingsTopBar(onBackClick = onBackClick) + }, + ) { padding -> + Column( + modifier = Modifier + .padding(padding) + .verticalScroll(rememberScrollState()) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable(onClick = onSpaceInfoClick) + .padding(16.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Avatar( + avatarData = AvatarData(state.roomId.value, state.name, state.avatarUrl, AvatarSize.SpaceListItem), + avatarType = AvatarType.Space( + isTombstoned = state.isTombstoned, + ), + contentDescription = state.avatarUrl?.let { stringResource(CommonStrings.a11y_room_avatar) }, + ) + Spacer(Modifier.width(16.dp)) + Column { + Text( + text = state.name, + style = ElementTheme.typography.fontHeadingMdRegular, + color = ElementTheme.colors.textPrimary, + ) + if (state.canonicalAlias != null) { + Text( + text = state.canonicalAlias.value, + style = ElementTheme.typography.fontBodyMdRegular, + color = ElementTheme.colors.textSecondary, + ) + } + } + } + Section(isVisible = state.showSecurityAndPrivacy) { + SecurityAndPrivacyItem( + onClick = onSecurityAndPrivacyClick + ) + } + Section { + MembersItem(state.memberCount, onClick = onMembersClick) + if (state.showRolesAndPermissions) { + RolesAndPermissionsItem(onClick = onRolesAndPermissionsClick) + } + } + Section { + LeaveSpaceItem( + onClick = onLeaveSpaceClick + ) + } + + } + } +} + +@Composable +private fun ColumnScope.Section( + modifier: Modifier = Modifier, + isVisible: Boolean = true, + content: @Composable ColumnScope.() -> Unit, +) { + if (isVisible) { + PreferenceCategory(content = content, modifier = modifier) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun SpaceSettingsTopBar( + onBackClick: () -> Unit, + modifier: Modifier = Modifier, +) { + TopAppBar( + titleStr = stringResource(CommonStrings.common_settings), + navigationIcon = { BackButton(onClick = onBackClick) }, + modifier = modifier, + ) +} + +@Composable +private fun SecurityAndPrivacyItem( + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + ListItem( + headlineContent = { Text("Security & privacy") }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Lock())), + onClick = onClick, + modifier = modifier, + ) +} + +@Composable +private fun MembersItem( + memberCount: Long, + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + ListItem( + headlineContent = { Text(stringResource(CommonStrings.common_people)) }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.User())), + trailingContent = ListItemContent.Text(memberCount.toString()), + onClick = onClick, + modifier = modifier, + ) +} + +@Composable +private fun RolesAndPermissionsItem( + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + ListItem( + headlineContent = { Text("Roles & permissions") }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Admin())), + onClick = onClick, + modifier = modifier, + ) +} + +@Composable +private fun LeaveSpaceItem( + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + ListItem( + headlineContent = { + Text(stringResource(CommonStrings.action_leave_space)) + }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Leave())), + style = ListItemStyle.Destructive, + onClick = onClick, + modifier = modifier, + ) +} + +@PreviewsDayNight +@Composable +internal fun SpaceSettingsViewPreview( + @PreviewParameter(SpaceSettingsStateProvider::class) state: SpaceSettingsState +) = ElementPreview { + SpaceSettingsView( + state = state, + onBackClick = {}, + onSpaceInfoClick = {}, + onMembersClick = {}, + onRolesAndPermissionsClick = {}, + onSecurityAndPrivacyClick = {}, + onLeaveSpaceClick = {}, + modifier = Modifier, + ) +} From 9d3b7de0d8ff8b7a54a472a0c22d5cd45a2b65a2 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 30 Oct 2025 22:15:30 +0100 Subject: [PATCH 282/898] feature(space) : remove dead code # Conflicts: # appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt --- .../io/element/android/appnav/room/RoomFlowNode.kt | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt index a41eb8d777..3189384f53 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/RoomFlowNode.kt @@ -30,7 +30,6 @@ import io.element.android.features.joinroom.api.JoinRoomEntryPoint import io.element.android.features.roomaliasesolver.api.RoomAliasResolverEntryPoint import io.element.android.features.roomaliasesolver.api.RoomAliasResolverEntryPoint.Params import io.element.android.features.roomdirectory.api.RoomDescription -import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.NodeInputs @@ -70,7 +69,6 @@ class RoomFlowNode( private val joinRoomEntryPoint: JoinRoomEntryPoint, private val roomAliasResolverEntryPoint: RoomAliasResolverEntryPoint, private val membershipObserver: RoomMembershipObserver, - private val spaceEntryPoint: SpaceEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = NavTarget.Loading, @@ -105,9 +103,6 @@ class RoomFlowNode( @Parcelize data class JoinedRoom(val roomId: RoomId) : NavTarget - - @Parcelize - data class JoinedSpace(val spaceId: RoomId) : NavTarget } override fun onBuilt() { @@ -209,15 +204,6 @@ class RoomFlowNode( ) createNode(buildContext, plugins = listOf(inputs) + roomFlowNodeCallback) } - is NavTarget.JoinedSpace -> { - val spaceCallback = plugins().single() - spaceEntryPoint.createNode( - parentNode = this, - buildContext = buildContext, - inputs = SpaceEntryPoint.Inputs(roomId = navTarget.spaceId), - callback = spaceCallback, - ) - } } } From 5f7fda240279894de3a692778f576d0af223004f Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 30 Oct 2025 22:16:20 +0100 Subject: [PATCH 283/898] feature(space) : plumb up space settings screen --- .../room/joined/JoinedRoomLoadedFlowNode.kt | 4 -- .../features/space/api/SpaceEntryPoint.kt | 1 - .../features/space/impl/SpaceFlowNode.kt | 47 ++++++++++++++++--- .../space/impl/leave/LeaveSpaceNode.kt | 7 ++- .../features/space/impl/root/SpaceNode.kt | 4 +- 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 16eaff89b1..d6e3e13e89 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -195,10 +195,6 @@ class JoinedRoomLoadedFlowNode( callback.navigateToRoom(roomId, viaParameters) } - override fun navigateToRoomDetails() { - backstack.push(NavTarget.RoomDetails) - } - override fun navigateToRoomMemberList() { backstack.push(NavTarget.RoomMemberList) } diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index 6b5bd7f892..e05a7d1e8b 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -28,7 +28,6 @@ interface SpaceEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun navigateToRoom(roomId: RoomId, viaParameters: List) - fun navigateToRoomDetails() fun navigateToRoomMemberList() } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 1ef496d319..6684d07952 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -18,6 +18,7 @@ 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 dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject @@ -26,14 +27,15 @@ import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.features.space.impl.di.SpaceFlowGraph import io.element.android.features.space.impl.leave.LeaveSpaceNode import io.element.android.features.space.impl.root.SpaceNode +import io.element.android.features.space.impl.settings.SpaceSettingsNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.callback import io.element.android.libraries.architecture.createNode -import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.DependencyInjectionGraphOwner import io.element.android.libraries.di.RoomScope 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.spaces.SpaceService import kotlinx.parcelize.Parcelize @@ -42,6 +44,7 @@ import kotlinx.parcelize.Parcelize class SpaceFlowNode( @Assisted val buildContext: BuildContext, @Assisted plugins: List, + room: BaseRoom, spaceService: SpaceService, graphFactory: SpaceFlowGraph.Factory, ) : BaseFlowNode( @@ -52,15 +55,17 @@ class SpaceFlowNode( buildContext = buildContext, plugins = plugins, ), DependencyInjectionGraphOwner { - private val inputs: SpaceEntryPoint.Inputs = inputs() private val callback: SpaceEntryPoint.Callback = callback() - private val spaceRoomList = spaceService.spaceRoomList(inputs.roomId) + private val spaceRoomList = spaceService.spaceRoomList(room.roomId) override val graph = graphFactory.create(spaceRoomList) sealed interface NavTarget : Parcelable { @Parcelize data object Root : NavTarget + @Parcelize + data object Settings : NavTarget + @Parcelize data object Leave : NavTarget } @@ -77,7 +82,7 @@ class SpaceFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Leave -> { - createNode(buildContext, listOf(inputs)) + createNode(buildContext) } NavTarget.Root -> { val callback = object : SpaceNode.Callback { @@ -85,8 +90,8 @@ class SpaceFlowNode( callback.navigateToRoom(roomId, viaParameters) } - override fun navigateToRoomDetails() { - callback.navigateToRoomDetails() + override fun navigateToSpaceSettings() { + backstack.push(NavTarget.Settings) } override fun navigateToRoomMemberList() { @@ -97,7 +102,35 @@ class SpaceFlowNode( backstack.push(NavTarget.Leave) } } - createNode(buildContext, listOf(inputs, callback)) + createNode(buildContext, listOf(callback)) + } + NavTarget.Settings -> { + val callback = object : SpaceSettingsNode.Callback { + override fun onBackClick() { + backstack.pop() + } + + override fun onSpaceInfoClick() { + //TODO + } + + override fun onMembersClick() { + callback.navigateToRoomMemberList() + } + + override fun onRolesAndPermissionsClick() { + //TODO + } + + override fun onSecurityAndPrivacyClick() { + //TODO + } + + override fun onLeaveSpaceClick() { + backstack.push(NavTarget.Leave) + } + } + createNode(buildContext, listOf(callback)) } } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt index c60bddea1d..215f06bca5 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt @@ -16,10 +16,9 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.features.space.impl.di.SpaceFlowScope -import io.element.android.libraries.architecture.inputs import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.room.JoinedRoom @ContributesNode(SpaceFlowScope::class) @AssistedInject @@ -27,10 +26,10 @@ class LeaveSpaceNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, matrixClient: MatrixClient, + room: JoinedRoom, presenterFactory: LeaveSpacePresenter.Factory, ) : Node(buildContext, plugins = plugins) { - private val inputs: SpaceEntryPoint.Inputs = inputs() - private val leaveSpaceHandle = matrixClient.spaceService.getLeaveSpaceHandle(inputs.roomId) + private val leaveSpaceHandle = matrixClient.spaceService.getLeaveSpaceHandle(room.roomId) private val presenter: LeaveSpacePresenter = presenterFactory.create(leaveSpaceHandle) override fun onBuilt() { diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 174fa71ee8..c0271782b4 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -42,7 +42,7 @@ class SpaceNode( ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { fun navigateToRoom(roomId: RoomId, viaParameters: List) - fun navigateToRoomDetails() + fun navigateToSpaceSettings() fun navigateToRoomMemberList() fun startLeaveSpaceFlow() } @@ -80,7 +80,7 @@ class SpaceNode( callback.navigateToRoom(spaceRoom.roomId, spaceRoom.via) }, onDetailsClick = { - callback.navigateToRoomDetails() + callback.navigateToSpaceSettings() }, onShareSpace = { onShareRoom(context) From 4c9b6100a76f723f743114d34f76d5a2ffb55c20 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 31 Oct 2025 14:33:11 +0100 Subject: [PATCH 284/898] feature(space) : iterate on SpaceSettings --- .../impl/settings/SpaceSettingsPresenter.kt | 1 - .../space/impl/settings/SpaceSettingsState.kt | 1 - .../settings/SpaceSettingsStateProvider.kt | 2 - .../space/impl/settings/SpaceSettingsView.kt | 92 +++++++++++-------- 4 files changed, 54 insertions(+), 42 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt index 48cb9f0b3b..6e89a0ba8d 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsPresenter.kt @@ -31,7 +31,6 @@ class SpaceSettingsPresenter( memberCount = roomInfo.activeMembersCount, showRolesAndPermissions = isUserAdmin, showSecurityAndPrivacy = isUserAdmin, - isTombstoned = roomInfo.successorRoom != null, eventSink = {}, ) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt index b3d3353f06..95b3615f63 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsState.kt @@ -15,7 +15,6 @@ data class SpaceSettingsState( val name: String, val canonicalAlias: RoomAlias?, val avatarUrl: String?, - val isTombstoned: Boolean, val memberCount: Long, val showRolesAndPermissions: Boolean, val showSecurityAndPrivacy: Boolean, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt index e248c1798a..db1b336653 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsStateProvider.kt @@ -27,7 +27,6 @@ fun aSpaceSettingsState( alias: RoomAlias? = RoomAlias("#spacename:element.io"), avatarUrl: String? = null, memberCount: Long = 100, - isTombstoned: Boolean = false, showRolesAndPermissions: Boolean = false, showSecurityAndPrivacy: Boolean = false, eventSink: (SpaceSettingsEvents) -> Unit = {}, @@ -36,7 +35,6 @@ fun aSpaceSettingsState( name = name, canonicalAlias = alias, avatarUrl = avatarUrl, - isTombstoned = isTombstoned, memberCount = memberCount, showRolesAndPermissions = showRolesAndPermissions, showSecurityAndPrivacy = showSecurityAndPrivacy, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt index eaefcf59d5..1775b1e5b1 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt @@ -41,13 +41,14 @@ import io.element.android.libraries.designsystem.theme.components.ListItemStyle import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TopAppBar +import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.ui.strings.CommonStrings @Composable fun SpaceSettingsView( state: SpaceSettingsState, onBackClick: () -> Unit, - onSpaceInfoClick: ()->Unit, + onSpaceInfoClick: () -> Unit, onMembersClick: () -> Unit, onRolesAndPermissionsClick: () -> Unit, onSecurityAndPrivacyClick: () -> Unit, @@ -65,59 +66,74 @@ fun SpaceSettingsView( .padding(padding) .verticalScroll(rememberScrollState()) ) { - Row( - modifier = Modifier - .fillMaxWidth() - .clickable(onClick = onSpaceInfoClick) - .padding(16.dp), - verticalAlignment = Alignment.CenterVertically, - ) { - Avatar( - avatarData = AvatarData(state.roomId.value, state.name, state.avatarUrl, AvatarSize.SpaceListItem), - avatarType = AvatarType.Space( - isTombstoned = state.isTombstoned, - ), - contentDescription = state.avatarUrl?.let { stringResource(CommonStrings.a11y_room_avatar) }, - ) - Spacer(Modifier.width(16.dp)) - Column { - Text( - text = state.name, - style = ElementTheme.typography.fontHeadingMdRegular, - color = ElementTheme.colors.textPrimary, - ) - if (state.canonicalAlias != null) { - Text( - text = state.canonicalAlias.value, - style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.colors.textSecondary, - ) - } - } - } - Section(isVisible = state.showSecurityAndPrivacy) { + SpaceInfoSection( + roomId = state.roomId, + name = state.name, + avatarUrl = state.avatarUrl, + canonicalAlias = state.canonicalAlias?.value, + onSpaceInfoClick = onSpaceInfoClick, + ) + Section(isVisible = state.showSecurityAndPrivacy, content = { SecurityAndPrivacyItem( onClick = onSecurityAndPrivacyClick ) - } - Section { + }) + Section(content = { MembersItem(state.memberCount, onClick = onMembersClick) if (state.showRolesAndPermissions) { RolesAndPermissionsItem(onClick = onRolesAndPermissionsClick) } - } - Section { + }) + Section(content = { LeaveSpaceItem( onClick = onLeaveSpaceClick ) - } + }) } } } @Composable -private fun ColumnScope.Section( +private fun SpaceInfoSection( + roomId: RoomId, + name: String, + avatarUrl: String?, + canonicalAlias: String?, + onSpaceInfoClick: () -> Unit, +) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable(onClick = onSpaceInfoClick) + .padding(16.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Avatar( + avatarData = AvatarData(roomId.value, name, avatarUrl, AvatarSize.SpaceListItem), + avatarType = AvatarType.Space(), + contentDescription = avatarUrl?.let { stringResource(CommonStrings.a11y_avatar) }, + ) + Spacer(Modifier.width(16.dp)) + Column { + Text( + text = name, + style = ElementTheme.typography.fontHeadingMdRegular, + color = ElementTheme.colors.textPrimary, + ) + if (canonicalAlias != null) { + Text( + text = canonicalAlias, + style = ElementTheme.typography.fontBodyMdRegular, + color = ElementTheme.colors.textSecondary, + ) + } + } + } +} + +@Composable +private fun Section( modifier: Modifier = Modifier, isVisible: Boolean = true, content: @Composable ColumnScope.() -> Unit, From 2d8f491cfddcd22e4ee574dea369b9f7381d4e55 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 31 Oct 2025 14:55:07 +0100 Subject: [PATCH 285/898] feature(space) : update some strings --- .../impl/src/main/res/values/localazy.xml | 2 +- features/roomdetails/impl/src/main/res/values/localazy.xml | 2 +- .../impl/src/main/res/values/localazy.xml | 2 ++ .../io/element/android/features/space/impl/root/SpaceView.kt | 2 +- .../features/space/impl/settings/SpaceSettingsView.kt | 5 +++-- features/space/impl/src/main/res/values/localazy.xml | 3 +++ libraries/ui-strings/src/main/res/values/localazy.xml | 2 +- tools/localazy/config.json | 3 ++- 8 files changed, 14 insertions(+), 7 deletions(-) diff --git a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml index 456426726a..43f6dc10f8 100644 --- a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml +++ b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml @@ -33,7 +33,7 @@ "Members" "You have unsaved changes." "Save changes?" - "There are no banned users in this room." + "There are no banned users." "%1$d person" "%1$d people" diff --git a/features/roomdetails/impl/src/main/res/values/localazy.xml b/features/roomdetails/impl/src/main/res/values/localazy.xml index ce8eb3a7b7..814f352abd 100644 --- a/features/roomdetails/impl/src/main/res/values/localazy.xml +++ b/features/roomdetails/impl/src/main/res/values/localazy.xml @@ -70,7 +70,7 @@ "Room info" "Topic" "Updating room…" - "There are no banned users in this room." + "There are no banned users." "%1$d person" "%1$d people" diff --git a/features/roommembermoderation/impl/src/main/res/values/localazy.xml b/features/roommembermoderation/impl/src/main/res/values/localazy.xml index e3f6071898..3d23c8763a 100644 --- a/features/roommembermoderation/impl/src/main/res/values/localazy.xml +++ b/features/roommembermoderation/impl/src/main/res/values/localazy.xml @@ -4,10 +4,12 @@ "Ban" "They won’t be able to join again if invited." "Are you sure you want to ban this member?" + "They won’t be able to join this space again if invited, but they’ll still keep their memberships of any rooms or subspaces." "Banning %1$s" "Remove" "They will be able to join this room again if invited." "Are you sure you want to remove this member?" + "They will be able to join this space again if invited, and they’ll still keep their memberships of any rooms or subspaces." "View profile" "Remove user" "Remove member and ban from joining in the future?" diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index f4c415b718..2779ab2687 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -328,7 +328,7 @@ private fun SpaceViewTopBar( }, text = { Text( - text = stringResource(id = CommonStrings.action_leave), + text = stringResource(id = CommonStrings.action_leave_space), color = ElementTheme.colors.textCriticalPrimary, ) }, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt index 1775b1e5b1..9689b9e4f1 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons +import io.element.android.features.space.impl.R import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarSize @@ -162,7 +163,7 @@ private fun SecurityAndPrivacyItem( modifier: Modifier = Modifier, ) { ListItem( - headlineContent = { Text("Security & privacy") }, + headlineContent = { Text(stringResource(R.string.screen_space_settings_security_and_privacy)) }, leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Lock())), onClick = onClick, modifier = modifier, @@ -190,7 +191,7 @@ private fun RolesAndPermissionsItem( modifier: Modifier = Modifier, ) { ListItem( - headlineContent = { Text("Roles & permissions") }, + headlineContent = { Text(stringResource(R.string.screen_space_settings_roles_and_permissions)) }, leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Admin())), onClick = onClick, modifier = modifier, diff --git a/features/space/impl/src/main/res/values/localazy.xml b/features/space/impl/src/main/res/values/localazy.xml index c6ced29d41..a4df5e767d 100644 --- a/features/space/impl/src/main/res/values/localazy.xml +++ b/features/space/impl/src/main/res/values/localazy.xml @@ -10,4 +10,7 @@ "You will not be removed from the following room(s) because you\'re the only administrator:" "Leave %1$s?" "You are the only admin for %1$s" + "Leave space" + "Roles & permissions" + "Security & privacy" diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 8ca9198cfe..7bf9e8192c 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -95,6 +95,7 @@ "Forgot password?" "Forward" "Go back" + "Go to roles & permissions" "Go to settings" "Ignore" "Invite" @@ -176,7 +177,6 @@ "Advanced settings" "an image" "Analytics" - "Fetching notifications…" "You left the room" "You were logged out of the session" "Appearance" diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 82c273db2e..3039631253 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -210,7 +210,8 @@ { "name" : ":features:space:impl", "includeRegex" : [ - "screen\\.leave_space\\..*" + "screen\\.leave_space\\..*", + "screen\\.space_settings\\..*" ] }, { From f844007812bb754df4276fc56b47fe28ac6c9e23 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 31 Oct 2025 15:10:55 +0100 Subject: [PATCH 286/898] feature(space) : some renaming on Space nodes --- .../features/space/impl/SpaceFlowNode.kt | 12 +++++----- .../space/impl/settings/SpaceSettingsNode.kt | 24 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 6684d07952..ba55203be6 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -106,27 +106,27 @@ class SpaceFlowNode( } NavTarget.Settings -> { val callback = object : SpaceSettingsNode.Callback { - override fun onBackClick() { + override fun closeSettings() { backstack.pop() } - override fun onSpaceInfoClick() { + override fun navigateToSpaceInfo() { //TODO } - override fun onMembersClick() { + override fun navigateToSpaceMembers() { callback.navigateToRoomMemberList() } - override fun onRolesAndPermissionsClick() { + override fun navigateToRolesAndPermissions() { //TODO } - override fun onSecurityAndPrivacyClick() { + override fun navigateToSecurityAndPrivacy() { //TODO } - override fun onLeaveSpaceClick() { + override fun startLeaveSpaceFlow() { backstack.push(NavTarget.Leave) } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt index 77ae924f94..9b81272153 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt @@ -29,13 +29,13 @@ class SpaceSettingsNode( private val presenter: SpaceSettingsPresenter, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { - fun onBackClick() + fun closeSettings() - fun onSpaceInfoClick() - fun onMembersClick() - fun onRolesAndPermissionsClick() - fun onSecurityAndPrivacyClick() - fun onLeaveSpaceClick() + fun navigateToSpaceInfo() + fun navigateToSpaceMembers() + fun navigateToRolesAndPermissions() + fun navigateToSecurityAndPrivacy() + fun startLeaveSpaceFlow() } private val callback = plugins().single() @@ -47,12 +47,12 @@ class SpaceSettingsNode( SpaceSettingsView( state = state, modifier = modifier, - onSpaceInfoClick = callback::onSpaceInfoClick, - onBackClick = callback::onBackClick, - onMembersClick = callback::onMembersClick, - onRolesAndPermissionsClick = callback::onRolesAndPermissionsClick, - onSecurityAndPrivacyClick = callback::onSecurityAndPrivacyClick, - onLeaveSpaceClick = callback::onLeaveSpaceClick, + onSpaceInfoClick = callback::navigateToSpaceInfo, + onBackClick = callback::closeSettings, + onMembersClick = callback::navigateToSpaceMembers, + onRolesAndPermissionsClick = callback::navigateToRolesAndPermissions, + onSecurityAndPrivacyClick = callback::navigateToSecurityAndPrivacy, + onLeaveSpaceClick = callback::startLeaveSpaceFlow, ) } } From 48d2696ba87e41b13ac11b63bc41289c1834dbc1 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 31 Oct 2025 15:32:30 +0100 Subject: [PATCH 287/898] feature(space) : prepare LeaveSpace for navigation to Roles&Permissions --- .../features/space/impl/SpaceFlowNode.kt | 17 +++++++++++++---- .../features/space/impl/leave/LeaveSpaceNode.kt | 11 ++++++++++- .../features/space/impl/leave/LeaveSpaceView.kt | 17 +++++++++++++++-- .../space/impl/settings/SpaceSettingsView.kt | 1 - 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index ba55203be6..2df48350c6 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -82,7 +82,16 @@ class SpaceFlowNode( override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { NavTarget.Leave -> { - createNode(buildContext) + val callback = object : LeaveSpaceNode.Callback { + override fun closeLeaveSpaceFlow() { + backstack.pop() + } + + override fun navigateToRolesAndPermissions() { + // TODO + } + } + createNode(buildContext, listOf(callback)) } NavTarget.Root -> { val callback = object : SpaceNode.Callback { @@ -111,7 +120,7 @@ class SpaceFlowNode( } override fun navigateToSpaceInfo() { - //TODO + // TODO } override fun navigateToSpaceMembers() { @@ -119,11 +128,11 @@ class SpaceFlowNode( } override fun navigateToRolesAndPermissions() { - //TODO + // TODO } override fun navigateToSecurityAndPrivacy() { - //TODO + // TODO } override fun startLeaveSpaceFlow() { diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt index 215f06bca5..6ba86481fe 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt @@ -13,6 +13,7 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin +import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode @@ -29,9 +30,16 @@ class LeaveSpaceNode( room: JoinedRoom, presenterFactory: LeaveSpacePresenter.Factory, ) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun closeLeaveSpaceFlow() + fun navigateToRolesAndPermissions() + } + private val leaveSpaceHandle = matrixClient.spaceService.getLeaveSpaceHandle(room.roomId) private val presenter: LeaveSpacePresenter = presenterFactory.create(leaveSpaceHandle) + private val callback = plugins().single() + override fun onBuilt() { super.onBuilt() lifecycle.subscribe( @@ -46,7 +54,8 @@ class LeaveSpaceNode( val state = presenter.present() LeaveSpaceView( state = state, - onCancel = ::navigateUp, + onCancel = callback::closeLeaveSpaceFlow, + onRolesAndPermissionsClick = callback::navigateToRolesAndPermissions, modifier = modifier ) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt index 7432301f91..6f7a9903df 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt @@ -69,6 +69,7 @@ import io.element.android.libraries.ui.strings.CommonStrings fun LeaveSpaceView( state: LeaveSpaceState, onCancel: () -> Unit, + onRolesAndPermissionsClick: () -> Unit, modifier: Modifier = Modifier, ) { Scaffold( @@ -130,6 +131,9 @@ fun LeaveSpaceView( state.eventSink(LeaveSpaceEvents.LeaveSpace) }, onCancel = onCancel, + // TODO enable when navigation is ready + showRolesAndPermissionsButton = false, // state.isLastAdmin, + onRolesAndPermissionsClick = onRolesAndPermissionsClick, ) } } @@ -210,6 +214,8 @@ private fun LeaveSpaceButtons( showLeaveButton: Boolean, selectedRoomsCount: Int, onLeaveSpace: () -> Unit, + showRolesAndPermissionsButton: Boolean, + onRolesAndPermissionsClick: () -> Unit, onCancel: () -> Unit, ) { ButtonColumnMolecule( @@ -229,8 +235,14 @@ private fun LeaveSpaceButtons( destructive = true, ) } - // TODO For least admin space, add a button to open the settings. - // See https://www.figma.com/design/kcnHxunG1LDWXsJhaNuiHz/ER-145--Spaces-on-Element-X?node-id=4622-59600 + if (showRolesAndPermissionsButton) { + Button( + text = stringResource(CommonStrings.action_go_to_roles_and_permissions), + onClick = onRolesAndPermissionsClick, + modifier = Modifier.fillMaxWidth(), + leadingIcon = IconSource.Vector(CompoundIcons.Settings()), + ) + } TextButton( modifier = Modifier.fillMaxWidth(), text = stringResource(CommonStrings.action_cancel), @@ -345,5 +357,6 @@ internal fun LeaveSpaceViewPreview( LeaveSpaceView( state = state, onCancel = {}, + onRolesAndPermissionsClick = {}, ) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt index 9689b9e4f1..fae5bf2f03 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsView.kt @@ -90,7 +90,6 @@ fun SpaceSettingsView( onClick = onLeaveSpaceClick ) }) - } } } From 4097ff26268c35dfd87b69c3d434f2c8b81486cf Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 31 Oct 2025 15:34:55 +0100 Subject: [PATCH 288/898] feature(space) : some code clean up --- .../io/element/android/features/space/impl/SpaceFlowNode.kt | 4 ++-- .../android/features/space/impl/DefaultSpaceEntryPointTest.kt | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 2df48350c6..686729bae5 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -35,7 +35,7 @@ import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.DependencyInjectionGraphOwner import io.element.android.libraries.di.RoomScope 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.JoinedRoom import io.element.android.libraries.matrix.api.spaces.SpaceService import kotlinx.parcelize.Parcelize @@ -44,7 +44,7 @@ import kotlinx.parcelize.Parcelize class SpaceFlowNode( @Assisted val buildContext: BuildContext, @Assisted plugins: List, - room: BaseRoom, + room: JoinedRoom, spaceService: SpaceService, graphFactory: SpaceFlowGraph.Factory, ) : BaseFlowNode( diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 3fd260dd4f..696e80eeea 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -15,6 +15,8 @@ import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.features.space.impl.di.FakeSpaceFlowGraph import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.test.A_ROOM_ID +import io.element.android.libraries.matrix.test.room.FakeJoinedRoom +import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList import io.element.android.libraries.matrix.test.spaces.FakeSpaceService import io.element.android.tests.testutils.lambda.lambdaError @@ -40,12 +42,12 @@ class DefaultSpaceEntryPointTest { spaceService = FakeSpaceService( spaceRoomListResult = { _: RoomId -> FakeSpaceRoomList(A_ROOM_ID) } ), + room = FakeJoinedRoom(), graphFactory = FakeSpaceFlowGraph.Factory ) } val callback = object : SpaceEntryPoint.Callback { override fun navigateToRoom(roomId: RoomId, viaParameters: List) = lambdaError() - override fun navigateToRoomDetails() = lambdaError() override fun navigateToRoomMemberList() = lambdaError() } val result = entryPoint.createNode( From 04f70c81301ec22258e90a54e5167a8df7eccf8c Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Fri, 31 Oct 2025 16:25:36 +0100 Subject: [PATCH 289/898] Enable `SyncNotificationsWithWorkManager` by default in release mode apps too (#5646) --- .../element/android/libraries/featureflag/api/FeatureFlags.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 314d4fef7c..151922213b 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -114,8 +114,7 @@ enum class FeatureFlags( title = "Sync notifications with WorkManager", description = "Use WorkManager to schedule notification sync tasks when a push is received." + " This should improve reliability and battery usage.", - // Enable by default on nightly and debug builds so we can get feedback before enabling it for everyone. - defaultValue = { meta -> meta.buildType != BuildType.RELEASE }, + defaultValue = { true }, isFinished = false, ), } From e6934aacfad9e42a8cba82e75d71c885717c9f8e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 19:15:19 +0100 Subject: [PATCH 290/898] Improve code. --- .../DefaultNotificationDrawerManager.kt | 25 +------------------ .../factories/NotificationCreator.kt | 4 ++- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index f3ba1c6d84..1677072399 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -10,10 +10,8 @@ package io.element.android.libraries.push.impl.notifications import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.SingleIn -import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.log.logger.LoggerTag 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.EventId import io.element.android.libraries.matrix.api.core.RoomId @@ -31,7 +29,6 @@ import io.element.android.services.appnavstate.api.NavigationState import io.element.android.services.appnavstate.api.currentSessionId import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -import timber.log.Timber private val loggerTag = LoggerTag("DefaultNotificationDrawerManager", LoggerTag.NotificationLoggerTag) @@ -190,29 +187,9 @@ class DefaultNotificationDrawerManager( // We have an avatar and a display name, use it userFromCache } else { - client.getSafeUserProfile() + client.getUserProfile().getOrNull() ?: MatrixUser(sessionId) } - notificationRenderer.render(currentUser, useCompleteNotificationFormat, notifiableEvents, imageLoader) } } - - private suspend fun MatrixClient.getSafeUserProfile(): MatrixUser { - return tryOrNull( - onException = { Timber.tag(loggerTag.value).e(it, "Unable to retrieve info for user ${sessionId.value}") }, - operation = { - val profile = getUserProfile().getOrNull() - // displayName cannot be empty else NotificationCompat.MessagingStyle() will crash - if (profile?.displayName.isNullOrEmpty()) { - profile?.copy(displayName = sessionId.value) - } else { - profile - } - } - ) ?: MatrixUser( - userId = sessionId, - displayName = sessionId.value, - avatarUrl = null - ) - } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 390f6b66d7..37774b4cc7 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -25,6 +25,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.timeline.item.event.EventType import io.element.android.libraries.matrix.api.user.MatrixUser +import io.element.android.libraries.matrix.ui.model.getBestName import io.element.android.libraries.push.api.notifications.NotificationBitmapLoader import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.RoomEventGroupInfo @@ -446,7 +447,8 @@ class DefaultNotificationCreator( ): MessagingStyle { return MessagingStyle( Person.Builder() - .setName(user.displayName?.annotateForDebug(50)) + // Note: name cannot be empty else NotificationCompat.MessagingStyle() will crash + .setName(user.getBestName().annotateForDebug(50)) .setIcon(bitmapLoader.getUserIcon(user.avatarUrl, imageLoader)) .setKey(user.userId.value) .build() From f5918c7baec8b8f0f5e5f2e427b4eafd6ded717c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:30:04 +0100 Subject: [PATCH 291/898] fix(deps): update dependency com.google.firebase:firebase-bom to v34.5.0 (#5643) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 08ec71915c..ffc8f5e6d8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -78,7 +78,7 @@ kotlinpoet-ksp = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlin kover_gradle_plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" } ksp_gradle_plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" } # https://firebase.google.com/docs/android/setup#available-libraries -google_firebase_bom = "com.google.firebase:firebase-bom:34.4.0" +google_firebase_bom = "com.google.firebase:firebase-bom:34.5.0" firebase_appdistribution_gradle = { module = "com.google.firebase:firebase-appdistribution-gradle", version.ref = "firebaseAppDistribution" } autonomousapps_dependencyanalysis_plugin = { module = "com.autonomousapps:dependency-analysis-gradle-plugin", version.ref = "dependencyAnalysis" } ksp_plugin = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" } From 069adf45cc132fa0dd8b03980738637a36bf4d9a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:30:28 +0100 Subject: [PATCH 292/898] fix(deps): update firebaseappdistribution to v5.2.0 (#5640) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ffc8f5e6d8..77c8c7c39c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ android_gradle_plugin = "8.11.1" kotlin = "2.2.20" kotlinpoet = "2.2.0" ksp = "2.2.20-2.0.2" -firebaseAppDistribution = "5.1.1" +firebaseAppDistribution = "5.2.0" # AndroidX core = "1.17.0" From 19dcdc1a0c38dac31bdf588c9c3b47638b852626 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:24:54 +0100 Subject: [PATCH 293/898] fix(deps): update metro to v0.7.3 (#5663) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 77c8c7c39c..d8dd1b37c3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ haze = "1.6.10" dependencyAnalysis = "3.4.1" # DI -metro = "0.7.2" +metro = "0.7.3" # Auto service autoservice = "1.1.1" From 2f5d0c340c6a6de932a6eb99f8e4eaf0c12a7480 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:48:06 +0100 Subject: [PATCH 294/898] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.31 (#5657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.31 * Fix API breaks --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín --- gradle/libs.versions.toml | 2 +- .../libraries/matrix/impl/RustMatrixClientFactory.kt | 10 ++++++---- .../impl/auth/RustMatrixAuthenticationService.kt | 3 --- .../matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt | 3 ++- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d8dd1b37c3..7f07c14167 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -177,7 +177,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.29" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.31" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index 35b5bcf2b9..1882b04021 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -33,6 +33,7 @@ import org.matrix.rustcomponents.sdk.RequestConfig import org.matrix.rustcomponents.sdk.Session import org.matrix.rustcomponents.sdk.SlidingSyncVersion import org.matrix.rustcomponents.sdk.SlidingSyncVersionBuilder +import org.matrix.rustcomponents.sdk.SqliteStoreBuilder import org.matrix.rustcomponents.sdk.use import timber.log.Timber import uniffi.matrix_sdk_crypto.CollectStrategy @@ -105,12 +106,13 @@ class RustMatrixClientFactory( slidingSyncType: ClientBuilderSlidingSync, ): ClientBuilder { return clientBuilderProvider.provide() - .sessionPaths( - dataPath = sessionPaths.fileDirectory.absolutePath, - cachePath = sessionPaths.cacheDirectory.absolutePath, + .sqliteStore( + SqliteStoreBuilder( + dataPath = sessionPaths.fileDirectory.absolutePath, + cachePath = sessionPaths.cacheDirectory.absolutePath, + ).passphrase(passphrase) ) .setSessionDelegate(sessionDelegate) - .sessionPassphrase(passphrase) .userAgent(userAgentProvider.provide()) .addRootCertificates(userCertificatesProvider.provides()) .autoEnableBackups(true) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 408af2eb0a..9859358ae6 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -285,7 +285,6 @@ class RustMatrixAuthenticationService( runCatchingExceptions { val client = makeQrCodeLoginClient( sessionPaths = emptySessionPaths, - passphrase = pendingPassphrase, qrCodeData = sdkQrCodeLoginData, ) client.loginWithQrCode( @@ -344,7 +343,6 @@ class RustMatrixAuthenticationService( private suspend fun makeQrCodeLoginClient( sessionPaths: SessionPaths, - passphrase: String?, qrCodeData: QrCodeData, ): Client { Timber.d("Creating client for QR Code login with simplified sliding sync") @@ -354,7 +352,6 @@ class RustMatrixAuthenticationService( passphrase = pendingPassphrase, slidingSyncType = ClientBuilderSlidingSync.Discovered, ) - .sessionPassphrase(passphrase) .serverNameOrHomeserverUrl(qrCodeData.serverName()!!) .build() } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt index 6cff38f21a..81dbfafe5e 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt @@ -13,6 +13,7 @@ import org.matrix.rustcomponents.sdk.ClientSessionDelegate import org.matrix.rustcomponents.sdk.NoHandle import org.matrix.rustcomponents.sdk.RequestConfig import org.matrix.rustcomponents.sdk.SlidingSyncVersionBuilder +import org.matrix.rustcomponents.sdk.SqliteStoreBuilder import uniffi.matrix_sdk.BackupDownloadStrategy import uniffi.matrix_sdk_crypto.CollectStrategy import uniffi.matrix_sdk_crypto.DecryptionSettings @@ -29,7 +30,6 @@ class FakeFfiClientBuilder( override fun decryptionSettings(decryptionSettings: DecryptionSettings): ClientBuilder = this override fun disableSslVerification() = this override fun homeserverUrl(url: String) = this - override fun sessionPassphrase(passphrase: String?) = this override fun proxy(url: String) = this override fun requestConfig(config: RequestConfig) = this override fun roomKeyRecipientStrategy(strategy: CollectStrategy) = this @@ -42,5 +42,6 @@ class FakeFfiClientBuilder( override fun username(username: String) = this override fun enableShareHistoryOnInvite(enableShareHistoryOnInvite: Boolean): ClientBuilder = this override fun threadsEnabled(enabled: Boolean, threadSubscriptions: Boolean): ClientBuilder = this + override fun sqliteStore(config: SqliteStoreBuilder): ClientBuilder = this override suspend fun build() = buildResult() } From 287a01773949756f208b9a2ba67bd033cd77ad1b Mon Sep 17 00:00:00 2001 From: ElementBot <110224175+ElementBot@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:58:12 +0100 Subject: [PATCH 295/898] Sync Strings from Localazy (#5662) Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com> --- .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-et/translations.xml | 2 +- .../src/main/res/values-sk/translations.xml | 2 +- .../main/res/values-zh-rTW/translations.xml | 2 +- .../impl/src/main/res/values/localazy.xml | 2 +- .../src/main/res/values-fa/translations.xml | 2 + .../src/main/res/values-de/translations.xml | 2 +- .../src/main/res/values-et/translations.xml | 2 +- .../src/main/res/values-sk/translations.xml | 2 +- .../main/res/values-zh-rTW/translations.xml | 2 +- .../impl/src/main/res/values/localazy.xml | 2 +- .../src/main/res/values-cs/translations.xml | 2 +- .../src/main/res/values-sk/translations.xml | 4 +- .../impl/src/main/res/values/localazy.xml | 2 + .../src/main/res/values-fa/translations.xml | 6 +- .../src/main/res/values-fa/translations.xml | 2 +- .../src/main/res/values-bg/translations.xml | 2 + .../src/main/res/values-cs/translations.xml | 5 +- .../src/main/res/values-cy/translations.xml | 2 + .../src/main/res/values-da/translations.xml | 2 + .../src/main/res/values-de/translations.xml | 4 + .../src/main/res/values-el/translations.xml | 1 + .../src/main/res/values-es/translations.xml | 1 + .../src/main/res/values-et/translations.xml | 5 + .../src/main/res/values-eu/translations.xml | 1 + .../src/main/res/values-fa/translations.xml | 2 + .../src/main/res/values-fi/translations.xml | 2 + .../src/main/res/values-fr/translations.xml | 2 + .../src/main/res/values-hu/translations.xml | 2 + .../src/main/res/values-in/translations.xml | 1 + .../src/main/res/values-it/translations.xml | 1 + .../src/main/res/values-ko/translations.xml | 1 + .../src/main/res/values-nb/translations.xml | 2 + .../src/main/res/values-pl/translations.xml | 2 + .../main/res/values-pt-rBR/translations.xml | 1 + .../src/main/res/values-pt/translations.xml | 2 + .../src/main/res/values-ro/translations.xml | 2 + .../src/main/res/values-ru/translations.xml | 2 + .../src/main/res/values-sk/translations.xml | 5 +- .../src/main/res/values-sv/translations.xml | 1 + .../src/main/res/values-tr/translations.xml | 1 + .../src/main/res/values-uk/translations.xml | 1 + .../main/res/values-zh-rTW/translations.xml | 4 + .../src/main/res/values-zh/translations.xml | 2 + .../src/main/res/values/localazy.xml | 5 +- ...om.joined_LoadingRoomNodeView_Day_1_de.png | 4 +- ...ard.impl_ForwardMessagesView_Day_3_de.png} | 0 ...impl.edit_RoomDetailsEditView_Day_8_de.png | 3 + ...pl.members_RoomMemberListView_Day_1_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_0_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_1_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_2_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_3_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_4_de.png | 4 +- ...res.space.impl.root_SpaceView_Day_5_de.png | 4 +- ...tails_MediaDetailsBottomSheet_Day_0_de.png | 4 +- ...impl.gallery_MediaGalleryView_Day_8_de.png | 4 +- ...ewer.impl.viewer_MediaViewerView_11_de.png | 4 +- screenshots/html/data.js | 1831 +++++++++-------- 59 files changed, 1024 insertions(+), 956 deletions(-) rename screenshots/de/{features.messages.impl.forward_ForwardMessagesView_Day_3_de.png => features.forward.impl_ForwardMessagesView_Day_3_de.png} (100%) create mode 100644 screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_de.png diff --git a/features/changeroommemberroles/impl/src/main/res/values-de/translations.xml b/features/changeroommemberroles/impl/src/main/res/values-de/translations.xml index 88d795d614..09a04a4d35 100644 --- a/features/changeroommemberroles/impl/src/main/res/values-de/translations.xml +++ b/features/changeroommemberroles/impl/src/main/res/values-de/translations.xml @@ -33,7 +33,7 @@ "Mitglieder" "Du hast nicht gespeicherte Änderungen." "Änderungen speichern?" - "In diesem Chat gibt es keine gesperrten Nutzer." + "Es gibt keine gesperrten Nutzer." "%1$d Person" "%1$d Personen" diff --git a/features/changeroommemberroles/impl/src/main/res/values-et/translations.xml b/features/changeroommemberroles/impl/src/main/res/values-et/translations.xml index a43a9a89d0..ca7faadde0 100644 --- a/features/changeroommemberroles/impl/src/main/res/values-et/translations.xml +++ b/features/changeroommemberroles/impl/src/main/res/values-et/translations.xml @@ -33,7 +33,7 @@ "Liikmed" "Sul on salvestamata muudatusi" "Kas salvestame muudatused?" - "Jututoas pole suhtluskeeluga kasutajaid" + "Suhtluskeeluga kasutajaid pole" "%1$d osaleja" "%1$d osalejat" diff --git a/features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml b/features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml index 8d5c6e8502..88ff80b71f 100644 --- a/features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml +++ b/features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml @@ -33,7 +33,7 @@ "Členovia" "Máte neuložené zmeny." "Uložiť zmeny?" - "V tejto miestnosti nie sú žiadni zakázaní používatelia." + "Neexistujú žiadni zablokovaní používatelia." "%1$d osoba" "%1$d osoby" diff --git a/features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml b/features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml index 2ec5ec64c5..152244e066 100644 --- a/features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml @@ -33,7 +33,7 @@ "成員" "您有尚未儲存的變更" "是否儲存變更?" - "此聊天室沒有黑名單。" + "沒有被封鎖的使用者。" "%1$d 位夥伴" diff --git a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml index 456426726a..43f6dc10f8 100644 --- a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml +++ b/features/changeroommemberroles/impl/src/main/res/values/localazy.xml @@ -33,7 +33,7 @@ "Members" "You have unsaved changes." "Save changes?" - "There are no banned users in this room." + "There are no banned users." "%1$d person" "%1$d people" diff --git a/features/logout/impl/src/main/res/values-fa/translations.xml b/features/logout/impl/src/main/res/values-fa/translations.xml index 4bf6be1b89..c4c6e823d0 100644 --- a/features/logout/impl/src/main/res/values-fa/translations.xml +++ b/features/logout/impl/src/main/res/values-fa/translations.xml @@ -4,6 +4,7 @@ "خروج" "خروج" "خارج شدن…" + "دارید از واپسین نشستتان خارج می‌شوید. اگر اکنون خارج شوید پیام‌های رمزنگاشته‌تان را از دست خواهید داد." "پشتیبان را خاموش کرده‌اید" "کلیدهایتان هنوز در حال پشتیبان گیریند" "لطفاً پیش از خروج منتظر پایانش شوید." @@ -11,5 +12,6 @@ "خروج" "شما در آستانه خروج از آخرین جلسه خود هستید. اگر اکنون از سیستم خارج شوید، دسترسی به پیام های رمزگذاری شده تان را از دست خواهید داد." "بازگردانی برپا نشده" + "دارید از واپسین نشستتان خارج می‌شوید. اگر اکنون خارج شوید ممکن است پیام‌های رمزنگاشته‌تان را از دست بدهید." "کلید بازیابیتان را ذخیره کرده‌اید؟" diff --git a/features/roomdetails/impl/src/main/res/values-de/translations.xml b/features/roomdetails/impl/src/main/res/values-de/translations.xml index 4a4f8a44b6..f88c017970 100644 --- a/features/roomdetails/impl/src/main/res/values-de/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-de/translations.xml @@ -70,7 +70,7 @@ "Informationen" "Thema" "Chat wird aktualisiert…" - "In diesem Chat gibt es keine gesperrten Nutzer." + "Es gibt keine gesperrten Nutzer." "%1$d Person" "%1$d Personen" 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 6de3107def..a8f927e675 100644 --- a/features/roomdetails/impl/src/main/res/values-et/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-et/translations.xml @@ -70,7 +70,7 @@ "Jututoa teave" "Teema" "Uuendame jututuba…" - "Jututoas pole suhtluskeeluga kasutajaid" + "Suhtluskeeluga kasutajaid pole" "%1$d osaleja" "%1$d osalejat" 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 ff3dc18103..fa6fa06957 100644 --- a/features/roomdetails/impl/src/main/res/values-sk/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-sk/translations.xml @@ -70,7 +70,7 @@ "Informácie o miestnosti" "Téma" "Aktualizácia miestnosti…" - "V tejto miestnosti nie sú žiadni zakázaní používatelia." + "Neexistujú žiadni zablokovaní používatelia." "%1$d osoba" "%1$d osoby" diff --git a/features/roomdetails/impl/src/main/res/values-zh-rTW/translations.xml b/features/roomdetails/impl/src/main/res/values-zh-rTW/translations.xml index 888701406d..b1773df979 100644 --- a/features/roomdetails/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-zh-rTW/translations.xml @@ -70,7 +70,7 @@ "聊天室資訊" "主題" "正在更新聊天室…" - "此聊天室沒有黑名單。" + "沒有被封鎖的使用者。" "%1$d 位夥伴" diff --git a/features/roomdetails/impl/src/main/res/values/localazy.xml b/features/roomdetails/impl/src/main/res/values/localazy.xml index ce8eb3a7b7..814f352abd 100644 --- a/features/roomdetails/impl/src/main/res/values/localazy.xml +++ b/features/roomdetails/impl/src/main/res/values/localazy.xml @@ -70,7 +70,7 @@ "Room info" "Topic" "Updating room…" - "There are no banned users in this room." + "There are no banned users." "%1$d person" "%1$d people" diff --git a/features/roommembermoderation/impl/src/main/res/values-cs/translations.xml b/features/roommembermoderation/impl/src/main/res/values-cs/translations.xml index 263aa9a2e0..20fc68c391 100644 --- a/features/roommembermoderation/impl/src/main/res/values-cs/translations.xml +++ b/features/roommembermoderation/impl/src/main/res/values-cs/translations.xml @@ -9,7 +9,7 @@ "Pokud budou pozváni, budou se moci do této místnosti znovu připojit." "Opravdu chcete tohoto člena odebrat?" "Zobrazit profil" - "Odebrat z místnosti" + "Odebrat uživatele" "Odebrat člena a zakázat mu připojení v budoucnu?" "Odstraňování %1$s…" "Zrušit vykázání z místnosti" diff --git a/features/roommembermoderation/impl/src/main/res/values-sk/translations.xml b/features/roommembermoderation/impl/src/main/res/values-sk/translations.xml index ffdd634b0b..c852e7ab29 100644 --- a/features/roommembermoderation/impl/src/main/res/values-sk/translations.xml +++ b/features/roommembermoderation/impl/src/main/res/values-sk/translations.xml @@ -4,12 +4,14 @@ "Zakázať" "Nebudú sa môcť pripojiť k tejto miestnosti znova ani ak budú pozvaní." "Ste si istý, že chcete zakázať tohto člena?" + "Ak dostanú pozvánku, nebudú sa môcť k tomuto priestoru znova pripojiť, ale stále si ponechajú členstvo vo všetkých miestnostiach alebo podpriestoroch." "Zakazuje sa %1$s" "Odstrániť" "V prípade pozvania sa budú môcť znova pripojiť k tejto miestnosti." "Ste si istý, že chcete odstrániť tohto člena?" + "Ak dostanú pozvánku, budú sa môcť k tomuto priestoru znova pripojiť a stále si ponechajú členstvo vo všetkých miestnostiach alebo podpriestoroch." "Zobraziť profil" - "Odstrániť z miestnosti" + "Odstrániť používateľa" "Odstrániť člena a zakázať vstup v budúcnosti?" "Odstraňuje sa %1$s…" "Zrušiť zákaz prístupu do miestnosti" diff --git a/features/roommembermoderation/impl/src/main/res/values/localazy.xml b/features/roommembermoderation/impl/src/main/res/values/localazy.xml index e3f6071898..3d23c8763a 100644 --- a/features/roommembermoderation/impl/src/main/res/values/localazy.xml +++ b/features/roommembermoderation/impl/src/main/res/values/localazy.xml @@ -4,10 +4,12 @@ "Ban" "They won’t be able to join again if invited." "Are you sure you want to ban this member?" + "They won’t be able to join this space again if invited, but they’ll still keep their memberships of any rooms or subspaces." "Banning %1$s" "Remove" "They will be able to join this room again if invited." "Are you sure you want to remove this member?" + "They will be able to join this space again if invited, and they’ll still keep their memberships of any rooms or subspaces." "View profile" "Remove user" "Remove member and ban from joining in the future?" 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 fc0bace5cd..ffc03e1f19 100644 --- a/features/verifysession/impl/src/main/res/values-fa/translations.xml +++ b/features/verifysession/impl/src/main/res/values-fa/translations.xml @@ -11,10 +11,10 @@ "استفاده از افزاره‌ای دیگر" "منتظر افزارهٔ دیگر…" "يه چيزي درست به نظر نمياد یا زمان درخواست به پایان رسید یا درخواست رد شد." - "تأیید کنید که ایموجی های زیر با ایموجی های نشان داده شده در جلسه دیگر شما مطابقت دارند." + "تأیید تطابق شکلک‌های زیر با شکلک‌های نشان داده شده روی افزارهٔ دیگرتان." "مقایسهٔ شکلک‌ها" "مقایسهٔ اعداد" - "اکنون نشست جدیدتان تأیید شده‌. این نشست به پیام‌های رمزنگارش شده‌تان دسترسی داشته و دیگر کاربران مطمئن می‌بینندش." + "اکنون می‌توانید روی افزارهٔ دیگرتان با امنیت پیام فرستاده و بخوانید." "افزاره تأیید شده" "ورود کلید بازیابی" "برای دسترسی به تاریخچه پیام‌های رمزگذاری‌شده‌تان، ثابت کنید که خودتان هستید." @@ -26,7 +26,7 @@ "شکلک‌ها را مقایسه کنید، از ترتیب نمایش آنان نیز مطمئن شوید." "وارد شده" "صحت‌سنجی شکست خورد" - "اکنون نشست جدیدتان تأیید شده‌. این نشست به پیام‌های رمزنگارش شده‌تان دسترسی داشته و دیگر کاربران مطمئن می‌بینندش." + "اکنون می‌توانید روی افزارهٔ دیگرتان با امنیت پیام فرستاده و بخوانید." "افزاره تأیید شده" "مطابق نیستند" "مطابقند" 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 602d35363c..fd55fdf9d9 100644 --- a/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml +++ b/libraries/textcomposer/impl/src/main/res/values-fa/translations.xml @@ -2,7 +2,7 @@ "افزودن پیوست" "تغییر وضعیت سیاههٔ گلوله‌ای" - "بستن گزینه‌های قالب‌بندی" + "لغو و بستن قالب‌بندی متن" "تغییر حالت بلوک کد" "افزودن عنوان" "پیام رمزنگاری شده…" diff --git a/libraries/ui-strings/src/main/res/values-bg/translations.xml b/libraries/ui-strings/src/main/res/values-bg/translations.xml index 57b3a43d1a..42d2608ab6 100644 --- a/libraries/ui-strings/src/main/res/values-bg/translations.xml +++ b/libraries/ui-strings/src/main/res/values-bg/translations.xml @@ -316,6 +316,8 @@ "Отваряне в Google Maps" "Отваряне в OpenStreetMap" "Споделяне на това местоположение" + "Напускане на пространството" + "Защита и поверителност" "Местоположение" "Версия: %1$s (%2$s)" "bg" diff --git a/libraries/ui-strings/src/main/res/values-cs/translations.xml b/libraries/ui-strings/src/main/res/values-cs/translations.xml index 8e86f59c3b..ae50c0f28d 100644 --- a/libraries/ui-strings/src/main/res/values-cs/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cs/translations.xml @@ -97,6 +97,7 @@ "Zapomněli jste heslo?" "Přeposlat" "Přejít zpět" + "Přejít na role a oprávnění" "Přejít do nastavení" "Ignorovat" "Pozvat" @@ -178,7 +179,6 @@ "Pokročilá nastavení" "obrázek" "Analytika" - "Načítání oznámení…" "Opustili jste místnost" "Byli jste odhlášeni z relace" "Vzhled" @@ -476,6 +476,9 @@ Opravdu chcete pokračovat?" "%1$s prostor" "Prostory" "Zobrazit členy" + "Opustit prostor" + "Role a oprávnění" + "Zabezpečení a soukromí" "Zpráva nebyla odeslána, protože ověřená identita uživatele %1$s se změnila." "Zpráva nebyla odeslána, protože%1$s neověřil(a) všechna zařízení." "Zpráva nebyla odeslána, protože jste neověřili jedno nebo více zařízení." 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 11b46cb85c..0253c6b01a 100644 --- a/libraries/ui-strings/src/main/res/values-cy/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cy/translations.xml @@ -497,6 +497,8 @@ Ydych chi\'n siŵr eich bod am barhau?" "%1$s • %2$s" "Gofod %1$s" "Gofodau" + "Gadael y gofod" + "Diogelwch a phreifatrwydd" "Heb anfon y neges oherwydd bod hunaniaeth wedi \'i ddilysu %1$s wedi\'i ailosod." "Heb anfon y neges oherwydd nid yw %1$s wedi gwirio pob dyfais." "Heb anfon y neges oherwydd nad ydych wedi gwirio un neu fwy o\'ch dyfeisiau." 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 fa91e60b9d..dd40b2e7bb 100644 --- a/libraries/ui-strings/src/main/res/values-da/translations.xml +++ b/libraries/ui-strings/src/main/res/values-da/translations.xml @@ -466,6 +466,8 @@ Er du sikker på, at du vil fortsætte?" "%1$s gruppe" "Grupper" "Vis medlemmer" + "Forlad gruppe" + "Sikkerhed og privatliv" "Beskeden blev ikke sendt fordi %1$s s bekræftede identitet blev nulstillet." "Meddelelsen er ikke sendt, fordi %1$s ikke har bekræftet alle enheder." "Beskeden er ikke sendt, fordi du ikke har verificeret en eller flere af dine enheder." diff --git a/libraries/ui-strings/src/main/res/values-de/translations.xml b/libraries/ui-strings/src/main/res/values-de/translations.xml index d1c8b7a6f4..3f34269879 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -420,6 +420,7 @@ Möchtest du wirklich fortfahren?" "🔐️ Begleite mich auf %1$s" "Hey, sprich mit mir auf %1$s: %2$s" "%1$s Android" + "Thread in %1$s" "Heftiges Schütteln um Fehler zu melden" "Bildschirmfoto" "%1$s: %2$s" @@ -466,6 +467,9 @@ Möchtest du wirklich fortfahren?" "%1$s • %2$s" "%1$s Space" "Spaces" + "Mitglieder anzeigen" + "Space verlassen" + "Sicherheit & Datenschutz" "Nachricht nicht gesendet, weil sich die verifizierte Identität von %1$s geändert hat." "Die Nachricht wurde nicht gesendet, weil %1$s nicht alle Geräte verifiziert hat." "Die Nachricht wurde nicht gesendet, weil du eines oder mehrere deiner Geräte nicht verifiziert hast." diff --git a/libraries/ui-strings/src/main/res/values-el/translations.xml b/libraries/ui-strings/src/main/res/values-el/translations.xml index 5085f404a1..bfb50b933e 100644 --- a/libraries/ui-strings/src/main/res/values-el/translations.xml +++ b/libraries/ui-strings/src/main/res/values-el/translations.xml @@ -394,6 +394,7 @@ "Άνοιγμα στο Google Maps" "Άνοιγμα στο OpenStreetMap" "Κοινή χρήση αυτής της τοποθεσίας" + "Ασφάλεια & απόρρητο" "Το μήνυμα δεν στάλθηκε γιατί έγινε επαναφορά της επαληθευμένης ταυτότητας του χρήστη %1$s." "Το μήνυμα δεν στάλθηκε επειδή ο χρήστης %1$s δεν έχει επαληθεύσει όλες τις συσκευές." "Το μήνυμα δεν στάλθηκε επειδή δεν έχεις επαληθεύσει τουλάχιστον μία από τις συσκευές σου." diff --git a/libraries/ui-strings/src/main/res/values-es/translations.xml b/libraries/ui-strings/src/main/res/values-es/translations.xml index 4428e0b864..d4420e1f6b 100644 --- a/libraries/ui-strings/src/main/res/values-es/translations.xml +++ b/libraries/ui-strings/src/main/res/values-es/translations.xml @@ -377,6 +377,7 @@ Motivo: %1$s." "Abrir en Google Maps" "Abrir en OpenStreetMap" "Compartir esta ubicación" + "Seguridad y privacidad" "Mensaje no enviado porque la identidad verificada de %1$s fue restablecida." "Mensaje no enviado porque %1$s no ha verificado todos los dispositivos." "Mensaje no enviado porque no has verificado uno o más de tus dispositivos." 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 5f905c136d..e1e76f70da 100644 --- a/libraries/ui-strings/src/main/res/values-et/translations.xml +++ b/libraries/ui-strings/src/main/res/values-et/translations.xml @@ -95,6 +95,7 @@ "Kas unustasid salasõna?" "Edasta" "Tagasi eelmisesse vaatesse" + "Ava „Rollid ja õigused“" "Ava seadistused" "Eira" "Kutsu" @@ -420,6 +421,7 @@ Kas sa oled kindel, et soovid jätkata?" "🔐️ Liitu minuga rakenduses %1$s" "Hei, suhtle minuga %1$s võrgus: %2$s" "%1$s Android" + "Jutulõng „%1$s“ jututoas" "Veast teatamiseks raputa nutiseadet ägedalt" "Ekraanitõmmis" "%1$s: %2$s" @@ -467,6 +469,9 @@ Kas sa oled kindel, et soovid jätkata?" "Kogukond: %1$s" "Kogukonnad" "Vaata liikmeid" + "Lahku kogukonnast" + "Rollid ja õigused" + "Turvalisus ja privaatsus" "Sõnum on saatmata, kuna kasutaja %1$s verifitseeritud identiteet on lähtestatud." "Sõnum on saatmata, kuna %1$s pole verifitseerinud kõiki oma seadmeid." "Kuna sa pole üks või enamgi oma seadet verifitseerinud, siis sinu sõnum on saatmata." diff --git a/libraries/ui-strings/src/main/res/values-eu/translations.xml b/libraries/ui-strings/src/main/res/values-eu/translations.xml index 15bfa21fb5..394ee138a4 100644 --- a/libraries/ui-strings/src/main/res/values-eu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-eu/translations.xml @@ -375,6 +375,7 @@ Ziur jarraitu nahi duzula?" "Ireki Google Maps-en" "Ireki OpenStreetMap-en" "Partekatu kokapen hau" + "Segurtasuna eta pribatutasuna" "Kokapena" "Bertsioa: %1$s (%2$s)" "eu" 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 6f55ce0db4..3842880477 100644 --- a/libraries/ui-strings/src/main/res/values-fa/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fa/translations.xml @@ -383,6 +383,8 @@ "‏%1$s فضا" "فضاها" "دیدن اعضا" + "ترک فضا" + "امنیت و محرمانگی" "مکان" "نگارش : %1$s (%2$s)" "fa" 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 1885f56f66..ae1e7bf433 100644 --- a/libraries/ui-strings/src/main/res/values-fi/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml @@ -467,6 +467,8 @@ Haluatko varmasti jatkaa?" "%1$s tila" "Tilat" "Näytä jäsenet" + "Poistu tilasta" + "Turvallisuus ja yksityisyys" "Viestiä ei lähetetty, koska käyttäjän %1$s vahvistettu identiteetti nollattiin." "Viestiä ei lähetetty, koska %1$s ei ole vahvistanut kaikkia laitteitaan." "Viestiä ei lähetetty, koska et ole vahvistanut yhtä tai useampaa laitettasi." 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 72e29691fa..d222ffea88 100644 --- a/libraries/ui-strings/src/main/res/values-fr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fr/translations.xml @@ -467,6 +467,8 @@ Raison : %1$s." "Espace %1$s" "Espaces" "Voir les membres" + "Quitter l’espace" + "Sécurité & confidentialité" "Le message n’a pas été envoyé car l’identité vérifiée de %1$s a été réinitialisée." "Le message n’a pas été envoyé car %1$s n’a pas vérifié tous ses appareils." "Message non envoyé car vous n’avez pas vérifié tous vos appareils." 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 a55b85b944..44952a9151 100644 --- a/libraries/ui-strings/src/main/res/values-hu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-hu/translations.xml @@ -465,6 +465,8 @@ Biztos, hogy folytatja?" "%1$s • %2$s" "%1$s tér" "Terek" + "Tér elhagyása" + "Biztonság és adatvédelem" "Az üzenet nem lett elküldve, mert %1$s ellenőrzött személyazonossága megváltozott." "Az üzenet nem lett elküldve, mert %1$s nem ellenőrizte az összes eszközét." "Az üzenet nem lett elküldve, mert egy vagy több eszközét nem ellenőrizte." diff --git a/libraries/ui-strings/src/main/res/values-in/translations.xml b/libraries/ui-strings/src/main/res/values-in/translations.xml index bd7739d5ba..d95548ce4c 100644 --- a/libraries/ui-strings/src/main/res/values-in/translations.xml +++ b/libraries/ui-strings/src/main/res/values-in/translations.xml @@ -399,6 +399,7 @@ Apakah Anda yakin ingin melanjutkan?" "Buka di Google Maps" "Buka di OpenStreetMap" "Bagikan lokasi ini" + "Keamanan & privasi" "Pesan tidak terkirim karena identitas terverifikasi %1$s telah diatur ulang." "Pesan tidak terkirim karena %1$s belum memverifikasi semua perangkat." "Pesan tidak terkirim karena Anda belum memverifikasi satu atau beberapa perangkat Anda." diff --git a/libraries/ui-strings/src/main/res/values-it/translations.xml b/libraries/ui-strings/src/main/res/values-it/translations.xml index 77a1a20782..b0f637a133 100644 --- a/libraries/ui-strings/src/main/res/values-it/translations.xml +++ b/libraries/ui-strings/src/main/res/values-it/translations.xml @@ -447,6 +447,7 @@ Sei sicuro di voler continuare?" "Spazi che hai creato o a cui hai aderito." "%1$s • %2$s" "Spazi" + "Sicurezza e privacy" "Messaggio non inviato perché l\'identità verificata di %1$s è stata reimpostata." "Messaggio non inviato perché %1$s non ha verificato tutti i dispositivi." "Messaggio non inviato perché non hai verificato uno o più dispositivi." diff --git a/libraries/ui-strings/src/main/res/values-ko/translations.xml b/libraries/ui-strings/src/main/res/values-ko/translations.xml index 256e561db5..f7d3d65da5 100644 --- a/libraries/ui-strings/src/main/res/values-ko/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ko/translations.xml @@ -440,6 +440,7 @@ "당신이 스페이스를 만들거나 가입했습니다." "%1$s•%2$s" "스페이스" + "보안 및 개인정보 보호" "%1$s의 인증된 신원이 재설정되어 메시지가 전송되지 않았습니다." "%1$s 이 모든 장치를 확인하지 않았기 때문에 메시지가 전송되지 않았습니다." "하나 이상의 기기를 확인하지 않았기 때문에 메시지가 전송되지 않았습니다." diff --git a/libraries/ui-strings/src/main/res/values-nb/translations.xml b/libraries/ui-strings/src/main/res/values-nb/translations.xml index e64a005577..83694a16b8 100644 --- a/libraries/ui-strings/src/main/res/values-nb/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nb/translations.xml @@ -465,6 +465,8 @@ Er du sikker på at du vil fortsette?" "%1$s område" "Områder" "Vis medlemmer" + "Forlat område" + "Sikkerhet og personvern" "Meldingen ble ikke sendt fordi %1$ss verifiserte identitet er tilbakestilt." "Meldingen ble ikke sendt fordi %1$s ikke har verifisert alle enheter." "Meldingen ble ikke sendt fordi du ikke har verifisert en eller flere av enhetene dine." 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 e4186fd0f2..6ab2aa615d 100644 --- a/libraries/ui-strings/src/main/res/values-pl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pl/translations.xml @@ -475,6 +475,8 @@ Czy na pewno chcesz kontynuować?" "%1$s • %2$s" "Przestrzeń %1$s" "Przestrzenie" + "Opuść przestrzeń" + "Bezpieczeństwo i prywatność" "Wiadomość nie została wysłana, ponieważ tożsamość %1$s została zresetowana." "Wiadomość nie została wysłana, ponieważ %1$s nie zweryfikował wszystkich urządzeń." "Wiadomość nie została wysłana, ponieważ nie zweryfikowałeś jednego lub więcej swoich urządzeń." diff --git a/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml b/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml index fabc600b67..8256d9b429 100644 --- a/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml @@ -428,6 +428,7 @@ Você tem certeza de que deseja continuar?" "Os espaços que você criou ou entrou." "%1$s • %2$s" "Espaços" + "Segurança e privacidade" "Mensagem não enviada porque a identidade verificada de %1$s foi redefinida." "A mensagem não foi enviada porque %1$s não verificou todos os dispositivos." "Mensagem não enviada porque você não verificou um ou mais dos seus dispositivos." diff --git a/libraries/ui-strings/src/main/res/values-pt/translations.xml b/libraries/ui-strings/src/main/res/values-pt/translations.xml index 5e55f3a9de..b754842c1d 100644 --- a/libraries/ui-strings/src/main/res/values-pt/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt/translations.xml @@ -461,6 +461,8 @@ Tens a certeza de que queres continuar?" "%1$s • %2$s" "Espaço %1$s" "Espaços" + "Sair do espaço" + "Segurança e privacidade" "Mensagem não enviada porque a identidade verificada de %1$s foi reposta." "Mensagem não enviada porque %1$s não verificou todos os dispositivos." "Mensagem não enviada porque não verificou um ou mais dos seus dispositivos." diff --git a/libraries/ui-strings/src/main/res/values-ro/translations.xml b/libraries/ui-strings/src/main/res/values-ro/translations.xml index 0cf1acf673..e5936ee4bf 100644 --- a/libraries/ui-strings/src/main/res/values-ro/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ro/translations.xml @@ -475,6 +475,8 @@ Sunteți sigur că doriți să continuați?" "%1$s • %2$s" "Spațiu %1$s" "Spații" + "Părăsiți spațiul" + "Securitate & confidențialitate" "Mesajul nu a fost trimis deoarece identitatea verificată a lui %1$s s-a schimbat." "Mesajul nu a fost trimis deoarece %1$s nu a verificat toate dispozitivele." "Mesajul nu a fost trimis deoarece nu ați verificat unul sau mai multe dispozitive." diff --git a/libraries/ui-strings/src/main/res/values-ru/translations.xml b/libraries/ui-strings/src/main/res/values-ru/translations.xml index fc856adf94..6de1d6855c 100644 --- a/libraries/ui-strings/src/main/res/values-ru/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ru/translations.xml @@ -473,6 +473,8 @@ "%1$s • %2$s" "%1$s пространство" "Пространства" + "Покинуть пространство" + "Безопасность и конфиденциальность" "Сообщение не отправлено, потому что подтвержденная личность %1$s была сброшена." "Сообщение не отправлено, потому что %1$s не проверил одно или несколько устройств." "Сообщение не отправлено, поскольку вы не подтвердили одно или несколько своих устройств." 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 263c1282b5..ed2fe96842 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -97,6 +97,7 @@ "Zabudnuté heslo?" "Preposlať" "Ísť späť" + "Prejsť na roly a oprávnenia" "Prejsť na nastavenia" "Ignorovať" "Pozvať" @@ -178,7 +179,6 @@ "Pokročilé nastavenia" "obrázok" "Analytika" - "Načítavajú sa upozornenia…" "Opustili ste miestnosť" "Boli ste odhlásení zo relácie." "Vzhľad" @@ -478,6 +478,9 @@ Naozaj chcete pokračovať?" "%1$s priestor" "Priestory" "Zobraziť členov" + "Opustiť priestor" + "Roly a oprávnenia" + "Bezpečnosť a súkromie" "Správa nebola odoslaná, pretože sa zmenila overená totožnosť používateľa %1$s." "Správa nebola odoslaná, pretože %1$s neoveril/a všetky zariadenia." "Správa nebola odoslaná, pretože ste neoverili jedno alebo viac svojich zariadení." diff --git a/libraries/ui-strings/src/main/res/values-sv/translations.xml b/libraries/ui-strings/src/main/res/values-sv/translations.xml index e3cf26193e..838f17e2ff 100644 --- a/libraries/ui-strings/src/main/res/values-sv/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sv/translations.xml @@ -445,6 +445,7 @@ Anledning:%1$s." "Utrymmen som du har skapat eller gått med i." "%1$s • %2$s" "Utrymmen" + "Säkerhet och sekretess" "Meddelandet skickades inte eftersom verifierad identitet för %1$s återställdes." "Meddelandet skickades inte eftersom %1$s inte har verifierat alla enheter." "Meddelandet skickades inte eftersom du inte har verifierat en eller flera av dina enheter." diff --git a/libraries/ui-strings/src/main/res/values-tr/translations.xml b/libraries/ui-strings/src/main/res/values-tr/translations.xml index c72f5a6139..b93df93242 100644 --- a/libraries/ui-strings/src/main/res/values-tr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-tr/translations.xml @@ -365,6 +365,7 @@ Devam etmek istediğinizden emin misiniz?" "Google Maps\'te aç" "OpenStreetMap\'te aç" "Bu konumu paylaş" + "Güvenlik ve gizlilik" "%1$s kullanıcısının doğrulanmış kimliği değiştiği için ileti gönderilmedi." "%1$s tüm cihazları doğrulamadığı için mesaj gönderilmedi." "Bir veya daha fazla cihazınızı doğrulamadığınız için mesaj gönderilmedi." 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 a4c171a21b..e67544455a 100644 --- a/libraries/ui-strings/src/main/res/values-uk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-uk/translations.xml @@ -461,6 +461,7 @@ "Простори, які ви створили або до яких приєдналися." "%1$s • %2$s" "Простори" + "Безпека й приватність" "Повідомлення не надіслано, оскільки підтверджену особистість %1$s скинуто." "Повідомлення не надіслано, оскільки %1$s перевірив не всі пристрої." "Повідомлення не надіслано, оскільки ви не підтвердили один або кілька своїх пристроїв." diff --git a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml index 3f6aa4f320..9bfee19c57 100644 --- a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml @@ -412,6 +412,7 @@ "🔐️ 在 %1$s 上加入我" "嘿,來 %1$s 和我聊天:%2$s" "%1$s Android" + "在 %1$s 的討論串" "憤怒搖晃以回報臭蟲" "螢幕截圖" "%1$s:%2$s" @@ -457,6 +458,9 @@ "%1$s • %2$s" "%1$s 空間" "空間" + "檢視成員" + "離開空間" + "安全與隱私" "因為 %1$s 的驗證身份已重設,因此未傳送訊息。" "訊息未傳送,因為 %1$s 尚未驗證所有裝置。" "因為您尚未驗證一個或多個裝置,因此未傳送訊息" diff --git a/libraries/ui-strings/src/main/res/values-zh/translations.xml b/libraries/ui-strings/src/main/res/values-zh/translations.xml index a4144eb8f0..955df716b8 100644 --- a/libraries/ui-strings/src/main/res/values-zh/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh/translations.xml @@ -452,6 +452,8 @@ "您创建或加入的空间。" "%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 8ca9198cfe..47fd764f6c 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -95,6 +95,7 @@ "Forgot password?" "Forward" "Go back" + "Go to roles & permissions" "Go to settings" "Ignore" "Invite" @@ -176,7 +177,6 @@ "Advanced settings" "an image" "Analytics" - "Fetching notifications…" "You left the room" "You were logged out of the session" "Appearance" @@ -469,6 +469,9 @@ Are you sure you want to continue?" "%1$s space" "Spaces" "View members" + "Leave space" + "Roles & permissions" + "Security & privacy" "Message not sent because %1$s’s verified identity was reset." "Message not sent because %1$s has not verified all devices." "Message not sent because you have not verified one or more of your devices." diff --git a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png index 04fcabdf4d..f7a5852846 100644 --- a/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png +++ b/screenshots/de/appnav.room.joined_LoadingRoomNodeView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf9acfcae8fa5c62a6d002ea931165e98b0b9389714f2b5a012d59fc607be388 -size 11051 +oid sha256:173c488c77b3ba1f0b8190c626e51d12d221e4b85aaa83b3fe5caf3e25fe458d +size 10189 diff --git a/screenshots/de/features.messages.impl.forward_ForwardMessagesView_Day_3_de.png b/screenshots/de/features.forward.impl_ForwardMessagesView_Day_3_de.png similarity index 100% rename from screenshots/de/features.messages.impl.forward_ForwardMessagesView_Day_3_de.png rename to screenshots/de/features.forward.impl_ForwardMessagesView_Day_3_de.png diff --git a/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_de.png b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_de.png new file mode 100644 index 0000000000..02051a08da --- /dev/null +++ b/screenshots/de/features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_de.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f8ce1dbeb1a16ab8351486310fdeabba566db4aad460fc4e1e1f7fdbe63bf7 +size 37209 diff --git a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png index 482c1c948f..8e26af29d4 100644 --- a/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png +++ b/screenshots/de/features.roomdetails.impl.members_RoomMemberListView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc00250676d4b227efd4792461f78ea76b4fb7be4200b5fddb7419679a385181 -size 47183 +oid sha256:8b5883dce06f6c481b1d20e08ba4833f67b69714c23c60b4ffe88d0dee0d4797 +size 52280 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png index 423f728994..66bcb88c50 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bd48a463398ab53d8930c31ed8351b597b98b8502a8f5b1d634b7a802b13224 -size 34842 +oid sha256:6efe4f355c6372ad031136f6f2de51c3c6132e18ddc70f558c16ee921befefa0 +size 34819 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png index 238139c94f..71f98c9def 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_1_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:01b313b5135b1c2dbc4bd808472c9d3113f4e1aba4ddea8111bae9038f7a5bfc -size 35886 +oid sha256:3af3d6c1c57c37f88f37624614a1bca7e9fcae0042482d293f2eef69a7350713 +size 35864 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png index ac2147d97f..68e0fdf009 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_2_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1f22f80f55dfbcc863e9ae1770aa5de2ea1c80f389fca3b4460b51856144cac -size 36184 +oid sha256:65fab252bd1c0920692404f0067323bfb33df9124ba5dc3ad5be5008295fbc0f +size 36158 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png index e79a267816..1c22e938cb 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_3_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6b4b1feee6815dab72dc3c48e082dcde654e7c9c611a5ecc8ebe5cbfbbc1ebb -size 65211 +oid sha256:ecb9ad959737f80864480f7fa3cce8e31a1b0c2aa84d5b49ff8b119b1aa5bc1e +size 65190 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png index 45495330f9..52dd6c93a0 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_4_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4fd28760ff4386ea8fbc45ab5d42a5d89881afbd4771c978d45e0a279bb75fc -size 65828 +oid sha256:fcdf0489810fe2035f072cdb5cc5e3c78cb3ee4e5d220148ed2721dbf324d7e6 +size 65805 diff --git a/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png b/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png index f68d2fba50..ff45615538 100644 --- a/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png +++ b/screenshots/de/features.space.impl.root_SpaceView_Day_5_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:601299d37927f03b696a2589ebcb481ae7efa13a35c49f9621f786a5f87f3130 -size 60275 +oid sha256:7a9166782d34d5388b8cdcdf270f8ac854bad44e24a30f35661af2a93cdbeb4a +size 60269 diff --git a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png index 8be502c48e..eebead276c 100644 --- a/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57800bd0df9e4eabd4ed60d9868ba4e0dd82ea2268567893252b21b3bdf769e2 -size 43078 +oid sha256:bea0bbfeeffc6e4fcfcf5c2802e415eec785f923f114afcb31f8e80f49b97f01 +size 45514 diff --git a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png index 91c9af4023..90ed906e03 100644 --- a/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:748a0d0bd122a55520ebdd673300321fb41c06b24f84baeeab17c4a253e34cc2 -size 45804 +oid sha256:be243fc9a55bd214187605b79226885382f0a92601ceeac4e6495179d982683d +size 45443 diff --git a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png index bf12cfa991..212b565f9f 100644 --- a/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png +++ b/screenshots/de/libraries.mediaviewer.impl.viewer_MediaViewerView_11_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:19e9bd753d0e325d905ec71b9f4912eb4f10264ea9a92a98346b209ec039c856 -size 42635 +oid sha256:1b8297bd3c5532a327728b0d517e6a634bf4f689df3f3e8a039814eb26f659af +size 43984 diff --git a/screenshots/html/data.js b/screenshots/html/data.js index 650364a46c..317e8e04d7 100644 --- a/screenshots/html/data.js +++ b/screenshots/html/data.js @@ -1,80 +1,80 @@ // 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",20385,], +["features.preferences.impl.about_AboutView_Day_0_en","features.preferences.impl.about_AboutView_Night_0_en",20392,], ["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",20385,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20385,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20385,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20385,], -["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20385,], -["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20385,], -["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20385,], -["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20385,], -["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20385,], -["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20385,], -["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20385,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_1_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_1_en",20392,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_2_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_2_en",20392,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_3_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_3_en",20392,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_4_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_4_en",20392,], +["features.invite.impl.acceptdecline_AcceptDeclineInviteView_Day_5_en","features.invite.impl.acceptdecline_AcceptDeclineInviteView_Night_5_en",20392,], +["features.logout.impl_AccountDeactivationView_Day_0_en","features.logout.impl_AccountDeactivationView_Night_0_en",20392,], +["features.logout.impl_AccountDeactivationView_Day_1_en","features.logout.impl_AccountDeactivationView_Night_1_en",20392,], +["features.logout.impl_AccountDeactivationView_Day_2_en","features.logout.impl_AccountDeactivationView_Night_2_en",20392,], +["features.logout.impl_AccountDeactivationView_Day_3_en","features.logout.impl_AccountDeactivationView_Night_3_en",20392,], +["features.logout.impl_AccountDeactivationView_Day_4_en","features.logout.impl_AccountDeactivationView_Night_4_en",20392,], +["features.login.impl.accountprovider_AccountProviderOtherView_Day_0_en","features.login.impl.accountprovider_AccountProviderOtherView_Night_0_en",20392,], ["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,], -["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20385,], -["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20385,], +["libraries.accountselect.impl_AccountSelectView_Day_0_en","libraries.accountselect.impl_AccountSelectView_Night_0_en",20392,], +["libraries.accountselect.impl_AccountSelectView_Day_1_en","libraries.accountselect.impl_AccountSelectView_Night_1_en",20392,], ["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",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_10_en","features.messages.impl.actionlist_ActionListViewContent_Night_10_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_11_en","features.messages.impl.actionlist_ActionListViewContent_Night_11_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_12_en","features.messages.impl.actionlist_ActionListViewContent_Night_12_en",20392,], ["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",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20385,], -["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20385,], -["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20385,], -["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20385,], -["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20385,], -["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20385,], -["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20385,], -["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20385,], -["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20385,], +["features.messages.impl.actionlist_ActionListViewContent_Day_2_en","features.messages.impl.actionlist_ActionListViewContent_Night_2_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_3_en","features.messages.impl.actionlist_ActionListViewContent_Night_3_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_4_en","features.messages.impl.actionlist_ActionListViewContent_Night_4_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_5_en","features.messages.impl.actionlist_ActionListViewContent_Night_5_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_6_en","features.messages.impl.actionlist_ActionListViewContent_Night_6_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_7_en","features.messages.impl.actionlist_ActionListViewContent_Night_7_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_8_en","features.messages.impl.actionlist_ActionListViewContent_Night_8_en",20392,], +["features.messages.impl.actionlist_ActionListViewContent_Day_9_en","features.messages.impl.actionlist_ActionListViewContent_Night_9_en",20392,], +["features.createroom.impl.addpeople_AddPeopleView_Day_0_en","features.createroom.impl.addpeople_AddPeopleView_Night_0_en",20392,], +["features.createroom.impl.addpeople_AddPeopleView_Day_1_en","features.createroom.impl.addpeople_AddPeopleView_Night_1_en",20392,], +["features.createroom.impl.addpeople_AddPeopleView_Day_2_en","features.createroom.impl.addpeople_AddPeopleView_Night_2_en",20392,], +["features.createroom.impl.addpeople_AddPeopleView_Day_3_en","features.createroom.impl.addpeople_AddPeopleView_Night_3_en",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en","",20392,], +["features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en","",20392,], +["libraries.designsystem.components.dialogs_AlertDialogContent_Dialogs_en","",20392,], +["libraries.designsystem.components.dialogs_AlertDialog_Day_0_en","libraries.designsystem.components.dialogs_AlertDialog_Night_0_en",20392,], ["libraries.designsystem.theme.components_AllIcons_Icons_en","",0,], -["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20385,], -["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20385,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20385,], -["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20385,], -["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20385,], +["features.analytics.impl_AnalyticsOptInView_Day_0_en","features.analytics.impl_AnalyticsOptInView_Night_0_en",20392,], +["features.analytics.impl_AnalyticsOptInView_Day_1_en","features.analytics.impl_AnalyticsOptInView_Night_1_en",20392,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_0_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_0_en",20392,], +["features.analytics.api.preferences_AnalyticsPreferencesView_Day_1_en","features.analytics.api.preferences_AnalyticsPreferencesView_Night_1_en",20392,], +["features.preferences.impl.analytics_AnalyticsSettingsView_Day_0_en","features.preferences.impl.analytics_AnalyticsSettingsView_Night_0_en",20392,], ["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",20385,], +["services.apperror.impl_AppErrorView_Day_0_en","services.apperror.impl_AppErrorView_Night_0_en",20392,], ["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",20385,], +["libraries.designsystem.components.async_AsyncActionView_Day_1_en","libraries.designsystem.components.async_AsyncActionView_Night_1_en",20392,], ["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",20385,], +["libraries.designsystem.components.async_AsyncActionView_Day_3_en","libraries.designsystem.components.async_AsyncActionView_Night_3_en",20392,], ["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",20385,], +["libraries.designsystem.components.async_AsyncFailure_Day_0_en","libraries.designsystem.components.async_AsyncFailure_Night_0_en",20392,], ["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",20385,], +["features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Day_0_en","features.messages.impl.messagecomposer_AttachmentSourcePickerMenu_Night_0_en",20392,], ["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,], @@ -84,19 +84,19 @@ 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","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20385,], -["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20385,], +["features.messages.impl.attachments.preview_AttachmentsView_0_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_1_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_2_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_3_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_4_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_5_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_6_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_7_en","",20392,], +["features.messages.impl.attachments.preview_AttachmentsView_8_en","",20392,], ["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",20385,], +["libraries.matrix.ui.components_AvatarActionBottomSheet_Day_0_en","libraries.matrix.ui.components_AvatarActionBottomSheet_Night_0_en",20392,], ["libraries.designsystem.components.avatar.internal_AvatarCluster_Avatars_en","",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_0_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_0_en",0,], ["libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Day_1_en","libraries.designsystem.components.avatar_AvatarRowLastOnTopRtl_Night_1_en",0,], @@ -123,22 +123,22 @@ export const screenshots = [ ["libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_Day_0_en","libraries.designsystem.modifiers_BackgroundVerticalGradientDisabled_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",20385,], +["features.home.impl.components_BatteryOptimizationBanner_Day_0_en","features.home.impl.components_BatteryOptimizationBanner_Night_0_en",20392,], ["libraries.designsystem.atomic.atoms_BetaLabel_Day_0_en","libraries.designsystem.atomic.atoms_BetaLabel_Night_0_en",0,], ["libraries.designsystem.components_BigIcon_Day_0_en","libraries.designsystem.components_BigIcon_Night_0_en",0,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20385,], -["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20385,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_0_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_0_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_1_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_1_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_2_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_2_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_3_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_3_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_4_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_4_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_5_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_5_en",20392,], +["features.preferences.impl.blockedusers_BlockedUsersView_Day_6_en","features.preferences.impl.blockedusers_BlockedUsersView_Night_6_en",20392,], ["libraries.designsystem.theme.components_BottomSheetDragHandle_Day_0_en","libraries.designsystem.theme.components_BottomSheetDragHandle_Night_0_en",0,], -["features.rageshake.impl.bugreport_BugReportViewDay_0_en","",20385,], -["features.rageshake.impl.bugreport_BugReportViewDay_1_en","",20385,], -["features.rageshake.impl.bugreport_BugReportViewDay_2_en","",20385,], -["features.rageshake.impl.bugreport_BugReportViewDay_3_en","",20385,], -["features.rageshake.impl.bugreport_BugReportViewDay_4_en","",20385,], +["features.rageshake.impl.bugreport_BugReportViewDay_0_en","",20392,], +["features.rageshake.impl.bugreport_BugReportViewDay_1_en","",20392,], +["features.rageshake.impl.bugreport_BugReportViewDay_2_en","",20392,], +["features.rageshake.impl.bugreport_BugReportViewDay_3_en","",20392,], +["features.rageshake.impl.bugreport_BugReportViewDay_4_en","",20392,], ["features.rageshake.impl.bugreport_BugReportViewNight_0_en","",0,], ["features.rageshake.impl.bugreport_BugReportViewNight_1_en","",0,], ["features.rageshake.impl.bugreport_BugReportViewNight_2_en","",0,], @@ -148,125 +148,125 @@ export const screenshots = [ ["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",20385,], -["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20385,], +["features.messages.impl.timeline.components_CallMenuItem_Day_2_en","features.messages.impl.timeline.components_CallMenuItem_Night_2_en",20392,], +["features.messages.impl.timeline.components_CallMenuItem_Day_3_en","features.messages.impl.timeline.components_CallMenuItem_Night_3_en",20392,], ["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",20385,], -["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20385,], -["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20385,], -["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20385,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20385,], -["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20385,], +["features.call.impl.ui_CallScreenView_Day_1_en","features.call.impl.ui_CallScreenView_Night_1_en",20392,], +["features.call.impl.ui_CallScreenView_Day_2_en","features.call.impl.ui_CallScreenView_Night_2_en",20392,], +["features.call.impl.ui_CallScreenView_Day_3_en","features.call.impl.ui_CallScreenView_Night_3_en",20392,], +["libraries.textcomposer_CaptionWarningBottomSheet_Day_0_en","libraries.textcomposer_CaptionWarningBottomSheet_Night_0_en",20392,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_0_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_0_en",20392,], +["features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Day_1_en","features.login.impl.screens.changeaccountprovider_ChangeAccountProviderView_Night_1_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_0_en","features.changeroommemberroles.impl_ChangeRolesView_Night_0_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_10_en","features.changeroommemberroles.impl_ChangeRolesView_Night_10_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_11_en","features.changeroommemberroles.impl_ChangeRolesView_Night_11_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_12_en","features.changeroommemberroles.impl_ChangeRolesView_Night_12_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_1_en","features.changeroommemberroles.impl_ChangeRolesView_Night_1_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_2_en","features.changeroommemberroles.impl_ChangeRolesView_Night_2_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_3_en","features.changeroommemberroles.impl_ChangeRolesView_Night_3_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_4_en","features.changeroommemberroles.impl_ChangeRolesView_Night_4_en",20392,], ["features.changeroommemberroles.impl_ChangeRolesView_Day_5_en","features.changeroommemberroles.impl_ChangeRolesView_Night_5_en",0,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20385,], -["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20385,], -["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20385,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_6_en","features.changeroommemberroles.impl_ChangeRolesView_Night_6_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_7_en","features.changeroommemberroles.impl_ChangeRolesView_Night_7_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_8_en","features.changeroommemberroles.impl_ChangeRolesView_Night_8_en",20392,], +["features.changeroommemberroles.impl_ChangeRolesView_Day_9_en","features.changeroommemberroles.impl_ChangeRolesView_Night_9_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en",20392,], +["features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en",20392,], ["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",20385,], -["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20385,], -["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20385,], -["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20385,], +["features.login.impl.changeserver_ChangeServerView_Day_1_en","features.login.impl.changeserver_ChangeServerView_Night_1_en",20392,], +["features.login.impl.changeserver_ChangeServerView_Day_2_en","features.login.impl.changeserver_ChangeServerView_Night_2_en",20392,], +["features.login.impl.changeserver_ChangeServerView_Day_3_en","features.login.impl.changeserver_ChangeServerView_Night_3_en",20392,], +["features.login.impl.changeserver_ChangeServerView_Day_4_en","features.login.impl.changeserver_ChangeServerView_Night_4_en",20392,], ["libraries.matrix.ui.components_CheckableResolvedUserRow_en","",0,], -["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20385,], +["libraries.matrix.ui.components_CheckableUnresolvedUserRow_en","",20392,], ["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",20385,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20385,], -["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20385,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20385,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20385,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20385,], -["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20385,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_0_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_0_en",20392,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_1_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_1_en",20392,], +["features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Day_2_en","features.login.impl.screens.chooseaccountprovider_ChooseAccountProviderView_Night_2_en",20392,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_0_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_0_en",20392,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_1_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_1_en",20392,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_2_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_2_en",20392,], +["features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_3_en","features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_3_en",20392,], ["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",20385,], -["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20385,], -["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20385,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_0_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_0_en",20392,], +["libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Day_1_en","libraries.designsystem.atomic.molecules_ComposerAlertMolecule_Night_1_en",20392,], +["libraries.textcomposer_ComposerModeView_Day_0_en","libraries.textcomposer_ComposerModeView_Night_0_en",20392,], ["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","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20385,], -["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20385,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20385,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20385,], -["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20385,], -["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20385,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_0_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_1_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_2_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_3_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_4_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewDark_5_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_0_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_1_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_2_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_3_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_4_en","",20392,], +["features.createroom.impl.configureroom_ConfigureRoomViewLight_5_en","",20392,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_0_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_0_en",20392,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_1_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_1_en",20392,], +["features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Day_2_en","features.login.impl.screens.confirmaccountprovider_ConfirmAccountProviderView_Night_2_en",20392,], +["features.home.impl.components_ConfirmRecoveryKeyBanner_Day_0_en","features.home.impl.components_ConfirmRecoveryKeyBanner_Night_0_en",20392,], ["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_ConnectivityIndicator_Day_0_en","features.networkmonitor.api.ui_ConnectivityIndicator_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",20385,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20385,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20385,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20385,], -["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20385,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20385,], -["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20385,], -["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20385,], -["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20385,], -["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20385,], -["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20385,], -["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20385,], -["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20385,], -["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20385,], -["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20385,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20385,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20385,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20385,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20385,], -["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20385,], +["features.rageshake.api.crash_CrashDetectionView_Day_0_en","features.rageshake.api.crash_CrashDetectionView_Night_0_en",20392,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_0_en","features.login.impl.screens.createaccount_CreateAccountView_Night_0_en",20392,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_1_en","features.login.impl.screens.createaccount_CreateAccountView_Night_1_en",20392,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_2_en","features.login.impl.screens.createaccount_CreateAccountView_Night_2_en",20392,], +["features.login.impl.screens.createaccount_CreateAccountView_Day_3_en","features.login.impl.screens.createaccount_CreateAccountView_Night_3_en",20392,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_0_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_0_en",20392,], +["libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Day_1_en","libraries.matrix.ui.components_CreateDmConfirmationBottomSheet_Night_1_en",20392,], +["features.poll.impl.create_CreatePollView_Day_0_en","features.poll.impl.create_CreatePollView_Night_0_en",20392,], +["features.poll.impl.create_CreatePollView_Day_1_en","features.poll.impl.create_CreatePollView_Night_1_en",20392,], +["features.poll.impl.create_CreatePollView_Day_2_en","features.poll.impl.create_CreatePollView_Night_2_en",20392,], +["features.poll.impl.create_CreatePollView_Day_3_en","features.poll.impl.create_CreatePollView_Night_3_en",20392,], +["features.poll.impl.create_CreatePollView_Day_4_en","features.poll.impl.create_CreatePollView_Night_4_en",20392,], +["features.poll.impl.create_CreatePollView_Day_5_en","features.poll.impl.create_CreatePollView_Night_5_en",20392,], +["features.poll.impl.create_CreatePollView_Day_6_en","features.poll.impl.create_CreatePollView_Night_6_en",20392,], +["features.poll.impl.create_CreatePollView_Day_7_en","features.poll.impl.create_CreatePollView_Night_7_en",20392,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_0_en","",20392,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_1_en","",20392,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_2_en","",20392,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_3_en","",20392,], +["libraries.dateformatter.impl.previews_DateFormatterModeView_4_en","",20392,], ["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","",20385,], -["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20385,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20385,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20385,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20385,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20385,], -["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20385,], +["libraries.designsystem.theme.components.previews_DatePickerDark_DateTime_pickers_en","",20392,], +["libraries.designsystem.theme.components.previews_DatePickerLight_DateTime_pickers_en","",20392,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_0_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_0_en",20392,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_1_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_1_en",20392,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_2_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_2_en",20392,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_3_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_3_en",20392,], +["features.invite.impl.declineandblock_DeclineAndBlockView_Day_4_en","features.invite.impl.declineandblock_DeclineAndBlockView_Night_4_en",20392,], ["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",20385,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20385,], -["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20385,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_1_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_1_en",20392,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_2_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_2_en",20392,], +["features.logout.impl.direct_DefaultDirectLogoutView_Day_3_en","features.logout.impl.direct_DefaultDirectLogoutView_Night_3_en",20392,], ["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",20385,], +["features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Day_0_en","features.preferences.impl.notifications.edit_DefaultNotificationSettingOption_Night_0_en",20392,], ["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",20385,], -["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20385,], -["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20385,], -["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20385,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20385,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20385,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20385,], -["features.preferences.impl.developer_DeveloperSettingsView_Day_3_en","features.preferences.impl.developer_DeveloperSettingsView_Night_3_en",20385,], +["features.licenses.impl.list_DependencyLicensesListView_Day_0_en","features.licenses.impl.list_DependencyLicensesListView_Night_0_en",20392,], +["features.licenses.impl.list_DependencyLicensesListView_Day_1_en","features.licenses.impl.list_DependencyLicensesListView_Night_1_en",20392,], +["features.licenses.impl.list_DependencyLicensesListView_Day_2_en","features.licenses.impl.list_DependencyLicensesListView_Night_2_en",20392,], +["features.licenses.impl.list_DependencyLicensesListView_Day_3_en","features.licenses.impl.list_DependencyLicensesListView_Night_3_en",20392,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_0_en","features.preferences.impl.developer_DeveloperSettingsView_Night_0_en",20392,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_1_en","features.preferences.impl.developer_DeveloperSettingsView_Night_1_en",20392,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_2_en","features.preferences.impl.developer_DeveloperSettingsView_Night_2_en",20392,], +["features.preferences.impl.developer_DeveloperSettingsView_Day_3_en","features.preferences.impl.developer_DeveloperSettingsView_Night_3_en",20392,], ["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,], @@ -281,18 +281,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",20385,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20385,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20385,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20385,], -["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20385,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20385,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20385,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20385,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20385,], -["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20385,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20385,], -["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20385,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_0_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_0_en",20392,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_1_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_1_en",20392,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_2_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_2_en",20392,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_3_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_3_en",20392,], +["features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Day_4_en","features.preferences.impl.notifications.edit_EditDefaultNotificationSettingView_Night_4_en",20392,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_0_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_0_en",20392,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_1_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_1_en",20392,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_2_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_2_en",20392,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_3_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_3_en",20392,], +["features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Day_4_en","features.roomdetails.impl.securityandprivacy.editroomaddress_EditRoomAddressView_Night_4_en",20392,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_0_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_0_en",20392,], +["features.preferences.impl.user.editprofile_EditUserProfileView_Day_1_en","features.preferences.impl.user.editprofile_EditUserProfileView_Night_1_en",20392,], ["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,], @@ -303,14 +303,14 @@ export const screenshots = [ ["libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Day_0_en","libraries.designsystem.atomic.atoms_ElementLogoAtomMediumNoBlurShadow_Night_0_en",0,], ["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.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20385,], -["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20385,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_0_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_0_en",20392,], +["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_1_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_1_en",20392,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_2_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_2_en",0,], ["features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Day_3_en","features.messages.impl.timeline.components.customreaction.picker_EmojiPicker_Night_3_en",0,], ["libraries.ui.common.nodes_EmptyView_Day_0_en","libraries.ui.common.nodes_EmptyView_Night_0_en",0,], -["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20385,], -["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20385,], -["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20385,], +["libraries.designsystem.components.dialogs_ErrorDialogContent_Dialogs_en","",20392,], +["libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialogWithDoNotShowAgain_Night_0_en",20392,], +["libraries.designsystem.components.dialogs_ErrorDialog_Day_0_en","libraries.designsystem.components.dialogs_ErrorDialog_Night_0_en",20392,], ["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,], @@ -329,43 +329,43 @@ 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",20385,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20385,], -["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20385,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_1_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_1_en",20392,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_2_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_2_en",20392,], +["features.messages.impl.timeline.focus_FocusRequestStateView_Day_3_en","features.messages.impl.timeline.focus_FocusRequestStateView_Night_3_en",20392,], ["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",20385,], -["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20385,], +["features.forward.impl_ForwardMessagesView_Day_0_en","features.forward.impl_ForwardMessagesView_Night_0_en",0,], +["features.forward.impl_ForwardMessagesView_Day_1_en","features.forward.impl_ForwardMessagesView_Night_1_en",0,], +["features.forward.impl_ForwardMessagesView_Day_2_en","features.forward.impl_ForwardMessagesView_Night_2_en",0,], +["features.forward.impl_ForwardMessagesView_Day_3_en","features.forward.impl_ForwardMessagesView_Night_3_en",20395,], +["features.home.impl.components_FullScreenIntentPermissionBanner_Day_0_en","features.home.impl.components_FullScreenIntentPermissionBanner_Night_0_en",20392,], ["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.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20385,], -["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20385,], -["features.home.impl.components_HomeTopBarMultiAccount_Day_0_en","features.home.impl.components_HomeTopBarMultiAccount_Night_0_en",20388,], -["features.home.impl.components_HomeTopBarWithIndicator_Day_0_en","features.home.impl.components_HomeTopBarWithIndicator_Night_0_en",20388,], -["features.home.impl.components_HomeTopBar_Day_0_en","features.home.impl.components_HomeTopBar_Night_0_en",20388,], +["features.home.impl.spaces_HomeSpacesView_Day_0_en","features.home.impl.spaces_HomeSpacesView_Night_0_en",20392,], +["features.home.impl.spaces_HomeSpacesView_Day_1_en","features.home.impl.spaces_HomeSpacesView_Night_1_en",20392,], +["features.home.impl.components_HomeTopBarMultiAccount_Day_0_en","features.home.impl.components_HomeTopBarMultiAccount_Night_0_en",20392,], +["features.home.impl.components_HomeTopBarWithIndicator_Day_0_en","features.home.impl.components_HomeTopBarWithIndicator_Night_0_en",20392,], +["features.home.impl.components_HomeTopBar_Day_0_en","features.home.impl.components_HomeTopBar_Night_0_en",20392,], ["features.home.impl_HomeViewA11y_en","",0,], -["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20385,], -["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20385,], +["features.home.impl_HomeView_Day_0_en","features.home.impl_HomeView_Night_0_en",20392,], +["features.home.impl_HomeView_Day_10_en","features.home.impl_HomeView_Night_10_en",20392,], ["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",20385,], -["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20385,], -["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20385,], -["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20385,], -["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20385,], -["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20385,], -["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20385,], -["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20385,], -["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20385,], -["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20385,], -["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20385,], -["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20385,], +["features.home.impl_HomeView_Day_13_en","features.home.impl_HomeView_Night_13_en",20392,], +["features.home.impl_HomeView_Day_14_en","features.home.impl_HomeView_Night_14_en",20392,], +["features.home.impl_HomeView_Day_15_en","features.home.impl_HomeView_Night_15_en",20392,], +["features.home.impl_HomeView_Day_1_en","features.home.impl_HomeView_Night_1_en",20392,], +["features.home.impl_HomeView_Day_2_en","features.home.impl_HomeView_Night_2_en",20392,], +["features.home.impl_HomeView_Day_3_en","features.home.impl_HomeView_Night_3_en",20392,], +["features.home.impl_HomeView_Day_4_en","features.home.impl_HomeView_Night_4_en",20392,], +["features.home.impl_HomeView_Day_5_en","features.home.impl_HomeView_Night_5_en",20392,], +["features.home.impl_HomeView_Day_6_en","features.home.impl_HomeView_Night_6_en",20392,], +["features.home.impl_HomeView_Day_7_en","features.home.impl_HomeView_Night_7_en",20392,], +["features.home.impl_HomeView_Day_8_en","features.home.impl_HomeView_Night_8_en",20392,], +["features.home.impl_HomeView_Day_9_en","features.home.impl_HomeView_Night_9_en",20392,], ["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,], @@ -378,8 +378,8 @@ export const screenshots = [ ["appicon.enterprise_Icon_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",20385,], -["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20385,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_1_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_1_en",20392,], +["features.messages.impl.crypto.identity_IdentityChangeStateView_Day_2_en","features.messages.impl.crypto.identity_IdentityChangeStateView_Night_2_en",20392,], ["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,], @@ -387,109 +387,109 @@ 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",20385,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_4_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_4_en",20392,], ["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",20385,], +["libraries.matrix.ui.messages.reply_InReplyToView_Day_8_en","libraries.matrix.ui.messages.reply_InReplyToView_Night_8_en",20392,], ["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",20385,], +["features.call.impl.ui_IncomingCallScreen_Day_0_en","features.call.impl.ui_IncomingCallScreen_Night_0_en",20392,], ["features.verifysession.impl.incoming_IncomingVerificationViewA11y_en","",0,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20385,], -["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20385,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_0_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_0_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_10_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_10_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_11_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_11_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_12_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_12_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_13_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_13_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_1_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_1_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_2_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_2_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_3_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_3_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_4_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_4_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_5_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_5_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_6_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_6_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_7_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_7_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_8_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_8_en",20392,], +["features.verifysession.impl.incoming_IncomingVerificationView_Day_9_en","features.verifysession.impl.incoming_IncomingVerificationView_Night_9_en",20392,], ["libraries.designsystem.atomic.molecules_InfoListItemMolecule_Day_0_en","libraries.designsystem.atomic.molecules_InfoListItemMolecule_Night_0_en",0,], ["libraries.designsystem.atomic.organisms_InfoListOrganism_Day_0_en","libraries.designsystem.atomic.organisms_InfoListOrganism_Night_0_en",0,], ["libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Day_0_en","libraries.matrix.ui.media_InitialsAvatarBitmapGenerator_Night_0_en",0,], -["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20385,], -["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20385,], -["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20385,], +["features.call.impl.ui_InvalidAudioDeviceDialog_Day_0_en","features.call.impl.ui_InvalidAudioDeviceDialog_Night_0_en",20392,], +["features.invitepeople.impl_InvitePeopleView_Day_0_en","features.invitepeople.impl_InvitePeopleView_Night_0_en",20392,], +["features.invitepeople.impl_InvitePeopleView_Day_1_en","features.invitepeople.impl_InvitePeopleView_Night_1_en",20392,], ["features.invitepeople.impl_InvitePeopleView_Day_2_en","features.invitepeople.impl_InvitePeopleView_Night_2_en",0,], ["features.invitepeople.impl_InvitePeopleView_Day_3_en","features.invitepeople.impl_InvitePeopleView_Night_3_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20385,], -["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20385,], -["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20385,], -["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_4_en","features.invitepeople.impl_InvitePeopleView_Night_4_en",20392,], +["features.invitepeople.impl_InvitePeopleView_Day_5_en","features.invitepeople.impl_InvitePeopleView_Night_5_en",20392,], +["features.invitepeople.impl_InvitePeopleView_Day_6_en","features.invitepeople.impl_InvitePeopleView_Night_6_en",20392,], +["features.invitepeople.impl_InvitePeopleView_Day_7_en","features.invitepeople.impl_InvitePeopleView_Night_7_en",20392,], ["features.invitepeople.impl_InvitePeopleView_Day_8_en","features.invitepeople.impl_InvitePeopleView_Night_8_en",0,], -["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20385,], -["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20385,], -["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20385,], +["features.invitepeople.impl_InvitePeopleView_Day_9_en","features.invitepeople.impl_InvitePeopleView_Night_9_en",20392,], +["libraries.matrix.ui.components_InviteSenderView_Day_0_en","libraries.matrix.ui.components_InviteSenderView_Night_0_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_0_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_0_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_1_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_1_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_2_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_2_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_3_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_3_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_4_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_4_en",20392,], +["features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Day_5_en","features.startchat.impl.joinbyaddress_JoinRoomByAddressView_Night_5_en",20392,], ["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",20385,], -["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20385,], -["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20385,], -["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20385,], -["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20385,], +["features.joinroom.impl_JoinRoomView_Day_10_en","features.joinroom.impl_JoinRoomView_Night_10_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_11_en","features.joinroom.impl_JoinRoomView_Night_11_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_12_en","features.joinroom.impl_JoinRoomView_Night_12_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_13_en","features.joinroom.impl_JoinRoomView_Night_13_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_14_en","features.joinroom.impl_JoinRoomView_Night_14_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_15_en","features.joinroom.impl_JoinRoomView_Night_15_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_16_en","features.joinroom.impl_JoinRoomView_Night_16_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_1_en","features.joinroom.impl_JoinRoomView_Night_1_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_2_en","features.joinroom.impl_JoinRoomView_Night_2_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_3_en","features.joinroom.impl_JoinRoomView_Night_3_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_4_en","features.joinroom.impl_JoinRoomView_Night_4_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_5_en","features.joinroom.impl_JoinRoomView_Night_5_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_6_en","features.joinroom.impl_JoinRoomView_Night_6_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_7_en","features.joinroom.impl_JoinRoomView_Night_7_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_8_en","features.joinroom.impl_JoinRoomView_Night_8_en",20392,], +["features.joinroom.impl_JoinRoomView_Day_9_en","features.joinroom.impl_JoinRoomView_Night_9_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_0_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_0_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_1_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_1_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_2_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_2_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_3_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_3_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_4_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_4_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_5_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_5_en",20392,], +["features.knockrequests.impl.banner_KnockRequestsBannerView_Day_6_en","features.knockrequests.impl.banner_KnockRequestsBannerView_Night_6_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_0_en","features.knockrequests.impl.list_KnockRequestsListView_Night_0_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_10_en","features.knockrequests.impl.list_KnockRequestsListView_Night_10_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_1_en","features.knockrequests.impl.list_KnockRequestsListView_Night_1_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_2_en","features.knockrequests.impl.list_KnockRequestsListView_Night_2_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_3_en","features.knockrequests.impl.list_KnockRequestsListView_Night_3_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_4_en","features.knockrequests.impl.list_KnockRequestsListView_Night_4_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_5_en","features.knockrequests.impl.list_KnockRequestsListView_Night_5_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_6_en","features.knockrequests.impl.list_KnockRequestsListView_Night_6_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_7_en","features.knockrequests.impl.list_KnockRequestsListView_Night_7_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_8_en","features.knockrequests.impl.list_KnockRequestsListView_Night_8_en",20392,], +["features.knockrequests.impl.list_KnockRequestsListView_Day_9_en","features.knockrequests.impl.list_KnockRequestsListView_Night_9_en",20392,], ["libraries.designsystem.components_LabelledCheckbox_Toggles_en","",0,], -["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20385,], -["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20385,], +["features.preferences.impl.labs_LabsView_Day_0_en","features.preferences.impl.labs_LabsView_Night_0_en",20392,], +["features.preferences.impl.labs_LabsView_Day_1_en","features.preferences.impl.labs_LabsView_Night_1_en",20392,], ["features.leaveroom.impl_LeaveRoomView_Day_0_en","features.leaveroom.impl_LeaveRoomView_Night_0_en",0,], -["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20385,], -["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20385,], -["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20385,], +["features.leaveroom.impl_LeaveRoomView_Day_1_en","features.leaveroom.impl_LeaveRoomView_Night_1_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_2_en","features.leaveroom.impl_LeaveRoomView_Night_2_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_3_en","features.leaveroom.impl_LeaveRoomView_Night_3_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_4_en","features.leaveroom.impl_LeaveRoomView_Night_4_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_5_en","features.leaveroom.impl_LeaveRoomView_Night_5_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_6_en","features.leaveroom.impl_LeaveRoomView_Night_6_en",20392,], +["features.leaveroom.impl_LeaveRoomView_Day_7_en","features.leaveroom.impl_LeaveRoomView_Night_7_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_0_en","features.space.impl.leave_LeaveSpaceView_Night_0_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_1_en","features.space.impl.leave_LeaveSpaceView_Night_1_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_2_en","features.space.impl.leave_LeaveSpaceView_Night_2_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_3_en","features.space.impl.leave_LeaveSpaceView_Night_3_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_4_en","features.space.impl.leave_LeaveSpaceView_Night_4_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_5_en","features.space.impl.leave_LeaveSpaceView_Night_5_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_6_en","features.space.impl.leave_LeaveSpaceView_Night_6_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_7_en","features.space.impl.leave_LeaveSpaceView_Night_7_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_8_en","features.space.impl.leave_LeaveSpaceView_Night_8_en",20392,], +["features.space.impl.leave_LeaveSpaceView_Day_9_en","features.space.impl.leave_LeaveSpaceView_Night_9_en",20392,], ["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",20385,], +["features.messages.impl.link_LinkView_Day_1_en","features.messages.impl.link_LinkView_Night_1_en",20392,], ["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,], @@ -544,37 +544,37 @@ 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",20385,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20385,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20385,], -["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20385,], +["appnav.room.joined_LoadingRoomNodeView_Day_1_en","appnav.room.joined_LoadingRoomNodeView_Night_1_en",20392,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_0_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_0_en",20392,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_1_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_1_en",20392,], +["features.lockscreen.impl.settings_LockScreenSettingsView_Day_2_en","features.lockscreen.impl.settings_LockScreenSettingsView_Night_2_en",20392,], ["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",20385,], -["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20385,], -["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20385,], -["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20385,], -["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20385,], -["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20385,], -["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20385,], -["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20385,], -["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20385,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20385,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20385,], -["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20385,], -["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20385,], -["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20385,], -["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20385,], -["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20385,], -["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20385,], -["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20385,], -["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20385,], -["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20385,], -["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20385,], -["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20385,], -["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20385,], -["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20385,], +["appnav.loggedin_LoggedInView_Day_1_en","appnav.loggedin_LoggedInView_Night_1_en",20392,], +["appnav.loggedin_LoggedInView_Day_2_en","appnav.loggedin_LoggedInView_Night_2_en",20392,], +["appnav.loggedin_LoggedInView_Day_3_en","appnav.loggedin_LoggedInView_Night_3_en",20392,], +["features.login.impl.login_LoginModeView_Day_0_en","features.login.impl.login_LoginModeView_Night_0_en",20392,], +["features.login.impl.login_LoginModeView_Day_1_en","features.login.impl.login_LoginModeView_Night_1_en",20392,], +["features.login.impl.login_LoginModeView_Day_2_en","features.login.impl.login_LoginModeView_Night_2_en",20392,], +["features.login.impl.login_LoginModeView_Day_3_en","features.login.impl.login_LoginModeView_Night_3_en",20392,], +["features.login.impl.login_LoginModeView_Day_4_en","features.login.impl.login_LoginModeView_Night_4_en",20392,], +["features.login.impl.login_LoginModeView_Day_5_en","features.login.impl.login_LoginModeView_Night_5_en",20392,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_0_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_0_en",20392,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_1_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_1_en",20392,], +["features.login.impl.screens.loginpassword_LoginPasswordView_Day_2_en","features.login.impl.screens.loginpassword_LoginPasswordView_Night_2_en",20392,], +["features.logout.impl_LogoutView_Day_0_en","features.logout.impl_LogoutView_Night_0_en",20392,], +["features.logout.impl_LogoutView_Day_10_en","features.logout.impl_LogoutView_Night_10_en",20392,], +["features.logout.impl_LogoutView_Day_11_en","features.logout.impl_LogoutView_Night_11_en",20392,], +["features.logout.impl_LogoutView_Day_1_en","features.logout.impl_LogoutView_Night_1_en",20392,], +["features.logout.impl_LogoutView_Day_2_en","features.logout.impl_LogoutView_Night_2_en",20392,], +["features.logout.impl_LogoutView_Day_3_en","features.logout.impl_LogoutView_Night_3_en",20392,], +["features.logout.impl_LogoutView_Day_4_en","features.logout.impl_LogoutView_Night_4_en",20392,], +["features.logout.impl_LogoutView_Day_5_en","features.logout.impl_LogoutView_Night_5_en",20392,], +["features.logout.impl_LogoutView_Day_6_en","features.logout.impl_LogoutView_Night_6_en",20392,], +["features.logout.impl_LogoutView_Day_7_en","features.logout.impl_LogoutView_Night_7_en",20392,], +["features.logout.impl_LogoutView_Day_8_en","features.logout.impl_LogoutView_Night_8_en",20392,], +["features.logout.impl_LogoutView_Day_9_en","features.logout.impl_LogoutView_Night_9_en",20392,], ["libraries.designsystem.components.button_MainActionButton_Buttons_en","",0,], -["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20385,], +["libraries.textcomposer_MarkdownTextComposerEdit_Day_0_en","libraries.textcomposer_MarkdownTextComposerEdit_Night_0_en",20392,], ["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,], @@ -587,22 +587,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",20385,], -["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20385,], +["libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDeleteConfirmationBottomSheet_Night_0_en",20392,], +["libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Day_0_en","libraries.mediaviewer.impl.details_MediaDetailsBottomSheet_Night_0_en",20392,], ["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",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20385,], -["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20385,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_0_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_0_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_10_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_10_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_11_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_11_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_12_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_12_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_1_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_1_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_2_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_2_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_3_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_3_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_4_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_4_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_5_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_5_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_6_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_6_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_7_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_7_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_8_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_8_en",20392,], +["libraries.mediaviewer.impl.gallery_MediaGalleryView_Day_9_en","libraries.mediaviewer.impl.gallery_MediaGalleryView_Night_9_en",20392,], ["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,], @@ -610,14 +610,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","",20385,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20385,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_11_en","",20392,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_12_en","",20392,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_13_en","",0,], -["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20385,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_14_en","",20392,], ["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","",20385,], +["libraries.mediaviewer.impl.viewer_MediaViewerView_2_en","",20392,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_3_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_4_en","",0,], ["libraries.mediaviewer.impl.viewer_MediaViewerView_5_en","",0,], @@ -631,7 +631,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",20385,], +["features.messages.impl.messagecomposer_MessageComposerView_Day_0_en","features.messages.impl.messagecomposer_MessageComposerView_Night_0_en",20392,], ["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,], @@ -640,7 +640,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",20385,], +["features.messages.impl.timeline.components_MessageShieldView_Day_0_en","features.messages.impl.timeline.components_MessageShieldView_Night_0_en",20392,], ["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,], @@ -648,137 +648,137 @@ 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.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20385,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20385,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20385,], -["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20385,], -["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20385,], -["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20385,], -["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20385,], -["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20385,], -["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20385,], -["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20385,], -["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20385,], -["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20385,], -["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20385,], -["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20385,], +["features.messages.impl.topbars_MessagesViewTopBar_Day_0_en","features.messages.impl.topbars_MessagesViewTopBar_Night_0_en",20392,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_0_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_0_en",20392,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_1_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_1_en",20392,], +["features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Day_2_en","features.messages.impl.crypto.identity_MessagesViewWithIdentityChange_Night_2_en",20392,], +["features.messages.impl_MessagesView_Day_0_en","features.messages.impl_MessagesView_Night_0_en",20392,], +["features.messages.impl_MessagesView_Day_1_en","features.messages.impl_MessagesView_Night_1_en",20392,], +["features.messages.impl_MessagesView_Day_2_en","features.messages.impl_MessagesView_Night_2_en",20392,], +["features.messages.impl_MessagesView_Day_3_en","features.messages.impl_MessagesView_Night_3_en",20392,], +["features.messages.impl_MessagesView_Day_4_en","features.messages.impl_MessagesView_Night_4_en",20392,], +["features.messages.impl_MessagesView_Day_5_en","features.messages.impl_MessagesView_Night_5_en",20392,], +["features.messages.impl_MessagesView_Day_6_en","features.messages.impl_MessagesView_Night_6_en",20392,], +["features.messages.impl_MessagesView_Day_7_en","features.messages.impl_MessagesView_Night_7_en",20392,], +["features.messages.impl_MessagesView_Day_8_en","features.messages.impl_MessagesView_Night_8_en",20392,], +["features.messages.impl_MessagesView_Day_9_en","features.messages.impl_MessagesView_Night_9_en",20392,], ["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",20385,], +["features.migration.impl_MigrationView_Day_1_en","features.migration.impl_MigrationView_Night_1_en",20392,], ["libraries.designsystem.theme.components_ModalBottomSheetDark_Bottom_Sheets_en","",0,], ["libraries.designsystem.theme.components_ModalBottomSheetLight_Bottom_Sheets_en","",0,], ["appicon.element_MonochromeIcon_en","",0,], -["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20385,], +["features.preferences.impl.root_MultiAccountSection_Day_0_en","features.preferences.impl.root_MultiAccountSection_Night_0_en",20392,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialogContent_Dialogs_en","",0,], ["libraries.designsystem.components.dialogs_MultipleSelectionDialog_Day_0_en","libraries.designsystem.components.dialogs_MultipleSelectionDialog_Night_0_en",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelectedTrailingContent_Multiple_selection_List_item_-_selection_in_trailing_content_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItemSelected_Multiple_selection_List_item_-_selection_in_supporting_text_List_items_en","",0,], ["libraries.designsystem.components.list_MutipleSelectionListItem_Multiple_selection_List_item_-_no_selection_List_items_en","",0,], ["libraries.designsystem.theme.components_NavigationBar_App_Bars_en","",0,], -["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20385,], -["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20385,], -["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20385,], +["features.home.impl.components_NewNotificationSoundBanner_Day_0_en","features.home.impl.components_NewNotificationSoundBanner_Night_0_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_0_en","features.preferences.impl.notifications_NotificationSettingsView_Night_0_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_10_en","features.preferences.impl.notifications_NotificationSettingsView_Night_10_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_11_en","features.preferences.impl.notifications_NotificationSettingsView_Night_11_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_12_en","features.preferences.impl.notifications_NotificationSettingsView_Night_12_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_13_en","features.preferences.impl.notifications_NotificationSettingsView_Night_13_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_1_en","features.preferences.impl.notifications_NotificationSettingsView_Night_1_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_2_en","features.preferences.impl.notifications_NotificationSettingsView_Night_2_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_3_en","features.preferences.impl.notifications_NotificationSettingsView_Night_3_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_4_en","features.preferences.impl.notifications_NotificationSettingsView_Night_4_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_5_en","features.preferences.impl.notifications_NotificationSettingsView_Night_5_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_6_en","features.preferences.impl.notifications_NotificationSettingsView_Night_6_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_7_en","features.preferences.impl.notifications_NotificationSettingsView_Night_7_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_8_en","features.preferences.impl.notifications_NotificationSettingsView_Night_8_en",20392,], +["features.preferences.impl.notifications_NotificationSettingsView_Day_9_en","features.preferences.impl.notifications_NotificationSettingsView_Night_9_en",20392,], +["features.ftue.impl.notifications_NotificationsOptInView_Day_0_en","features.ftue.impl.notifications_NotificationsOptInView_Night_0_en",20392,], ["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",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20385,], -["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20385,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_0_en","features.login.impl.screens.onboarding_OnBoardingView_Night_0_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_1_en","features.login.impl.screens.onboarding_OnBoardingView_Night_1_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_2_en","features.login.impl.screens.onboarding_OnBoardingView_Night_2_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_3_en","features.login.impl.screens.onboarding_OnBoardingView_Night_3_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_4_en","features.login.impl.screens.onboarding_OnBoardingView_Night_4_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_5_en","features.login.impl.screens.onboarding_OnBoardingView_Night_5_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_6_en","features.login.impl.screens.onboarding_OnBoardingView_Night_6_en",20392,], +["features.login.impl.screens.onboarding_OnBoardingView_Day_7_en","features.login.impl.screens.onboarding_OnBoardingView_Night_7_en",20392,], ["libraries.designsystem.background_OnboardingBackground_Day_0_en","libraries.designsystem.background_OnboardingBackground_Night_0_en",0,], -["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20385,], +["libraries.matrix.ui.components_OrganizationHeader_Day_0_en","libraries.matrix.ui.components_OrganizationHeader_Night_0_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_0_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_0_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_10_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_10_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_11_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_11_en",20392,], ["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",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20385,], -["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20385,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_1_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_1_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_2_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_2_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_3_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_3_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_4_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_4_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_5_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_5_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_6_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_6_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_7_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_7_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_8_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_8_en",20392,], +["features.verifysession.impl.outgoing_OutgoingVerificationView_Day_9_en","features.verifysession.impl.outgoing_OutgoingVerificationView_Night_9_en",20392,], ["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",20385,], -["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20385,], -["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20385,], -["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20385,], -["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20385,], -["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20385,], +["libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Day_0_en","libraries.mediaviewer.impl.local.pdf_PdfPagesErrorView_Night_0_en",20392,], +["features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en","features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en",20392,], +["libraries.permissions.api_PermissionsView_Day_0_en","libraries.permissions.api_PermissionsView_Night_0_en",20392,], +["libraries.permissions.api_PermissionsView_Day_1_en","libraries.permissions.api_PermissionsView_Night_1_en",20392,], +["libraries.permissions.api_PermissionsView_Day_2_en","libraries.permissions.api_PermissionsView_Night_2_en",20392,], +["libraries.permissions.api_PermissionsView_Day_3_en","libraries.permissions.api_PermissionsView_Night_3_en",20392,], ["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",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20385,], -["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20385,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_0_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_0_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_1_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_1_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_2_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_2_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_3_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_3_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_4_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_4_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_5_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_5_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_6_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_6_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockViewInApp_Day_7_en","features.lockscreen.impl.unlock_PinUnlockViewInApp_Night_7_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_0_en","features.lockscreen.impl.unlock_PinUnlockView_Night_0_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_1_en","features.lockscreen.impl.unlock_PinUnlockView_Night_1_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_2_en","features.lockscreen.impl.unlock_PinUnlockView_Night_2_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_3_en","features.lockscreen.impl.unlock_PinUnlockView_Night_3_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_4_en","features.lockscreen.impl.unlock_PinUnlockView_Night_4_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_5_en","features.lockscreen.impl.unlock_PinUnlockView_Night_5_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_6_en","features.lockscreen.impl.unlock_PinUnlockView_Night_6_en",20392,], +["features.lockscreen.impl.unlock_PinUnlockView_Day_7_en","features.lockscreen.impl.unlock_PinUnlockView_Night_7_en",20392,], ["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",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20385,], -["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20385,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20385,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20385,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20385,], -["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20385,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_10_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_10_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_1_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_1_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_2_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_2_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_3_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_3_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_4_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_4_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_5_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_5_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_6_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_6_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_7_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_7_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_8_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_8_en",20392,], +["features.messages.impl.pinned.banner_PinnedMessagesBannerView_Day_9_en","features.messages.impl.pinned.banner_PinnedMessagesBannerView_Night_9_en",20392,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_0_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_0_en",20392,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_1_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_1_en",20392,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_2_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_2_en",20392,], +["features.messages.impl.pinned.list_PinnedMessagesListView_Day_3_en","features.messages.impl.pinned.list_PinnedMessagesListView_Night_3_en",20392,], ["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",20385,], -["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20385,], -["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20385,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20385,], -["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20385,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedNotSelected_Night_0_en",20392,], +["features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewDisclosedSelected_Night_0_en",20392,], +["features.poll.api.pollcontent_PollAnswerViewEndedSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedSelected_Night_0_en",20392,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerNotSelected_Night_0_en",20392,], +["features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Day_0_en","features.poll.api.pollcontent_PollAnswerViewEndedWinnerSelected_Night_0_en",20392,], ["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",20385,], -["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20385,], -["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20385,], -["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20385,], -["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20385,], -["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20385,], -["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20385,], -["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20385,], -["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20385,], -["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20385,], -["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20385,], +["features.poll.api.pollcontent_PollContentViewCreatorEditable_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEditable_Night_0_en",20392,], +["features.poll.api.pollcontent_PollContentViewCreatorEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewCreatorEnded_Night_0_en",20392,], +["features.poll.api.pollcontent_PollContentViewCreator_Day_0_en","features.poll.api.pollcontent_PollContentViewCreator_Night_0_en",20392,], +["features.poll.api.pollcontent_PollContentViewDisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewDisclosed_Night_0_en",20392,], +["features.poll.api.pollcontent_PollContentViewEnded_Day_0_en","features.poll.api.pollcontent_PollContentViewEnded_Night_0_en",20392,], +["features.poll.api.pollcontent_PollContentViewUndisclosed_Day_0_en","features.poll.api.pollcontent_PollContentViewUndisclosed_Night_0_en",20392,], +["features.poll.impl.history_PollHistoryView_Day_0_en","features.poll.impl.history_PollHistoryView_Night_0_en",20392,], +["features.poll.impl.history_PollHistoryView_Day_1_en","features.poll.impl.history_PollHistoryView_Night_1_en",20392,], +["features.poll.impl.history_PollHistoryView_Day_2_en","features.poll.impl.history_PollHistoryView_Night_2_en",20392,], +["features.poll.impl.history_PollHistoryView_Day_3_en","features.poll.impl.history_PollHistoryView_Night_3_en",20392,], +["features.poll.impl.history_PollHistoryView_Day_4_en","features.poll.impl.history_PollHistoryView_Night_4_en",20392,], ["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,], @@ -792,208 +792,209 @@ 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","",20385,], -["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20385,], -["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20385,], -["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20385,], +["features.preferences.impl.root_PreferencesRootViewDark_0_en","",20392,], +["features.preferences.impl.root_PreferencesRootViewDark_1_en","",20392,], +["features.preferences.impl.root_PreferencesRootViewLight_0_en","",20392,], +["features.preferences.impl.root_PreferencesRootViewLight_1_en","",20392,], ["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","",20385,], -["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20385,], +["libraries.designsystem.components_ProgressDialogContent_Dialogs_en","",20392,], +["libraries.designsystem.components_ProgressDialogWithContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithContent_Night_0_en",20392,], ["libraries.designsystem.components_ProgressDialogWithTextAndContent_Day_0_en","libraries.designsystem.components_ProgressDialogWithTextAndContent_Night_0_en",0,], -["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20385,], -["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20385,], -["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20385,], -["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20385,], -["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20385,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20385,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20385,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20385,], -["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20385,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20385,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20385,], -["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20385,], -["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20385,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20385,], -["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20385,], -["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20385,], +["libraries.designsystem.components_ProgressDialog_Day_0_en","libraries.designsystem.components_ProgressDialog_Night_0_en",20392,], +["features.messages.impl.timeline.protection_ProtectedView_Day_0_en","features.messages.impl.timeline.protection_ProtectedView_Night_0_en",20392,], +["features.messages.impl.timeline.protection_ProtectedView_Day_1_en","features.messages.impl.timeline.protection_ProtectedView_Night_1_en",20392,], +["features.messages.impl.timeline.protection_ProtectedView_Day_2_en","features.messages.impl.timeline.protection_ProtectedView_Night_2_en",20392,], +["features.messages.impl.timeline.protection_ProtectedView_Day_3_en","features.messages.impl.timeline.protection_ProtectedView_Night_3_en",20392,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_0_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_0_en",20392,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_1_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_1_en",20392,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_2_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_2_en",20392,], +["libraries.troubleshoot.impl.history_PushHistoryView_Day_3_en","libraries.troubleshoot.impl.history_PushHistoryView_Night_3_en",20392,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_0_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_0_en",20392,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_1_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_1_en",20392,], +["features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Day_2_en","features.login.impl.screens.qrcode.confirmation_QrCodeConfirmationView_Night_2_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_0_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_0_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_1_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_1_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_2_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_2_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_3_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_3_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_4_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_4_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_5_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_5_en",20392,], +["features.login.impl.screens.qrcode.error_QrCodeErrorView_Day_6_en","features.login.impl.screens.qrcode.error_QrCodeErrorView_Night_6_en",20392,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_0_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_0_en",20392,], +["features.login.impl.screens.qrcode.intro_QrCodeIntroView_Day_1_en","features.login.impl.screens.qrcode.intro_QrCodeIntroView_Night_1_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_0_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_0_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_1_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_1_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_2_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_2_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_3_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_3_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_4_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_4_en",20392,], +["features.login.impl.screens.qrcode.scan_QrCodeScanView_Day_5_en","features.login.impl.screens.qrcode.scan_QrCodeScanView_Night_5_en",20392,], ["libraries.designsystem.theme.components_RadioButton_Toggles_en","",0,], -["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20385,], -["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20385,], +["features.rageshake.api.detection_RageshakeDialogContent_Day_0_en","features.rageshake.api.detection_RageshakeDialogContent_Night_0_en",20392,], +["features.rageshake.api.preferences_RageshakePreferencesView_Day_0_en","features.rageshake.api.preferences_RageshakePreferencesView_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20385,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20385,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20385,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20385,], -["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20385,], -["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20385,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_0_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_0_en",20392,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_1_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_1_en",20392,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_2_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_2_en",20392,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_3_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_3_en",20392,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_4_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_4_en",20392,], +["features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Day_5_en","features.messages.impl.timeline.components.receipt.bottomsheet_ReadReceiptBottomSheet_Night_5_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_0_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_0_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_10_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_10_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_11_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_11_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_12_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_12_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_13_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_13_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_14_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_14_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_1_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_1_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_2_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_2_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_3_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_3_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_4_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_4_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_5_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_5_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_6_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_6_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_7_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_7_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_8_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_8_en",20392,], +["features.securebackup.impl.setup.views_RecoveryKeyView_Day_9_en","features.securebackup.impl.setup.views_RecoveryKeyView_Night_9_en",20392,], ["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",20385,], -["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20385,], -["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20385,], -["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20385,], -["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20385,], -["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20385,], -["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20385,], -["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20385,], -["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20385,], -["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20385,], -["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20385,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20385,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20385,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20385,], -["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20385,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20385,], -["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20385,], +["features.messages.impl.report_ReportMessageView_Day_0_en","features.messages.impl.report_ReportMessageView_Night_0_en",20392,], +["features.messages.impl.report_ReportMessageView_Day_1_en","features.messages.impl.report_ReportMessageView_Night_1_en",20392,], +["features.messages.impl.report_ReportMessageView_Day_2_en","features.messages.impl.report_ReportMessageView_Night_2_en",20392,], +["features.messages.impl.report_ReportMessageView_Day_3_en","features.messages.impl.report_ReportMessageView_Night_3_en",20392,], +["features.messages.impl.report_ReportMessageView_Day_4_en","features.messages.impl.report_ReportMessageView_Night_4_en",20392,], +["features.messages.impl.report_ReportMessageView_Day_5_en","features.messages.impl.report_ReportMessageView_Night_5_en",20392,], +["features.reportroom.impl_ReportRoomView_Day_0_en","features.reportroom.impl_ReportRoomView_Night_0_en",20392,], +["features.reportroom.impl_ReportRoomView_Day_1_en","features.reportroom.impl_ReportRoomView_Night_1_en",20392,], +["features.reportroom.impl_ReportRoomView_Day_2_en","features.reportroom.impl_ReportRoomView_Night_2_en",20392,], +["features.reportroom.impl_ReportRoomView_Day_3_en","features.reportroom.impl_ReportRoomView_Night_3_en",20392,], +["features.reportroom.impl_ReportRoomView_Day_4_en","features.reportroom.impl_ReportRoomView_Night_4_en",20392,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_0_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_0_en",20392,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_1_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_1_en",20392,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_2_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_2_en",20392,], +["features.securebackup.impl.reset.password_ResetIdentityPasswordView_Day_3_en","features.securebackup.impl.reset.password_ResetIdentityPasswordView_Night_3_en",20392,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_0_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_0_en",20392,], +["features.securebackup.impl.reset.root_ResetIdentityRootView_Day_1_en","features.securebackup.impl.reset.root_ResetIdentityRootView_Night_1_en",20392,], ["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",20385,], -["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20385,], -["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20385,], -["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20385,], -["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20385,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_1_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_1_en",20392,], +["features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Day_2_en","features.messages.impl.crypto.sendfailure.resolve_ResolveVerifiedUserSendFailureView_Night_2_en",20392,], +["libraries.designsystem.components.dialogs_RetryDialogContent_Dialogs_en","",20392,], +["libraries.designsystem.components.dialogs_RetryDialog_Day_0_en","libraries.designsystem.components.dialogs_RetryDialog_Night_0_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en",20392,], +["features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en","features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en",20392,], ["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",20385,], -["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20385,], -["features.roomdetails.impl_RoomDetailsDark_0_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_10_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_11_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_12_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_13_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_14_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_15_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_16_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_17_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_18_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_19_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_1_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_2_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_3_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_4_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_5_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_6_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_7_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_8_en","",20385,], -["features.roomdetails.impl_RoomDetailsDark_9_en","",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20385,], -["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20385,], -["features.roomdetails.impl_RoomDetails_0_en","",20385,], -["features.roomdetails.impl_RoomDetails_10_en","",20385,], -["features.roomdetails.impl_RoomDetails_11_en","",20385,], -["features.roomdetails.impl_RoomDetails_12_en","",20385,], -["features.roomdetails.impl_RoomDetails_13_en","",20385,], -["features.roomdetails.impl_RoomDetails_14_en","",20385,], -["features.roomdetails.impl_RoomDetails_15_en","",20385,], -["features.roomdetails.impl_RoomDetails_16_en","",20385,], -["features.roomdetails.impl_RoomDetails_17_en","",20385,], -["features.roomdetails.impl_RoomDetails_18_en","",20385,], -["features.roomdetails.impl_RoomDetails_19_en","",20385,], -["features.roomdetails.impl_RoomDetails_1_en","",20385,], -["features.roomdetails.impl_RoomDetails_2_en","",20385,], -["features.roomdetails.impl_RoomDetails_3_en","",20385,], -["features.roomdetails.impl_RoomDetails_4_en","",20385,], -["features.roomdetails.impl_RoomDetails_5_en","",20385,], -["features.roomdetails.impl_RoomDetails_6_en","",20385,], -["features.roomdetails.impl_RoomDetails_7_en","",20385,], -["features.roomdetails.impl_RoomDetails_8_en","",20385,], -["features.roomdetails.impl_RoomDetails_9_en","",20385,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20385,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20385,], -["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20385,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20385,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20385,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20385,], -["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20385,], -["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20385,], -["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20385,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_1_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_1_en",20392,], +["features.roomaliasresolver.impl_RoomAliasResolverView_Day_2_en","features.roomaliasresolver.impl_RoomAliasResolverView_Night_2_en",20392,], +["features.roomdetails.impl_RoomDetailsDark_0_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_10_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_11_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_12_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_13_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_14_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_15_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_16_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_17_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_18_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_19_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_1_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_2_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_3_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_4_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_5_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_6_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_7_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_8_en","",20392,], +["features.roomdetails.impl_RoomDetailsDark_9_en","",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_0_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_0_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_1_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_1_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_2_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_2_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_3_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_3_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_4_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_4_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_5_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_5_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_6_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_6_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_7_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_7_en",20392,], +["features.roomdetails.impl.edit_RoomDetailsEditView_Day_8_en","features.roomdetails.impl.edit_RoomDetailsEditView_Night_8_en",20395,], +["features.roomdetails.impl_RoomDetails_0_en","",20392,], +["features.roomdetails.impl_RoomDetails_10_en","",20392,], +["features.roomdetails.impl_RoomDetails_11_en","",20392,], +["features.roomdetails.impl_RoomDetails_12_en","",20392,], +["features.roomdetails.impl_RoomDetails_13_en","",20392,], +["features.roomdetails.impl_RoomDetails_14_en","",20392,], +["features.roomdetails.impl_RoomDetails_15_en","",20392,], +["features.roomdetails.impl_RoomDetails_16_en","",20392,], +["features.roomdetails.impl_RoomDetails_17_en","",20392,], +["features.roomdetails.impl_RoomDetails_18_en","",20392,], +["features.roomdetails.impl_RoomDetails_19_en","",20392,], +["features.roomdetails.impl_RoomDetails_1_en","",20392,], +["features.roomdetails.impl_RoomDetails_2_en","",20392,], +["features.roomdetails.impl_RoomDetails_3_en","",20392,], +["features.roomdetails.impl_RoomDetails_4_en","",20392,], +["features.roomdetails.impl_RoomDetails_5_en","",20392,], +["features.roomdetails.impl_RoomDetails_6_en","",20392,], +["features.roomdetails.impl_RoomDetails_7_en","",20392,], +["features.roomdetails.impl_RoomDetails_8_en","",20392,], +["features.roomdetails.impl_RoomDetails_9_en","",20392,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_0_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_0_en",20392,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_1_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_1_en",20392,], +["features.roomdirectory.impl.root_RoomDirectoryView_Day_2_en","features.roomdirectory.impl.root_RoomDirectoryView_Night_2_en",20392,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_0_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_0_en",20392,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_1_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_1_en",20392,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_2_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_2_en",20392,], +["features.roomdetails.impl.invite_RoomInviteMembersView_Day_3_en","features.roomdetails.impl.invite_RoomInviteMembersView_Night_3_en",20392,], +["features.home.impl.components_RoomListContentView_Day_0_en","features.home.impl.components_RoomListContentView_Night_0_en",20392,], +["features.home.impl.components_RoomListContentView_Day_1_en","features.home.impl.components_RoomListContentView_Night_1_en",20392,], ["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",20385,], -["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20385,], -["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20385,], -["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20385,], -["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20385,], -["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20385,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20385,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20385,], -["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20385,], +["features.home.impl.components_RoomListContentView_Day_3_en","features.home.impl.components_RoomListContentView_Night_3_en",20392,], +["features.home.impl.components_RoomListContentView_Day_4_en","features.home.impl.components_RoomListContentView_Night_4_en",20392,], +["features.home.impl.components_RoomListContentView_Day_5_en","features.home.impl.components_RoomListContentView_Night_5_en",20392,], +["features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Day_0_en","features.home.impl.roomlist_RoomListDeclineInviteMenuContent_Night_0_en",20392,], +["features.home.impl.filters_RoomListFiltersView_Day_0_en","features.home.impl.filters_RoomListFiltersView_Night_0_en",20392,], +["features.home.impl.filters_RoomListFiltersView_Day_1_en","features.home.impl.filters_RoomListFiltersView_Night_1_en",20392,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_0_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_0_en",20392,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_1_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_1_en",20392,], +["features.home.impl.roomlist_RoomListModalBottomSheetContent_Day_2_en","features.home.impl.roomlist_RoomListModalBottomSheetContent_Night_2_en",20392,], ["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",20385,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20385,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20385,], -["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20385,], +["features.home.impl.search_RoomListSearchContent_Day_1_en","features.home.impl.search_RoomListSearchContent_Night_1_en",20392,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_0_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_0_en",20392,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_1_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_1_en",20392,], +["features.roomdetails.impl.members_RoomMemberListViewBanned_Day_2_en","features.roomdetails.impl.members_RoomMemberListViewBanned_Night_2_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_0_en","features.roomdetails.impl.members_RoomMemberListView_Night_0_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_1_en","features.roomdetails.impl.members_RoomMemberListView_Night_1_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_2_en","features.roomdetails.impl.members_RoomMemberListView_Night_2_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_3_en","features.roomdetails.impl.members_RoomMemberListView_Night_3_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_4_en","features.roomdetails.impl.members_RoomMemberListView_Night_4_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_5_en","features.roomdetails.impl.members_RoomMemberListView_Night_5_en",20392,], ["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",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20385,], -["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20385,], -["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20385,], -["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20385,], -["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20385,], +["features.roomdetails.impl.members_RoomMemberListView_Day_7_en","features.roomdetails.impl.members_RoomMemberListView_Night_7_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_8_en","features.roomdetails.impl.members_RoomMemberListView_Night_8_en",20392,], +["features.roomdetails.impl.members_RoomMemberListView_Day_9_en","features.roomdetails.impl.members_RoomMemberListView_Night_9_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_0_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_0_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_1_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_1_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_2_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_2_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_3_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_3_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_4_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_4_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_5_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_5_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_6_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_6_en",20392,], +["features.roommembermoderation.impl_RoomMemberModerationView_Day_7_en","features.roommembermoderation.impl_RoomMemberModerationView_Night_7_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsOption_Night_0_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_0_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_1_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_1_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_2_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_2_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_3_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_3_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_4_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_4_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_5_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_5_en",20392,], +["features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Day_6_en","features.roomdetails.impl.notificationsettings_RoomNotificationSettingsView_Night_6_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_0_en","libraries.roomselect.impl_RoomSelectView_Night_0_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_1_en","libraries.roomselect.impl_RoomSelectView_Night_1_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_2_en","libraries.roomselect.impl_RoomSelectView_Night_2_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_3_en","libraries.roomselect.impl_RoomSelectView_Night_3_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_4_en","libraries.roomselect.impl_RoomSelectView_Night_4_en",20392,], +["libraries.roomselect.impl_RoomSelectView_Day_5_en","libraries.roomselect.impl_RoomSelectView_Night_5_en",20392,], ["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,], @@ -1016,14 +1017,14 @@ 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",20385,], -["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20385,], -["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20385,], +["features.home.impl.components_RoomSummaryRow_Day_29_en","features.home.impl.components_RoomSummaryRow_Night_29_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_2_en","features.home.impl.components_RoomSummaryRow_Night_2_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_30_en","features.home.impl.components_RoomSummaryRow_Night_30_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_31_en","features.home.impl.components_RoomSummaryRow_Night_31_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_32_en","features.home.impl.components_RoomSummaryRow_Night_32_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_33_en","features.home.impl.components_RoomSummaryRow_Night_33_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_34_en","features.home.impl.components_RoomSummaryRow_Night_34_en",20392,], +["features.home.impl.components_RoomSummaryRow_Day_35_en","features.home.impl.components_RoomSummaryRow_Night_35_en",20392,], ["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,], @@ -1031,82 +1032,82 @@ 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",20385,], -["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20385,], -["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20385,], +["appnav.root_RootView_Day_0_en","appnav.root_RootView_Night_0_en",20392,], +["appnav.root_RootView_Day_1_en","appnav.root_RootView_Night_1_en",20392,], +["appnav.root_RootView_Day_2_en","appnav.root_RootView_Night_2_en",20392,], ["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",20385,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20385,], -["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20385,], +["features.verifysession.impl.emoji_SasEmojis_Day_0_en","features.verifysession.impl.emoji_SasEmojis_Night_0_en",20392,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_0_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_0_en",20392,], +["features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Day_1_en","features.login.impl.screens.searchaccountprovider_SearchAccountProviderView_Night_1_en",20392,], ["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","",20385,], +["libraries.designsystem.theme.components_SearchBarActiveWithNoResults_Search_views_en","",20392,], ["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.startchat.impl.components_SearchMultipleUsersResultItem_en","",20385,], -["features.startchat.impl.components_SearchSingleUserResultItem_en","",20385,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20385,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20385,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20385,], -["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20385,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20385,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20385,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20385,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20385,], -["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20385,], -["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20385,], -["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_en","",20388,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20385,], -["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_en","",20388,], +["features.startchat.impl.components_SearchMultipleUsersResultItem_en","",20392,], +["features.startchat.impl.components_SearchSingleUserResultItem_en","",20392,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_0_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_0_en",20392,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_1_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_1_en",20392,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_2_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_2_en",20392,], +["features.securebackup.impl.disable_SecureBackupDisableView_Day_3_en","features.securebackup.impl.disable_SecureBackupDisableView_Night_3_en",20392,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_0_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_0_en",20392,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_1_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_1_en",20392,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_2_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_2_en",20392,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_3_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_3_en",20392,], +["features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Day_4_en","features.securebackup.impl.enter_SecureBackupEnterRecoveryKeyView_Night_4_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_0_en","features.securebackup.impl.root_SecureBackupRootView_Night_0_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_10_en","features.securebackup.impl.root_SecureBackupRootView_Night_10_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_11_en","features.securebackup.impl.root_SecureBackupRootView_Night_11_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_12_en","features.securebackup.impl.root_SecureBackupRootView_Night_12_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_13_en","features.securebackup.impl.root_SecureBackupRootView_Night_13_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_14_en","features.securebackup.impl.root_SecureBackupRootView_Night_14_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_15_en","features.securebackup.impl.root_SecureBackupRootView_Night_15_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_16_en","features.securebackup.impl.root_SecureBackupRootView_Night_16_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_17_en","features.securebackup.impl.root_SecureBackupRootView_Night_17_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_1_en","features.securebackup.impl.root_SecureBackupRootView_Night_1_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_2_en","features.securebackup.impl.root_SecureBackupRootView_Night_2_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_3_en","features.securebackup.impl.root_SecureBackupRootView_Night_3_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_4_en","features.securebackup.impl.root_SecureBackupRootView_Night_4_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_5_en","features.securebackup.impl.root_SecureBackupRootView_Night_5_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_6_en","features.securebackup.impl.root_SecureBackupRootView_Night_6_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_7_en","features.securebackup.impl.root_SecureBackupRootView_Night_7_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_8_en","features.securebackup.impl.root_SecureBackupRootView_Night_8_en",20392,], +["features.securebackup.impl.root_SecureBackupRootView_Day_9_en","features.securebackup.impl.root_SecureBackupRootView_Night_9_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_0_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_1_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_2_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_3_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_4_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupViewChange_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupViewChange_Night_5_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_0_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_0_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_1_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_1_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_2_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_2_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_3_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_3_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_4_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_4_en",20392,], +["features.securebackup.impl.setup_SecureBackupSetupView_Day_5_en","features.securebackup.impl.setup_SecureBackupSetupView_Night_5_en",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_0_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_1_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_2_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_3_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_4_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_5_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_6_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_7_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_8_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewDark_9_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_0_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_1_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_2_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_3_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_4_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_5_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_6_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_7_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_8_en","",20392,], +["features.roomdetails.impl.securityandprivacy_SecurityAndPrivacyViewLight_9_en","",20392,], ["libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Day_0_en","libraries.designsystem.atomic.atoms_SelectedIndicatorAtom_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_0_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_0_en",0,], ["libraries.matrix.ui.components_SelectedRoomRtl_Day_1_en","libraries.matrix.ui.components_SelectedRoomRtl_Night_1_en",0,], @@ -1120,11 +1121,11 @@ export const screenshots = [ ["libraries.matrix.ui.components_SelectedUser_Day_1_en","libraries.matrix.ui.components_SelectedUser_Night_1_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",20385,], -["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20385,], -["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20385,], -["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20385,], -["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20385,], +["features.location.impl.send_SendLocationView_Day_0_en","features.location.impl.send_SendLocationView_Night_0_en",20392,], +["features.location.impl.send_SendLocationView_Day_1_en","features.location.impl.send_SendLocationView_Night_1_en",20392,], +["features.location.impl.send_SendLocationView_Day_2_en","features.location.impl.send_SendLocationView_Night_2_en",20392,], +["features.location.impl.send_SendLocationView_Day_3_en","features.location.impl.send_SendLocationView_Night_3_en",20392,], +["features.location.impl.send_SendLocationView_Day_4_en","features.location.impl.send_SendLocationView_Night_4_en",20392,], ["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,], @@ -1134,27 +1135,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",20385,], -["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20385,], -["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20385,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20385,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20385,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20385,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20385,], -["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20385,], +["features.verifysession.impl.incoming.ui_SessionDetailsView_Day_0_en","features.verifysession.impl.incoming.ui_SessionDetailsView_Night_0_en",20392,], +["features.home.impl.components_SetUpRecoveryKeyBanner_Day_0_en","features.home.impl.components_SetUpRecoveryKeyBanner_Night_0_en",20392,], +["features.lockscreen.impl.setup.biometric_SetupBiometricView_Day_0_en","features.lockscreen.impl.setup.biometric_SetupBiometricView_Night_0_en",20392,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_0_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_0_en",20392,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_1_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_1_en",20392,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_2_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_2_en",20392,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_3_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_3_en",20392,], +["features.lockscreen.impl.setup.pin_SetupPinView_Day_4_en","features.lockscreen.impl.setup.pin_SetupPinView_Night_4_en",20392,], ["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",20385,], -["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20385,], -["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20385,], -["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20385,], -["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20385,], -["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20385,], -["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20385,], -["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20385,], -["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20385,], -["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20385,], +["features.share.impl_ShareView_Day_3_en","features.share.impl_ShareView_Night_3_en",20392,], +["features.location.impl.show_ShowLocationView_Day_0_en","features.location.impl.show_ShowLocationView_Night_0_en",20392,], +["features.location.impl.show_ShowLocationView_Day_1_en","features.location.impl.show_ShowLocationView_Night_1_en",20392,], +["features.location.impl.show_ShowLocationView_Day_2_en","features.location.impl.show_ShowLocationView_Night_2_en",20392,], +["features.location.impl.show_ShowLocationView_Day_3_en","features.location.impl.show_ShowLocationView_Night_3_en",20392,], +["features.location.impl.show_ShowLocationView_Day_4_en","features.location.impl.show_ShowLocationView_Night_4_en",20392,], +["features.location.impl.show_ShowLocationView_Day_5_en","features.location.impl.show_ShowLocationView_Night_5_en",20392,], +["features.location.impl.show_ShowLocationView_Day_6_en","features.location.impl.show_ShowLocationView_Night_6_en",20392,], +["features.location.impl.show_ShowLocationView_Day_7_en","features.location.impl.show_ShowLocationView_Night_7_en",20392,], +["features.signedout.impl_SignedOutView_Day_0_en","features.signedout.impl_SignedOutView_Night_0_en",20392,], ["libraries.designsystem.components_SimpleModalBottomSheet_Day_0_en","libraries.designsystem.components_SimpleModalBottomSheet_Night_0_en",0,], ["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,], @@ -1164,98 +1165,98 @@ 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",20385,], +["features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Day_0_en","features.login.impl.dialogs_SlidingSyncNotSupportedDialog_Night_0_en",20392,], ["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,], ["libraries.designsystem.theme.components_SnackbarWithAction_Snackbar_with_action_Snackbars_en","",0,], ["libraries.designsystem.theme.components_Snackbar_Snackbar_Snackbars_en","",0,], -["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20385,], +["features.announcement.impl.spaces_SpaceAnnouncementView_Day_0_en","features.announcement.impl.spaces_SpaceAnnouncementView_Night_0_en",20392,], ["libraries.designsystem.components.avatar.internal_SpaceAvatar_Avatars_en","",0,], -["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20385,], -["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20385,], -["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20385,], +["libraries.matrix.ui.components_SpaceHeaderRootView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderRootView_Night_0_en",20392,], +["libraries.matrix.ui.components_SpaceHeaderView_Day_0_en","libraries.matrix.ui.components_SpaceHeaderView_Night_0_en",20392,], +["libraries.matrix.ui.components_SpaceInfoRow_Day_0_en","libraries.matrix.ui.components_SpaceInfoRow_Night_0_en",20392,], ["libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Day_0_en","libraries.matrix.ui.components_SpaceMembersViewNoHeroes_Night_0_en",0,], ["libraries.matrix.ui.components_SpaceMembersView_Day_0_en","libraries.matrix.ui.components_SpaceMembersView_Night_0_en",0,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20385,], -["libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en",20385,], -["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20385,], -["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20385,], -["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20385,], -["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20385,], -["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20385,], -["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20385,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_0_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_0_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_1_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_1_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_2_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_2_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_3_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_3_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_4_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_4_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_5_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_5_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_6_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_6_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_7_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_7_en",20392,], +["libraries.matrix.ui.components_SpaceRoomItemView_Day_8_en","libraries.matrix.ui.components_SpaceRoomItemView_Night_8_en",20392,], +["features.space.impl.root_SpaceView_Day_0_en","features.space.impl.root_SpaceView_Night_0_en",20392,], +["features.space.impl.root_SpaceView_Day_1_en","features.space.impl.root_SpaceView_Night_1_en",20392,], +["features.space.impl.root_SpaceView_Day_2_en","features.space.impl.root_SpaceView_Night_2_en",20392,], +["features.space.impl.root_SpaceView_Day_3_en","features.space.impl.root_SpaceView_Night_3_en",20392,], +["features.space.impl.root_SpaceView_Day_4_en","features.space.impl.root_SpaceView_Night_4_en",20392,], +["features.space.impl.root_SpaceView_Day_5_en","features.space.impl.root_SpaceView_Night_5_en",20392,], ["libraries.designsystem.modifiers_SquareSizeModifierInsideSquare_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeHeight_en","",0,], ["libraries.designsystem.modifiers_SquareSizeModifierLargeWidth_en","",0,], -["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20385,], -["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20385,], -["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20385,], -["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20385,], -["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20385,], -["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20385,], -["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20385,], +["features.startchat.impl.root_StartChatView_Day_0_en","features.startchat.impl.root_StartChatView_Night_0_en",20392,], +["features.startchat.impl.root_StartChatView_Day_1_en","features.startchat.impl.root_StartChatView_Night_1_en",20392,], +["features.startchat.impl.root_StartChatView_Day_2_en","features.startchat.impl.root_StartChatView_Night_2_en",20392,], +["features.startchat.impl.root_StartChatView_Day_3_en","features.startchat.impl.root_StartChatView_Night_3_en",20392,], +["features.startchat.impl.root_StartChatView_Day_4_en","features.startchat.impl.root_StartChatView_Night_4_en",20392,], +["features.startchat.impl.root_StartChatView_Day_5_en","features.startchat.impl.root_StartChatView_Night_5_en",20392,], +["features.location.api.internal_StaticMapPlaceholder_Day_0_en","features.location.api.internal_StaticMapPlaceholder_Night_0_en",20392,], ["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",20385,], +["features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Day_0_en","features.messages.impl.messagecomposer.suggestions_SuggestionsPickerView_Night_0_en",20392,], ["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",20385,], +["appnav.loggedin_SyncStateView_Day_0_en","appnav.loggedin_SyncStateView_Night_0_en",20392,], ["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",20385,], -["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20385,], -["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20385,], -["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20385,], -["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20385,], -["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20385,], -["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20385,], -["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20385,], -["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20385,], -["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20385,], -["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20385,], -["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20385,], -["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20385,], -["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20385,], -["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20385,], +["libraries.textcomposer_TextComposerAddCaption_Day_0_en","libraries.textcomposer_TextComposerAddCaption_Night_0_en",20392,], +["libraries.textcomposer_TextComposerCaption_Day_0_en","libraries.textcomposer_TextComposerCaption_Night_0_en",20392,], +["libraries.textcomposer_TextComposerEditCaption_Day_0_en","libraries.textcomposer_TextComposerEditCaption_Night_0_en",20392,], +["libraries.textcomposer_TextComposerEditNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerEditNotEncrypted_Night_0_en",20392,], +["libraries.textcomposer_TextComposerEdit_Day_0_en","libraries.textcomposer_TextComposerEdit_Night_0_en",20392,], +["libraries.textcomposer_TextComposerFormattingNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerFormattingNotEncrypted_Night_0_en",20392,], +["libraries.textcomposer_TextComposerFormatting_Day_0_en","libraries.textcomposer_TextComposerFormatting_Night_0_en",20392,], +["libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLinkWithoutText_Night_0_en",20392,], +["libraries.textcomposer_TextComposerLinkDialogCreateLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogCreateLink_Night_0_en",20392,], +["libraries.textcomposer_TextComposerLinkDialogEditLink_Day_0_en","libraries.textcomposer_TextComposerLinkDialogEditLink_Night_0_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_0_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_10_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_10_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_11_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_11_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_1_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_1_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_2_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_2_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_3_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_3_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_4_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_4_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_5_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_5_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_6_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_6_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_7_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_7_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_8_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_8_en",20392,], +["libraries.textcomposer_TextComposerReplyNotEncrypted_Day_9_en","libraries.textcomposer_TextComposerReplyNotEncrypted_Night_9_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_0_en","libraries.textcomposer_TextComposerReply_Night_0_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_10_en","libraries.textcomposer_TextComposerReply_Night_10_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_11_en","libraries.textcomposer_TextComposerReply_Night_11_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_1_en","libraries.textcomposer_TextComposerReply_Night_1_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_2_en","libraries.textcomposer_TextComposerReply_Night_2_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_3_en","libraries.textcomposer_TextComposerReply_Night_3_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_4_en","libraries.textcomposer_TextComposerReply_Night_4_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_5_en","libraries.textcomposer_TextComposerReply_Night_5_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_6_en","libraries.textcomposer_TextComposerReply_Night_6_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_7_en","libraries.textcomposer_TextComposerReply_Night_7_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_8_en","libraries.textcomposer_TextComposerReply_Night_8_en",20392,], +["libraries.textcomposer_TextComposerReply_Day_9_en","libraries.textcomposer_TextComposerReply_Night_9_en",20392,], +["libraries.textcomposer_TextComposerSimpleNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerSimpleNotEncrypted_Night_0_en",20392,], +["libraries.textcomposer_TextComposerSimple_Day_0_en","libraries.textcomposer_TextComposerSimple_Night_0_en",20392,], +["libraries.textcomposer_TextComposerVoiceNotEncrypted_Day_0_en","libraries.textcomposer_TextComposerVoiceNotEncrypted_Night_0_en",20392,], ["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",20385,], -["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20385,], +["libraries.designsystem.components.dialogs_TextFieldDialogWithError_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialogWithError_Night_0_en",20392,], +["libraries.designsystem.components.dialogs_TextFieldDialog_Day_0_en","libraries.designsystem.components.dialogs_TextFieldDialog_Night_0_en",20392,], ["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,], @@ -1267,16 +1268,16 @@ 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,], -["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20385,], -["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20385,], -["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20385,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20385,], -["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20385,], +["features.messages.impl.timeline.components_ThreadSummaryView_Day_0_en","features.messages.impl.timeline.components_ThreadSummaryView_Night_0_en",20392,], +["features.messages.impl.topbars_ThreadTopBar_Day_0_en","features.messages.impl.topbars_ThreadTopBar_Night_0_en",20392,], +["libraries.designsystem.theme.components.previews_TimePickerHorizontal_DateTime_pickers_en","",20392,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalDark_DateTime_pickers_en","",20392,], +["libraries.designsystem.theme.components.previews_TimePickerVerticalLight_DateTime_pickers_en","",20392,], ["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",20385,], -["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20385,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_3_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_3_en",20392,], +["features.messages.impl.timeline.components_TimelineEventTimestampView_Day_4_en","features.messages.impl.timeline.components_TimelineEventTimestampView_Night_4_en",20392,], ["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,], @@ -1286,18 +1287,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",20385,], +["features.messages.impl.timeline.components_TimelineItemCallNotifyView_Day_0_en","features.messages.impl.timeline.components_TimelineItemCallNotifyView_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_0_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_1_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_2_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_3_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_4_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_4_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_5_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_5_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_6_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_6_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_7_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_7_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Day_8_en","features.messages.impl.timeline.components.event_TimelineItemEncryptedView_Night_8_en",20392,], ["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,], @@ -1305,18 +1306,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",20385,], -["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_3_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_3_en",20392,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_4_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20385,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Day_7_en","features.messages.impl.timeline.components_TimelineItemEventRowTimestamp_Night_7_en",20392,], +["features.messages.impl.timeline.components_TimelineItemEventRowUtd_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowUtd_Night_0_en",20392,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithManyReactions_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_0_en",20392,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Day_1_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReplyInformative_Night_1_en",20392,], ["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,], @@ -1325,41 +1326,41 @@ 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",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_4_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_4_en",20392,], ["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",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_8_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_8_en",20392,], ["features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Day_9_en","features.messages.impl.timeline.components_TimelineItemEventRowWithReply_Night_9_en",0,], -["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Day_0_en","features.messages.impl.timeline.components_TimelineItemEventRowWithThreadSummary_Night_0_en",20392,], ["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","",20385,], +["features.messages.impl.timeline.components_TimelineItemEventTimestampBelow_en","",20392,], ["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",20385,], -["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentCollapse_Night_0_en",20392,], +["features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Day_0_en","features.messages.impl.timeline.components_TimelineItemGroupedEventsRowContentExpanded_Night_0_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemImageViewHideMediaContent_Night_0_en",20392,], ["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",20385,], +["features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemLegacyCallInviteView_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20385,], -["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20385,], -["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_0_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_1_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_1_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_2_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_2_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemPollView_Day_3_en","features.messages.impl.timeline.components.event_TimelineItemPollView_Night_3_en",20392,], +["features.messages.impl.timeline.components_TimelineItemReactionsLayout_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsLayout_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20385,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewIncoming_Night_0_en",20392,], +["features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Day_0_en","features.messages.impl.timeline.components_TimelineItemReactionsViewOutgoing_Night_0_en",20392,], ["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",20385,], +["features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemReadMarkerView_Night_0_en",20392,], ["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,], @@ -1368,8 +1369,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",20385,], -["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemRedactedView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemRedactedView_Night_0_en",20392,], +["features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Day_0_en","features.messages.impl.timeline.components.virtual_TimelineItemRoomBeginningView_Night_0_en",20392,], ["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,], @@ -1384,8 +1385,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",20385,], -["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20385,], +["features.messages.impl.timeline.components.event_TimelineItemUnknownView_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemUnknownView_Night_0_en",20392,], +["features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Day_0_en","features.messages.impl.timeline.components.event_TimelineItemVideoViewHideMediaContent_Night_0_en",20392,], ["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,], @@ -1408,85 +1409,85 @@ 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",20385,], -["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20385,], +["features.messages.impl.timeline_TimelineViewMessageShield_Day_0_en","features.messages.impl.timeline_TimelineViewMessageShield_Night_0_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_0_en","features.messages.impl.timeline_TimelineView_Night_0_en",20392,], ["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",20385,], -["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20385,], -["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20385,], +["features.messages.impl.timeline_TimelineView_Day_11_en","features.messages.impl.timeline_TimelineView_Night_11_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_12_en","features.messages.impl.timeline_TimelineView_Night_12_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_13_en","features.messages.impl.timeline_TimelineView_Night_13_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_14_en","features.messages.impl.timeline_TimelineView_Night_14_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_15_en","features.messages.impl.timeline_TimelineView_Night_15_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_16_en","features.messages.impl.timeline_TimelineView_Night_16_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_17_en","features.messages.impl.timeline_TimelineView_Night_17_en",20392,], +["features.messages.impl.timeline_TimelineView_Day_1_en","features.messages.impl.timeline_TimelineView_Night_1_en",20392,], ["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",20385,], +["features.messages.impl.timeline_TimelineView_Day_4_en","features.messages.impl.timeline_TimelineView_Night_4_en",20392,], ["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",20385,], +["features.messages.impl.timeline_TimelineView_Day_6_en","features.messages.impl.timeline_TimelineView_Night_6_en",20392,], ["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",20385,], +["features.messages.impl.timeline_TimelineView_Day_8_en","features.messages.impl.timeline_TimelineView_Night_8_en",20392,], ["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",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20385,], -["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20385,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_0_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_0_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_1_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_1_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_2_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_2_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_3_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_3_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_4_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_4_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_5_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_5_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_6_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_6_en",20392,], +["libraries.troubleshoot.impl_TroubleshootNotificationsView_Day_7_en","libraries.troubleshoot.impl_TroubleshootNotificationsView_Night_7_en",20392,], ["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",20385,], -["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20385,], -["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20385,], -["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20385,], -["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20385,], -["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20385,], +["features.messages.impl.typing_TypingNotificationView_Day_1_en","features.messages.impl.typing_TypingNotificationView_Night_1_en",20392,], +["features.messages.impl.typing_TypingNotificationView_Day_2_en","features.messages.impl.typing_TypingNotificationView_Night_2_en",20392,], +["features.messages.impl.typing_TypingNotificationView_Day_3_en","features.messages.impl.typing_TypingNotificationView_Night_3_en",20392,], +["features.messages.impl.typing_TypingNotificationView_Day_4_en","features.messages.impl.typing_TypingNotificationView_Night_4_en",20392,], +["features.messages.impl.typing_TypingNotificationView_Day_5_en","features.messages.impl.typing_TypingNotificationView_Night_5_en",20392,], +["features.messages.impl.typing_TypingNotificationView_Day_6_en","features.messages.impl.typing_TypingNotificationView_Night_6_en",20392,], ["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","",20385,], +["libraries.matrix.ui.components_UnresolvedUserRow_en","",20392,], ["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",20385,], -["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20385,], -["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20385,], -["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20385,], +["features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Day_0_en","features.roomdetails.impl.notificationsettings_UserDefinedRoomNotificationSettingsView_Night_0_en",20392,], +["features.startchat.impl.components_UserListView_Day_0_en","features.startchat.impl.components_UserListView_Night_0_en",20392,], +["features.startchat.impl.components_UserListView_Day_1_en","features.startchat.impl.components_UserListView_Night_1_en",20392,], +["features.startchat.impl.components_UserListView_Day_2_en","features.startchat.impl.components_UserListView_Night_2_en",20392,], ["features.startchat.impl.components_UserListView_Day_3_en","features.startchat.impl.components_UserListView_Night_3_en",0,], ["features.startchat.impl.components_UserListView_Day_4_en","features.startchat.impl.components_UserListView_Night_4_en",0,], ["features.startchat.impl.components_UserListView_Day_5_en","features.startchat.impl.components_UserListView_Night_5_en",0,], ["features.startchat.impl.components_UserListView_Day_6_en","features.startchat.impl.components_UserListView_Night_6_en",0,], -["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20385,], +["features.startchat.impl.components_UserListView_Day_7_en","features.startchat.impl.components_UserListView_Night_7_en",20392,], ["features.startchat.impl.components_UserListView_Day_8_en","features.startchat.impl.components_UserListView_Night_8_en",0,], -["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20385,], +["features.startchat.impl.components_UserListView_Day_9_en","features.startchat.impl.components_UserListView_Night_9_en",20392,], ["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",20385,], -["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20385,], -["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20385,], -["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20385,], -["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20385,], -["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20385,], -["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20385,], -["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20385,], -["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20385,], -["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20385,], -["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20385,], -["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20385,], +["features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Day_0_en","features.userprofile.shared_UserProfileHeaderSectionWithVerificationViolation_Night_0_en",20392,], +["features.userprofile.shared_UserProfileHeaderSection_Day_0_en","features.userprofile.shared_UserProfileHeaderSection_Night_0_en",20392,], +["features.userprofile.shared_UserProfileView_Day_0_en","features.userprofile.shared_UserProfileView_Night_0_en",20392,], +["features.userprofile.shared_UserProfileView_Day_1_en","features.userprofile.shared_UserProfileView_Night_1_en",20392,], +["features.userprofile.shared_UserProfileView_Day_2_en","features.userprofile.shared_UserProfileView_Night_2_en",20392,], +["features.userprofile.shared_UserProfileView_Day_3_en","features.userprofile.shared_UserProfileView_Night_3_en",20392,], +["features.userprofile.shared_UserProfileView_Day_4_en","features.userprofile.shared_UserProfileView_Night_4_en",20392,], +["features.userprofile.shared_UserProfileView_Day_5_en","features.userprofile.shared_UserProfileView_Night_5_en",20392,], +["features.userprofile.shared_UserProfileView_Day_6_en","features.userprofile.shared_UserProfileView_Night_6_en",20392,], +["features.userprofile.shared_UserProfileView_Day_7_en","features.userprofile.shared_UserProfileView_Night_7_en",20392,], +["features.userprofile.shared_UserProfileView_Day_8_en","features.userprofile.shared_UserProfileView_Night_8_en",20392,], +["features.userprofile.shared_UserProfileView_Day_9_en","features.userprofile.shared_UserProfileView_Night_9_en",20392,], ["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,], ["libraries.mediaviewer.impl.gallery.ui_VideoItemView_Day_1_en","libraries.mediaviewer.impl.gallery.ui_VideoItemView_Night_1_en",0,], -["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20385,], -["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20385,], +["features.preferences.impl.advanced_VideoQualitySelectorDialog_Day_0_en","features.preferences.impl.advanced_VideoQualitySelectorDialog_Night_0_en",20392,], +["features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Day_0_en","features.messages.impl.attachments.preview_VideoQualitySelectorDialog_Night_0_en",20392,], ["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",20385,], +["features.viewfolder.impl.file_ViewFileView_Day_3_en","features.viewfolder.impl.file_ViewFileView_Night_3_en",20392,], ["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,], From 444ae96030cfed4bf2e62b3bd8c0062d1fec5627 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 27 Oct 2025 17:25:56 +0100 Subject: [PATCH 296/898] =?UTF-8?q?Revert=20"Make=20sure=20declining=20a?= =?UTF-8?q?=20call=20stops=20observing=20the=20ringing=20call=20state=20(#?= =?UTF-8?q?5=E2=80=A6"=20(#5615)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 10bf5f1c8cfeb4b25ca68b19286718ea588af978. --- .../call/impl/utils/ActiveCallManager.kt | 136 +++++++++--------- .../utils/DefaultActiveCallManagerTest.kt | 45 ------ 2 files changed, 64 insertions(+), 117 deletions(-) diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt index 0f4a96250b..34f46d1ea0 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/ActiveCallManager.kt @@ -28,9 +28,7 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.di.annotations.ApplicationContext import io.element.android.libraries.matrix.api.MatrixClientProvider -import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.SessionId -import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder import io.element.android.libraries.push.api.notifications.ForegroundServiceType import io.element.android.libraries.push.api.notifications.NotificationIdProvider @@ -41,17 +39,16 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex @@ -183,7 +180,13 @@ class DefaultActiveCallManager( val previousActiveCall = activeCall.value ?: return val notificationData = (previousActiveCall.callState as? CallState.Ringing)?.notificationData ?: return - removeCurrentCall() + activeCall.value = null + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after timeout") + activeWakeLock.release() + } + + cancelIncomingCallNotification() if (displayMissedCallNotification) { displayMissedCallNotification(notificationData) @@ -208,16 +211,24 @@ class DefaultActiveCallManager( ?.declineCall(notificationData.eventId) } - removeCurrentCall() + cancelIncomingCallNotification() + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after hang up") + activeWakeLock.release() + } + timedOutCallJob?.cancel() + activeCall.value = null } - /** - * Removes the current active call and any associated UI, cancelling the timeouts and wakelocks. - */ override suspend fun joinedCall(callType: CallType) = mutex.withLock { Timber.tag(tag).d("Joined call: $callType") - removeCurrentCall() + cancelIncomingCallNotification() + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after joining call") + activeWakeLock.release() + } + timedOutCallJob?.cancel() activeCall.value = ActiveCall( callType = callType, @@ -225,23 +236,6 @@ class DefaultActiveCallManager( ) } - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) - internal fun removeCurrentCall() { - // Cancel and remove the timeout call job, if any - timedOutCallJob?.cancel() - timedOutCallJob = null - - // Remove the active call and cancel the notification - activeCall.value = null - cancelIncomingCallNotification() - - // Also remove any wake locks that may be held - if (activeWakeLock?.isHeld == true) { - Timber.tag(tag).d("Releasing partial wakelock after call declined from another session") - activeWakeLock.release() - } - } - @SuppressLint("MissingPermission") private suspend fun showIncomingCallNotification(notificationData: CallNotificationData) { Timber.tag(tag).d("Displaying ringing call notification") @@ -287,75 +281,73 @@ class DefaultActiveCallManager( @OptIn(ExperimentalCoroutinesApi::class) private fun observeRingingCall() { - val roomForActiveCallFlow: Flow?> = activeCall.mapLatest { activeCall -> - val callType = activeCall?.callType as? CallType.RoomCall ?: return@mapLatest null - val ringingInfo = activeCall.callState as? CallState.Ringing ?: return@mapLatest null - val client = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull() ?: run { - Timber.tag(tag).d("Couldn't find session for incoming call: $activeCall") - return@mapLatest null - } - val room = client.getRoom(callType.roomId) ?: run { - Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") - return@mapLatest null - } + activeCall + .filterNotNull() + .filter { it.callState is CallState.Ringing && it.callType is CallType.RoomCall } + .flatMapLatest { activeCall -> + val callType = activeCall.callType as CallType.RoomCall + val ringingInfo = activeCall.callState as CallState.Ringing + val client = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull() ?: run { + Timber.tag(tag).d("Couldn't find session for incoming call: $activeCall") + return@flatMapLatest flowOf() + } + val room = client.getRoom(callType.roomId) ?: run { + Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") + return@flatMapLatest flowOf() + } - Timber.tag(tag).d("Found room for ringing call: ${room.roomId}") - - val eventId = ringingInfo.notificationData.eventId - room to eventId - } - - roomForActiveCallFlow - .flatMapLatest { pair -> - val (room, eventId) = pair - // This will cancel the previous iteration of flatMapLatest if the active call is now null - ?: return@flatMapLatest flowOf() + Timber.tag(tag).d("Found room for ringing call: ${room.roomId}") // If we have declined from another phone we want to stop ringing. - room.subscribeToCallDecline(eventId) + room.subscribeToCallDecline(ringingInfo.notificationData.eventId) .filter { decliner -> Timber.tag(tag).d("Call: $activeCall was declined by $decliner") // only want to listen if the call was declined from another of my sessions, // (we are ringing for an incoming call in a DM) - decliner == room.sessionId + decliner == client.sessionId } } .onEach { decliner -> Timber.tag(tag).d("Call: $activeCall was declined by user from another session") - removeCurrentCall() + // Remove the active call and cancel the notification + activeCall.value = null + if (activeWakeLock?.isHeld == true) { + Timber.tag(tag).d("Releasing partial wakelock after call declined from another session") + activeWakeLock.release() + } + cancelIncomingCallNotification() } .launchIn(coroutineScope) - // This will observe ringing calls and ensure they're terminated if the room call is cancelled or if the user // has joined the call from another session. - roomForActiveCallFlow - .flatMapLatest { pair -> - val (room, _) = pair - // This will cancel the previous iteration of flatMapLatest if the active call is now null - ?: return@flatMapLatest flowOf() - - // We now observe the room info for changes to the active call state and the call participants + activeCall + .filterNotNull() + .filter { it.callState is CallState.Ringing && it.callType is CallType.RoomCall } + .flatMapLatest { activeCall -> + val callType = activeCall.callType as CallType.RoomCall + // Get a flow of updated `hasRoomCall` and `activeRoomCallParticipants` values for the room + val room = matrixClientProvider.getOrRestore(callType.sessionId).getOrNull()?.getRoom(callType.roomId) ?: run { + Timber.tag(tag).d("Couldn't find room for incoming call: $activeCall") + return@flatMapLatest flowOf() + } room.roomInfoFlow.map { - val participants = it.activeRoomCallParticipants - Timber.tag(tag).d("Room call status changed for ringing call | hasRoomCall: ${it.hasRoomCall} | participants: $participants") - val userIsInTheCall = room.sessionId in participants - it.hasRoomCall to userIsInTheCall + Timber.tag(tag).d("Has room call status changed for ringing call: ${it.hasRoomCall}") + it.hasRoomCall to (callType.sessionId in it.activeRoomCallParticipants) } } - // Filter out duplicate values + // We only want to check if the room active call status changes .distinctUntilChanged() // Skip the first one, we're not interested in it (if the check below passes, it had to be active anyway) .drop(1) .onEach { (roomHasActiveCall, userIsInTheCall) -> if (!roomHasActiveCall) { - val notificationData = (activeCall.value?.callState as? CallState.Ringing)?.notificationData - removeCurrentCall() - - if (notificationData != null) { - displayMissedCallNotification(notificationData) - } + // The call was cancelled + timedOutCallJob?.cancel() + incomingCallTimedOut(displayMissedCallNotification = true) } else if (userIsInTheCall) { - removeCurrentCall() + // The user joined the call from another session + timedOutCallJob?.cancel() + incomingCallTimedOut(displayMissedCallNotification = false) } } .launchIn(coroutineScope) diff --git a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt index d4993cec17..3d1c35df4d 100644 --- a/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt +++ b/features/call/impl/src/test/kotlin/io/element/android/features/call/utils/DefaultActiveCallManagerTest.kt @@ -28,7 +28,6 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID_2 import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID_2 import io.element.android.libraries.matrix.test.A_SESSION_ID -import io.element.android.libraries.matrix.test.A_USER_ID_2 import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.matrix.test.FakeMatrixClientProvider import io.element.android.libraries.matrix.test.room.FakeBaseRoom @@ -47,7 +46,6 @@ import io.element.android.tests.testutils.lambda.value import io.element.android.tests.testutils.plantTestTimber import io.mockk.coVerify import io.mockk.mockk -import io.mockk.spyk import io.mockk.verify import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope @@ -333,49 +331,6 @@ class DefaultActiveCallManagerTest { assertThat(manager.activeCall.value).isNull() } - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun `observeRingingCalls - declining won't do anything if the call was already cancelled`() = runTest { - val room = FakeBaseRoom().apply { - givenRoomInfo(aRoomInfo()) - } - val client = FakeMatrixClient().apply { - givenGetRoomResult(A_ROOM_ID, room) - } - val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(client) }) - val notificationManagerCompat = mockk(relaxed = true) - val manager = spyk( - createActiveCallManager( - matrixClientProvider = matrixClientProvider, - notificationManagerCompat = notificationManagerCompat, - ) - ) - - manager.registerIncomingCall(aCallNotificationData()) - - // Call is active (the other user join the call) - room.givenRoomInfo(aRoomInfo(hasRoomCall = true)) - advanceTimeBy(1) - - // Call is cancelled by us, hanging up - manager.hungUpCall(CallType.RoomCall(A_SESSION_ID, A_ROOM_ID)) - advanceTimeBy(1) - - verify(exactly = 1) { notificationManagerCompat.cancel(any()) } - verify(exactly = 1) { manager.removeCurrentCall() } - assertThat(manager.activeCall.value).isNull() - assertThat(manager.activeWakeLock?.isHeld).isNull() - - // Simulate that another user declined the call - room.givenDecliner(A_USER_ID_2, AN_EVENT_ID) - advanceTimeBy(1) - - // Check everything stays the same, no extra call to cancelling notifications - verify(exactly = 1) { notificationManagerCompat.cancel(any()) } - verify(exactly = 1) { manager.removeCurrentCall() } - assertThat(manager.activeWakeLock?.isHeld).isNull() - } - @OptIn(ExperimentalCoroutinesApi::class) @Test fun `observeRingingCalls - will do nothing if either the session or the room are not found`() = runTest { From 2fb3f84d2a37e25d0b796dfc9a245c6cab8d9fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 3 Nov 2025 12:29:08 +0100 Subject: [PATCH 297/898] Setting version for the release 25.11.0 --- plugins/src/main/kotlin/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt index 673f3cb724..401c76d088 100644 --- a/plugins/src/main/kotlin/Versions.kt +++ b/plugins/src/main/kotlin/Versions.kt @@ -38,13 +38,13 @@ private const val versionYear = 25 * Month of the version on 2 digits. Value must be in [1,12]. * Do not update this value. it is updated by the release script. */ -private const val versionMonth = 10 +private const val versionMonth = 11 /** * Release number in the month. Value must be in [0,99]. * Do not update this value. it is updated by the release script. */ -private const val versionReleaseNumber = 1 +private const val versionReleaseNumber = 0 object Versions { /** From 569f9a3735ae95593d5ba3039f447326e08ca118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 3 Nov 2025 13:11:16 +0100 Subject: [PATCH 298/898] Changelog for version 25.11.0 --- CHANGES.md | 9 +++++++++ fastlane/metadata/android/en-US/changelogs/202511000.txt | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/202511000.txt diff --git a/CHANGES.md b/CHANGES.md index 6afb930a5b..1ac0cd1124 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,12 @@ +Changes in Element X v25.11.0 +============================= + +Hotfix release. + +Includes https://github.com/element-hq/element-x-android/pull/5615, which fixes an issue that prevented Element Call notifications from being displayed sometimes. + +**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.10.1...v25.11.0 + Changes in Element X v25.10.1 ============================= diff --git a/fastlane/metadata/android/en-US/changelogs/202511000.txt b/fastlane/metadata/android/en-US/changelogs/202511000.txt new file mode 100644 index 0000000000..8afd7460fc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/202511000.txt @@ -0,0 +1,2 @@ +Main changes in this version: fixes an issue that prevented Element Call notifications from being displayed sometimes. +Full changelog: https://github.com/element-hq/element-x-android/releases From 2fd777c2db0178f47ca96d39518714e513e1a327 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 13:46:14 +0100 Subject: [PATCH 299/898] Fix navigation issue. --- .../main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index ae61a03281..00529bdf20 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -404,7 +404,7 @@ class LoggedInFlowNode( } override fun navigateToBugReport() { - callback.navigateToAddAccount() + callback.navigateToBugReport() } override fun navigateToSecureBackup() { From d373cbe8a7ecc8f337d577d51d775a4e90342c39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 3 Nov 2025 14:43:18 +0100 Subject: [PATCH 300/898] Create `PinnedEventsTimelineProvider`, expose it in `TimelineBindings` --- .../kotlin/io/element/android/x/di/RoomGraph.kt | 3 ++- .../android/appnav/di/TimelineBindings.kt | 16 ++++++++++++++++ .../api/pinned/PinnedEventsTimelineProvider.kt | 12 ++++++++++++ ...kt => DefaultPinnedEventsTimelineProvider.kt} | 9 ++++++--- 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 appnav/src/main/kotlin/io/element/android/appnav/di/TimelineBindings.kt create mode 100644 features/messages/api/src/main/kotlin/io/element/android/features/messages/api/pinned/PinnedEventsTimelineProvider.kt rename features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/{PinnedEventsTimelineProvider.kt => DefaultPinnedEventsTimelineProvider.kt} (91%) diff --git a/app/src/main/kotlin/io/element/android/x/di/RoomGraph.kt b/app/src/main/kotlin/io/element/android/x/di/RoomGraph.kt index e48dd52daf..c9dfd266d9 100644 --- a/app/src/main/kotlin/io/element/android/x/di/RoomGraph.kt +++ b/app/src/main/kotlin/io/element/android/x/di/RoomGraph.kt @@ -9,13 +9,14 @@ package io.element.android.x.di import dev.zacsweers.metro.GraphExtension import dev.zacsweers.metro.Provides +import io.element.android.appnav.di.TimelineBindings import io.element.android.libraries.architecture.NodeFactoriesBindings import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.JoinedRoom @GraphExtension(RoomScope::class) -interface RoomGraph : NodeFactoriesBindings { +interface RoomGraph : NodeFactoriesBindings, TimelineBindings { @GraphExtension.Factory interface Factory { fun create( diff --git a/appnav/src/main/kotlin/io/element/android/appnav/di/TimelineBindings.kt b/appnav/src/main/kotlin/io/element/android/appnav/di/TimelineBindings.kt new file mode 100644 index 0000000000..e338f2ba8e --- /dev/null +++ b/appnav/src/main/kotlin/io/element/android/appnav/di/TimelineBindings.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.appnav.di + +import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider +import io.element.android.libraries.matrix.api.timeline.TimelineProvider + +interface TimelineBindings { + val timelineProvider: TimelineProvider + val pinnedEventsTimelineProvider: PinnedEventsTimelineProvider +} diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/pinned/PinnedEventsTimelineProvider.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/pinned/PinnedEventsTimelineProvider.kt new file mode 100644 index 0000000000..026486e00a --- /dev/null +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/pinned/PinnedEventsTimelineProvider.kt @@ -0,0 +1,12 @@ +/* + * 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.messages.api.pinned + +import io.element.android.libraries.matrix.api.timeline.TimelineProvider + +interface PinnedEventsTimelineProvider : TimelineProvider diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/PinnedEventsTimelineProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt similarity index 91% rename from features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/PinnedEventsTimelineProvider.kt rename to features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt index 811516e022..0e2de50b86 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/PinnedEventsTimelineProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt @@ -7,8 +7,11 @@ package io.element.android.features.messages.impl.pinned +import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn +import dev.zacsweers.metro.binding +import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.mapState @@ -17,7 +20,6 @@ import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.timeline.Timeline -import io.element.android.libraries.matrix.api.timeline.TimelineProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.MutableStateFlow @@ -29,12 +31,13 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext @SingleIn(RoomScope::class) +@ContributesBinding(RoomScope::class, binding = binding()) @Inject -class PinnedEventsTimelineProvider( +class DefaultPinnedEventsTimelineProvider( private val room: JoinedRoom, private val syncService: SyncService, private val dispatchers: CoroutineDispatchers, -) : TimelineProvider { +) : PinnedEventsTimelineProvider { private val _timelineStateFlow: MutableStateFlow> = MutableStateFlow(AsyncData.Uninitialized) From 7421e6545c603640fb5eb75463abd1a9e5972832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 3 Nov 2025 14:43:57 +0100 Subject: [PATCH 301/898] Pass around `fromPinnedEvents` so we can use it to decide whether to forward the event from the main timeline or the pinned events one --- .../features/messages/api/MessagesEntryPoint.kt | 2 +- .../android/features/messages/impl/MessagesFlowNode.kt | 8 ++++---- .../pinned/banner/PinnedMessagesBannerPresenter.kt | 4 ++-- .../impl/pinned/list/PinnedMessagesListPresenter.kt | 4 ++-- .../pinned/banner/PinnedMessagesBannerPresenterTest.kt | 4 ++-- .../pinned/list/PinnedMessagesListPresenterTest.kt | 4 ++-- .../features/roomdetails/api/RoomDetailsEntryPoint.kt | 2 +- .../features/roomdetails/impl/RoomDetailsFlowNode.kt | 10 +++++----- .../features/userprofile/impl/UserProfileFlowNode.kt | 2 +- .../mediaviewer/api/MediaGalleryEntryPoint.kt | 2 +- .../libraries/mediaviewer/api/MediaViewerEntryPoint.kt | 2 +- .../impl/datasource/MediaGalleryDataSource.kt | 5 +++++ .../impl/gallery/root/MediaGalleryFlowNode.kt | 6 +++--- .../mediaviewer/impl/viewer/MediaViewerDataSource.kt | 2 ++ .../mediaviewer/impl/viewer/MediaViewerNavigator.kt | 2 +- .../mediaviewer/impl/viewer/MediaViewerNode.kt | 4 ++-- .../mediaviewer/impl/viewer/MediaViewerPresenter.kt | 2 +- .../impl/viewer/SingleMediaGalleryDataSource.kt | 2 ++ 18 files changed, 38 insertions(+), 29 deletions(-) diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 54df2b7fec..901a243945 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -35,7 +35,7 @@ interface MessagesEntryPoint : FeatureEntryPoint { fun navigateToRoomDetails() fun navigateToRoomMemberDetails(userId: UserId) fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun forwardEvent(eventId: EventId) + fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) fun navigateToRoom(roomId: RoomId) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index 7d468354d8..b4320ab69e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -35,7 +35,7 @@ import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.api.MessagesEntryPointNode import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewNode -import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider +import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider import io.element.android.features.messages.impl.pinned.list.PinnedMessagesListNode import io.element.android.features.messages.impl.report.ReportMessageNode import io.element.android.features.messages.impl.threads.ThreadedMessagesNode @@ -115,7 +115,7 @@ class MessagesFlowNode( private val roomNamesCache: RoomNamesCache, private val mentionSpanUpdater: MentionSpanUpdater, private val mentionSpanTheme: MentionSpanTheme, - private val pinnedEventsTimelineProvider: PinnedEventsTimelineProvider, + private val pinnedEventsTimelineProvider: DefaultPinnedEventsTimelineProvider, private val timelineController: TimelineController, private val knockRequestsListEntryPoint: KnockRequestsListEntryPoint, private val dateFormatter: DateFormatter, @@ -315,9 +315,9 @@ class MessagesFlowNode( this@MessagesFlowNode.viewInTimeline(eventId) } - override fun forwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { // Need to go to the parent because of the overlay - callback.forwardEvent(eventId) + callback.forwardEvent(eventId, fromPinnedEvents) } } mediaViewerEntryPoint.createNode( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt index 5833da56dc..c0f2cccb6f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt @@ -18,7 +18,7 @@ import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import dev.zacsweers.metro.Inject -import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider +import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.room.BaseRoom @@ -35,7 +35,7 @@ import kotlinx.coroutines.flow.onEach class PinnedMessagesBannerPresenter( private val room: BaseRoom, private val itemFactory: PinnedMessagesBannerItemFactory, - private val pinnedEventsTimelineProvider: PinnedEventsTimelineProvider, + private val pinnedEventsTimelineProvider: DefaultPinnedEventsTimelineProvider, ) : Presenter { private val pinnedItems = mutableStateOf>>(AsyncData.Uninitialized) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt index 6d09e12447..764286ce2e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt @@ -26,7 +26,7 @@ import io.element.android.features.messages.impl.UserEventPermissions import io.element.android.features.messages.impl.actionlist.ActionListState import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction import io.element.android.features.messages.impl.link.LinkState -import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider +import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider import io.element.android.features.messages.impl.timeline.TimelineRoomInfo import io.element.android.features.messages.impl.timeline.factories.TimelineItemsFactory import io.element.android.features.messages.impl.timeline.factories.TimelineItemsFactoryConfig @@ -66,7 +66,7 @@ class PinnedMessagesListPresenter( @Assisted private val navigator: PinnedMessagesListNavigator, private val room: JoinedRoom, timelineItemsFactoryCreator: TimelineItemsFactory.Creator, - private val timelineProvider: PinnedEventsTimelineProvider, + private val timelineProvider: DefaultPinnedEventsTimelineProvider, private val timelineProtectionPresenter: Presenter, private val linkPresenter: Presenter, private val snackbarDispatcher: SnackbarDispatcher, diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt index 38182dec1d..b1be33d928 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt @@ -8,7 +8,7 @@ package io.element.android.features.messages.impl.pinned.banner import com.google.common.truth.Truth.assertThat -import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider +import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider import io.element.android.libraries.eventformatter.test.FakePinnedMessagesBannerFormatter import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.sync.SyncService @@ -195,7 +195,7 @@ class PinnedMessagesBannerPresenterTest { internal fun TestScope.createPinnedEventsTimelineProvider( room: JoinedRoom = FakeJoinedRoom(), syncService: SyncService = FakeSyncService(), -) = PinnedEventsTimelineProvider( +) = DefaultPinnedEventsTimelineProvider( room = room, syncService = syncService, dispatchers = testCoroutineDispatchers(), diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt index 07778ab381..5087bd3558 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt @@ -13,7 +13,7 @@ import io.element.android.features.messages.impl.actionlist.anActionListState import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction import io.element.android.features.messages.impl.fixtures.aTimelineItemsFactoryCreator import io.element.android.features.messages.impl.link.aLinkState -import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider +import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.protection.aTimelineProtectionState import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher @@ -300,7 +300,7 @@ class PinnedMessagesListPresenterTest { analyticsService: AnalyticsService = FakeAnalyticsService(), featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(), ): PinnedMessagesListPresenter { - val timelineProvider = PinnedEventsTimelineProvider( + val timelineProvider = DefaultPinnedEventsTimelineProvider( room = room, syncService = syncService, dispatchers = testCoroutineDispatchers(), diff --git a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt index 3a690ddea6..96ff1ae96e 100644 --- a/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt +++ b/features/roomdetails/api/src/main/kotlin/io/element/android/features/roomdetails/api/RoomDetailsEntryPoint.kt @@ -40,7 +40,7 @@ interface RoomDetailsEntryPoint : FeatureEntryPoint { fun navigateToGlobalNotificationSettings() fun navigateToRoom(roomId: RoomId, serverNames: List) fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) - fun startForwardEventFlow(eventId: EventId) + fun startForwardEventFlow(eventId: EventId, fromPinnedEvents: Boolean) } fun createNode( 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 d31adaae8d..5eee694786 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 @@ -299,7 +299,7 @@ class RoomDetailsFlowNode( // Cannot happen } - override fun forwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { // Cannot happen } } @@ -331,8 +331,8 @@ class RoomDetailsFlowNode( callback.handlePermalinkClick(permalinkData, pushToBackstack = false) } - override fun forward(eventId: EventId) { - callback.startForwardEventFlow(eventId) + override fun forward(eventId: EventId, fromPinnedEvents: Boolean) { + callback.startForwardEventFlow(eventId, fromPinnedEvents) } } mediaGalleryEntryPoint.createNode( @@ -358,8 +358,8 @@ class RoomDetailsFlowNode( callback.handlePermalinkClick(data, pushToBackstack) } - override fun forwardEvent(eventId: EventId) { - callback.startForwardEventFlow(eventId) + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { + callback.startForwardEventFlow(eventId, fromPinnedEvents) } override fun navigateToRoom(roomId: RoomId) { diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt index fd019c3587..0b36452b45 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/UserProfileFlowNode.kt @@ -103,7 +103,7 @@ class UserProfileFlowNode( // Cannot happen } - override fun forwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { // Cannot happen } } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt index dd71f302d4..2fdcaf1bd0 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaGalleryEntryPoint.kt @@ -23,6 +23,6 @@ interface MediaGalleryEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onBackClick() fun viewInTimeline(eventId: EventId) - fun forward(eventId: EventId) + fun forward(eventId: EventId, fromPinnedEvents: Boolean) } } diff --git a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt index 201573dc70..ab1c78abea 100644 --- a/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt +++ b/libraries/mediaviewer/api/src/main/kotlin/io/element/android/libraries/mediaviewer/api/MediaViewerEntryPoint.kt @@ -31,7 +31,7 @@ interface MediaViewerEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onDone() fun viewInTimeline(eventId: EventId) - fun forwardEvent(eventId: EventId) + fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) } data class Params( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt index eb822b4969..46bfedacb1 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt @@ -32,6 +32,7 @@ interface MediaGalleryDataSource { fun start() fun groupedMediaItemsFlow(): Flow> fun getLastData(): AsyncData + fun fromPinnedEvents(): Boolean suspend fun loadMore(direction: Timeline.PaginationDirection) suspend fun deleteItem(eventId: EventId) } @@ -46,6 +47,10 @@ class TimelineMediaGalleryDataSource( ) : MediaGalleryDataSource { private var timeline: Timeline? = null + override fun fromPinnedEvents(): Boolean { + return timeline?.mode == Timeline.Mode.PinnedEvents + } + private val groupedMediaItemsFlow = MutableSharedFlow>(replay = 1) override fun groupedMediaItemsFlow(): Flow> = groupedMediaItemsFlow diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt index cc71b49dac..e21da04586 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/root/MediaGalleryFlowNode.kt @@ -85,7 +85,7 @@ class MediaGalleryFlowNode( } override fun forward(eventId: EventId) { - callback.forward(eventId) + callback.forward(eventId, fromPinnedEvents = false) } override fun showItem(item: MediaItem.Event) { @@ -119,9 +119,9 @@ class MediaGalleryFlowNode( callback.viewInTimeline(eventId) } - override fun forwardEvent(eventId: EventId) { + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { // Need to go to the parent because of the overlay - callback.forward(eventId) + callback.forward(eventId, fromPinnedEvents) } } mediaViewerEntryPoint.createNode( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt index 1046a80fe3..62d87a770a 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt @@ -61,6 +61,8 @@ class MediaViewerDataSource( private val localMediaStates: MutableMap>> = mutableMapOf() + fun fromPinnedEvents(): Boolean = galleryDataSource.fromPinnedEvents() + fun setup() { galleryDataSource.start() } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt index 77e253dfa5..b3fa321170 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNavigator.kt @@ -11,6 +11,6 @@ import io.element.android.libraries.matrix.api.core.EventId interface MediaViewerNavigator { fun onViewInTimelineClick(eventId: EventId) - fun onForwardClick(eventId: EventId) + fun onForwardClick(eventId: EventId, fromPinnedEvents: Boolean) fun onItemDeleted() } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index 79a95c4648..195f1589d6 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -64,8 +64,8 @@ class MediaViewerNode( callback.viewInTimeline(eventId) } - override fun onForwardClick(eventId: EventId) { - callback.forwardEvent(eventId) + override fun onForwardClick(eventId: EventId, fromPinnedEvents: Boolean) { + callback.forwardEvent(eventId, fromPinnedEvents) } override fun onItemDeleted() { diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt index 726e9989ce..be10af3f6d 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt @@ -119,7 +119,7 @@ class MediaViewerPresenter( } is MediaViewerEvents.Forward -> { mediaBottomSheetState = MediaBottomSheetState.Hidden - navigator.onForwardClick(event.eventId) + navigator.onForwardClick(event.eventId, fromPinnedEvents = dataSource.fromPinnedEvents()) } is MediaViewerEvents.OpenInfo -> coroutineScope.launch { mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt index 94ac0fea21..1d683fd8da 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt @@ -27,6 +27,8 @@ class SingleMediaGalleryDataSource( override fun start() = Unit override fun groupedMediaItemsFlow() = flowOf(AsyncData.Success(data)) override fun getLastData(): AsyncData = AsyncData.Success(data) + override fun fromPinnedEvents(): Boolean = false + override suspend fun loadMore(direction: Timeline.PaginationDirection) = Unit override suspend fun deleteItem(eventId: EventId) = Unit From 0bed2ae386126756b22f16bda077a6181854e302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Mon, 3 Nov 2025 14:44:29 +0100 Subject: [PATCH 302/898] Use the new `fromPinnedEvents` parameter in `JoinedRoomLoadedFlowNode` through `TimelineBindings` --- .../room/joined/JoinedRoomLoadedFlowNode.kt | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 16eaff89b1..8216ee512c 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -22,10 +22,12 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory +import io.element.android.appnav.di.TimelineBindings import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint import io.element.android.features.messages.api.MessagesEntryPointNode +import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView @@ -44,6 +46,7 @@ import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.libraries.matrix.api.timeline.TimelineProvider import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope @@ -136,8 +139,8 @@ class JoinedRoomLoadedFlowNode( callback.handlePermalinkClick(data, pushToBackstack) } - override fun startForwardEventFlow(eventId: EventId) { - backstack.push(NavTarget.ForwardEvent(eventId)) + override fun startForwardEventFlow(eventId: EventId, fromPinnedEvents: Boolean) { + backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents)) } } return roomDetailsEntryPoint.createNode( @@ -169,7 +172,11 @@ class JoinedRoomLoadedFlowNode( createSpaceNode(buildContext) } is NavTarget.ForwardEvent -> { - val timelineProvider = { MutableStateFlow(inputs.room.liveTimeline).asStateFlow() } + val timelineProvider = if (navTarget.fromPinnedEvents) { + (graph as TimelineBindings).pinnedEventsTimelineProvider + } else { + (graph as TimelineBindings).timelineProvider + } val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider) val callback = object : ForwardEntryPoint.Callback { override fun onDone(roomIds: List) { @@ -228,8 +235,8 @@ class JoinedRoomLoadedFlowNode( callback.handlePermalinkClick(data, pushToBackstack) } - override fun forwardEvent(eventId: EventId) { - backstack.push(NavTarget.ForwardEvent(eventId)) + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) { + backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents)) } override fun navigateToRoom(roomId: RoomId) { @@ -266,7 +273,7 @@ class JoinedRoomLoadedFlowNode( data class RoomMemberDetails(val userId: UserId) : NavTarget @Parcelize - data class ForwardEvent(val eventId: EventId) : NavTarget + data class ForwardEvent(val eventId: EventId, val fromPinnedEvents: Boolean) : NavTarget @Parcelize data object RoomNotificationSettings : NavTarget From 19b0e27ab20f1e919c3b11556fb19d50b070aeb4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 14:58:40 +0100 Subject: [PATCH 303/898] Update notification sound --- .../push/impl/src/main/res/raw/message.mp3 | Bin 22414 -> 8685 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libraries/push/impl/src/main/res/raw/message.mp3 b/libraries/push/impl/src/main/res/raw/message.mp3 index 5e9645adaf1f2b7435ef29360c690b8ddc405d3a..abc056786c8504a9441ed74e955d9dcfa6bac927 100644 GIT binary patch literal 8685 zcmd^^cQhQ)!}rJTYOAwYHLC^@RwsnjqJ&s1QDgNkM2K$n-b+@CUZa<25nYr>wCITz zL?noiLS!F)&-0%1{_+0({PTYPn7Q}dnYrKj+%q$G&ec+rfB;wUUmcFB_~!Y@g_BIk;-OB%1}zU1{4Gnah0V(*fZD+rfdCArLOdzD%Cs`7u}1^-Wp zt4}9)i<)qrX$JtH9`;EpYXpESUQDaR1L6hpd-@#2{jS~ygil9(l52f-9a!- zbw{O2=8wY~aOvNHSlKQ?)aBin+Y9!0^x{oeiENnv{zVH@y=Rz$uD~Pw$dA3~p}N#wU730r5L928#8?h%T$&`##T_Pq>HYBgvIhRWvl5SvhmZ~3C96aBAEHG~=QogWP;WS6fZhEN3ul5tqwW` z&;kJYgF*KfEABV|C^fCGi&whx4+X$g3imzSivT&EJj)RnkZjj!)me$7-6Xxy&WQ!( zxClZtacYmXJ*nV>n(ds~r=3Y$fx zu{%(pr}l(nWk&zddSo^ize-a`arT*#4uqxgGr3B-sJ(uBoBmwno91i*KyT+vQNMB- z>`HNTb#`V$!uOa5GH zdD1#&P)J}TRWdB$I{Z5%qbgR)b%w4YiqUx6mzgKjN*Zmy*yL^S!%q1X#E242e*BCY z{YF}xLivV@sh2_3fO8vW{E4@QZAGB|uX&}^g&~uJha3lZFT$GcF9N#li8xutCbJ-D zF7)%G%Pv>6wNNjn)%z~P))=voZ7tT@MKPE*&E?%}Q8iIocq@$^E`T<4;5AKts6TtB zF1m}s<6|#RWOb{CrLXX1YYViJFjUpJsj<9iy7Er}fD0AY4y>^d$^J9jH*kPx^2czgUE#>2QCVD(FcXQxz&~s%6EnL z`a96L^q@0X>XY6JAB$^6`0MvD^C4mdzbUFBN0F;pQ%yN7y=<5$_yC1~aea%1PMZ&@ zl`yeS%gvTt!hWbwdG6ZfW4Jb)UH2EY*NR=qSRp7wG z)BBw+Xfdu_AvR)4ngUVP`i*K-SCr5Ra~bvL$4J~wu>uUKGCx2({&k2r_f-q+skD}C zZ~baY*o}}mt=kX$m>z7{th8Z+Z% zx8~*-r`+rI39AR^_o#^AS=@S4B47pGAv8s`SekWE%vA_jpawz_F<~4V{*nR?= zAQvkbf0Sb)6Uo5 zBh_CAuvS!Z@$oez!Qtq#&TyM|Ct0YLfHU0ZZ~8X9${;^-#7Wl|?}LYVFyh!xsFF&< z+NnLQgHJeB?$>D38jS+J7Pa3ym1b)`x7FX@7I{^t!6vmNI`4Wy3m6z|B=h3q9z~|D z*>L>Adg?@ix-|GiKnv=DhU4dnFuH85HH`%6wf2)xLJa_rfk+UWUj%?b5>IPMeQ#UX zlphe`H!2Soy7Es=2L7utxwRaR7O|G6;aFEs`F>3z#X$?z73uPr8PAmTCksInM${)F zAe%s)xSaX=diXkY^(;#x5`qkNNa!eDId#;aJC?MmwuMh0TUUbWgde{m}n&D;nR zj~1=(6DL_)Ek9i&}|YkWVA>UiW(Kj2&mk^K87?}99I_E z0$aC7l8I+<#D)yVq%AWj%f<&9wYQ>z! za!M-nYar~4YT#2u!^Z$ye64Hraaxq??2B@0{br*VVLQ5R%d9!tcXfllUGzM~zp#D# zs8AO|%XqYCbCaLHgJI_S9#Za?LkFbzAlkC~m8sWrtMk8*`C`#eYi3{LWpp`vxxNAb z9SBFXfkS}sWMOpSO{(}~N#z_IH5?w^|KI*0B%U-S56bq078 z6IrEF$H>+-UuvC9A{i%jcF*pWsyd@)9UtbR+sHiy^SaAyx$&axJ|rRPh?{#ST#rc{yn=jTB1Je>WMJP}tWuVZxJISM`K?{jyG0ytPVBF4p9M(2 z<1)=vYI|^g0{{FV_j1k!E`~Z!Ei>s1ZgqU9^8AiN^wS0n6`==8{^K72m+9#4*D)f+ ztf9T^*BO(shw=xt#<=15y^~`0eQ|$I3ApkD?^MO5QOohdS#iaKp{*0mww5nc(Wl-*Vjfb{=~%sK#>0mX&mNFB&PTNu zEp!zNN&tW+78typVMba1QD!$!mNgWo=P?{9{{z8xbeOWpYjyZzdrlC zP!C4@q#tEXo{E&Z>0-QCTX507XszMw(;XXSO1TKm-5-oBGFyvCF=x5&s8y~u%k<+N zU)HBrO?P_sv=6%l#<3$dMS8a4ExyDx_v8!a##XY&rvTk5I_Xq|InkpVpNyXq;|&b_ zOcOT3t+hW}Qc}l{aAY*S4U7Yx<*qBe?~5D}yUVCG?s7Rn&qBT2R-=cLqsfT;^O;ma zvF9Hpd6DErNYo6db7_5KtZhY*{Kn>QuH-DR=BS-oH9lcg@h9h@;m4f$knw7cexf{w zI90q`DLwvS=*tZz^T9^AuJ;u`u$#%Im6$nosY3Q*iejgM2=j z!e@6*uOB{G?;E-Iq!u8q3tPo8CZP}!>`5}24J%7!mgBqE^GNh!Dbp!Lf%g)ps+6P@8b2dJb=IlWVoz|nDV*Jotbr4UoQ6*H#V6wS_C)k3i5|3v) zSYcV5);;>Dm3utC_yIGMPF~`%DlSbnCE|T>y-XNNqoukNc|cKT-6r>SsJr0JyjW@e zS4iUG3_$+{l2%5#Xo>AD)$E}9)L?PVSRv(Vit#0#dm5`tAoDdTI$ziBp;-RC^v z!k~baU#Cssw6)mAhrz1;Z3#JrYkz4@vh(mBZ7>C$Vzw~#j4S`@IIx`j)c!-(zY^i` z!SEf%#Kwi22aV2s)8sWTaa<#2V}fd`_QoTGi(8=tY_ACppl^bh8}K1^m{teE7dPDP z=CM(4If3{HxMv_SRm@zpf=$q4sgj&2OS-f%^rubJ7ixtbN2fCO^Cd)Y;A0~at6c$u z2J-04gf)fUECNQI=S^Y%;HZ#**Z@~{F0NHHaYq^fWDG`1&qrsl>PG()VyO!(8pX^89kbilMPNsIR3(#vf$dgKgR-gGbhi}n$ zH>J=@|8-EmVg5GFaG365!+rJ||wF(63`8Sq`r z0)V*`9ULzuF9449PCuA6>z_i)3U?rF9xW`kwr6O+pDsz(9qf4efu$5h3;c%R;Ig!m z7OAubG;y;dV!-#O%>D)<#O#uqpm<^JfjS=VK>Cav*6Gy-Polb?%S)`hWU<$tt4$Sg znMu3SC}bPEV(@m1>=-=}MXbtDbn2Jb+#I{4+>$NPz3vr`E^bZWX&DL(mrlyPPn_pV z5l2MUDn=weElsm-U(sx9YV`nO^`I#UJz-_p*6r-Pv-|26)3T*Rdm#L0hm-ZJ zmEWZLc^-Q0Umrkfy;2U4&3(3kgsg!zSf*v|f*!sXhGGm5j!;SW36<`Jo?4N}F5_P> zpIhu!B#+B>0T8ofPXL5Z48z@#oFRqnpe0QJZ%q}u`AW^?x=Y6kb>iUV# zaIeBwGe^rYZ~ifBw-?CUGa1`C*{dOozDB1&^XF#zuy-e7bW=oYDM4E68emm}=5Bqx zyL|xB(k73&xh6H-k7sg183l@!rzj(8UPom>+otPW-XXo{&wXp2r@q`;9j=}|c#H+e zmMb&8jKw0NSYF1M!X>A!rKR5-Cq1)N&WhoE6BWtcGd>jNy_aeuzke@tbpKguT!*VK zuZVllq^$J>RZ#UvtRXz3G}|Hg$Emk-OQ69{ZA`;`!bM#W^7n@N0sYJBL#4*tjpkSZ ztX&#NWr0P7s<)i6u{1;WugbKV`1i*~E0$o<1~hbt*9KrquD%aZy?HXyj4-SK5tORPjLBo0zDE!i;2Fj~aC!9zp;bfC?Xd zW0giB98n?Ufe)uuI&R%-_m*8xt%h50FFYOoUQ!Rg?z8Yp=5SM7idlO7PSGZ

q)t zZ98?m7I$5NB$1MTu_RmyysMK6fvNB%!0e z4arpY?6OvfAR{6jrEwr}>3WSn6?g>`uTHuNRARP2KI8e0Vn4$uvthpzd>S&sbNL-% zfP?CtSSr~!mo_HEBVECTvxg7&ce)B2+>k@A=LhCdnvrA*EtAWycGg(C_DesXUq<@& z@5RVCPq?$uC(U7tE!w+0xLty0bO0Z$2&%)`nRfd}@1E6otx!Se+sf&|u*mYB3w(!@ zv0TKo@}U_3vvcvpk%;s`n%!<8*z6gjZr%LbU@wQ(m&9+APTge{NrgnP&N8^oZmjto zb!V`Kgx-x-CsyDNt}9EOA~1a_5D-SxP^)K`LeAfO*`5AAe>t$%4hhTiGvM^!jp>JW zN0wP%{iP(ngFTGHul!Ghf%?H=5^@%#U$9uLz&$g%a)+E zlyQTf0l6no9Q)(@FBWg*UpF;7D3eyiEQWgqyv|>Q{X1FH1cXL?ji*W_V_v!)K@;YljDQ03b>a27+WUTE`j6AkRgKT6zw!jmM6F|RKyralV(1-=wO=ei2p(p9m zb0weJ)Xt@JGXVbkC_p4NBVy)j{1P|dPa-ZTapixT2vjJeWgE?kP#OFZ3>j2?A*>Nm{uFFCICotov6v(dl2{X*M6XT&GixlQGcP8}h{40;5koV|Bz2 znA}FY`P405IlMb;uJXAl3V!g1J+O%aW=_YfXg^e4hPR+kF=+~04+ND_x={GOj!#qb z_}K)}ddn$ai$M==(Z59aVcCyRu|lBybn(Y6AO9TF^^6BqodDsjn#X_WDiRM_iGMq< z$A!Zc`}O7~kU!)i18$btEa$M?NlD_~`}TP@VJQ8;vfy6Ytd5^JK8{COhgYa;yer0#{-aa!4jtE9(Ug4rDXgW`Ef#Hi;YY>o#7N^Ijru#Ls&;dwM_>3IaD z7ZIWa9sQ;rD4K&S2$gL6^HbBYauE?bLgR?SaHJX60y}Dqq_?NWg#dC701%x}u86U6 z(jVgnQEBrMX9!PU`QHqa2vi!G$VH~Qy#BpNq6wl_CS{>^8X$@++%k%wtWw|~udzQ6 zEBrGOTDNB2noG!k>8;(M)qPR&cUksS5YF-}m$qrN$?R4-JDIn+<)pyZN1yf85I`vAK6= zI=bk$BBkw9^X9h^o40wu?FwnZ)=83WX%?Km0yFmnes~O4f9M(>ViWhc_RXWf!$JD1 zjub=Ci(ZLB#mr&RwoY@&IJz9ybAsu!kJVVD3>B!f(%X%`W}mLwR9;%D02(top6F1p zSHm#w>n8kat@CHf{u6yZ`zMt=tCv51Pd2tYE8p2-CmAJ+%P6k9&ebuNxOYB!ubvoU zg|DcSKhtWKtJpWy5gZkOStv_(TFEY;k_AXN`etr_#z}lF`TEI_*1{fLoeiUo zuH%ZRwJNL0=%0MS45#XmTPyAu-~1&Fe*2Gb%{a%fEB~EwvoM7_6V_sghuUQ2q$D6+ z9}ZZBTc2_?mrWE`j=%9-r&fR;ve{n6A_8v;sSFSr^2*zCF`>2h=wUukg#SzUXZGv@ zqd48WJ_!gAQ~0tc+c|)SEwBv7*weTMY5B+|XGhje(qjWd8XDSh&&1c(+KibgKFx!X zshbiC!;;wHDreXb1!PE;-!A;;qp;DCk%@6RPjlDa*Q!4JYbHwPj@9Seza#-bNRyQ> zuxF571vwp>!^(XYFT40Y=2Ll6dwN+(rK6eoulgZ#9nEghO{E2O;`FXmH}BRTTom*y zBXWFM2LA#$@y>tuJ~kK6Ivkq!vi*4}s zFFEg~%%Ujva-!+l?bd9*3L^BPZkrI4&Tlv0mOX3hezJEg4t@^J75m$vrVV)K(jtdHYNBwh_H+OS!#tD|ZnmA%Wx6B^t`e&3?^z$D4^h#A!gd!m=- zX&3Rlcs zDN@LzUO~sCAsB^`$ln$W+rM7l&Mdzhtc7w_Q)xN3aN5YQ<14g?3CSrklzzq{cjhgmcN(5R{XiuZ<*;y zl3kP&du?l8J-;yiZ1%jS)<&vVyS*h8*{2&K{&ji7z|(-W+M({~GqY$EgSfr%F`CiS z=~g2q7Q*}IJ}0rN+M|xR+EWynC5(fJ@4abGPQHmsjxWFE!^H}CiNiqFYHL&a`e)Pmq*fBbzYwb##GSZN6!Ej8!6qY3pmOnlCCLA$o%|Obe-s%2 literal 22414 zcmeGEWl$X77ygS5?(Uia1{-Wa2Q-NxVw`;aCdii_n-;xZV8s)4hfn->?FT` zopWB^m$&NP@26^acXfAFcR$rnuf12VZe=-sG{9egatLJv?C%2I-zM*5?QHGh1ypzS zvbXUETKEIil;xD|tj(=tHPqDp?m+RkS-aQ*e0_a+o$amc|83&6bano_`ak|t;6DZa zQ{X=Z{!`#T1^!duKL!3%;6DZaQ{X=Z{!`#T1^$0rfj>VEto}b;qOyyP>)(Bd{x(to zKv4=n_z(L30se=`|4{sg?*Fj-hx`8s{zu~f$p0U;|LFQ3`kmV$cPnLuR`_WU=pk^arz6L%@&eS1sm>B58=v|k6Y7K3jK66`LL7$H|QldxM zpu)fM1t&bIoi}}Vf81SnZMg{ZRb7$aJ^c7n=yfxtHnscqx3EjOi!fcn^5#`@Rn@%Y z@t?=n)IUfIi4?1s3v5(ENbkT^Aqg9Ap*SsDkx0|De$;Kng@UeRd$||#WhyiZY z*rV&N?6$`F!e2hWf5Z6a58UzS3!~2VkMBRe^?wQcY4&gW=THBa>sOz?z5n0iDeu#d zyEpWb#j@xqgqjD%Kx}D%?4y(vv4|!y`imbG-wXbHmn4cB_=N?_5k7%nE@%3aez<^d?p6WABm;eJ51wb_l z=WACy_ly(JM}@IR}51)xD&>xf;INz|FdPyG)Xyhmb$Q0wkX$X?zy- z^_2K&-61^ParNb!t&@U%0Z%)bAfy=MlXgb!$uM_i(fh=@y}hBYB4u79Ex=~N}Z>pyMKFv=NI0svCff5jV+>swj?440Zr z54nvBDuGTQCK^hX1SpnhgUOl`5}2`oQzQrrHcT*ZH%xZD#~Ud^T0RSEQ{x1_lCs@)`#FGx{tA_85s;+bYo}*9{!jB|=jZfLkq{<}a zJwrM`fseC5HG|>?o2TPG;qwdgDL4hbo06TO%iH_GC^Nml|9UruAg!79TuyW6 z%+7CROb~cP55SmXn0j~G@G0Y)(NQ&zh%QK+}q`d_NFB^WQ8-2fgHh#IAap_Yy>SyXy`Dn)Z{Ki;h zy`%3(Q;M~Rt)cI|G54EqnLlK)%;$U!T+`nt_CAe^<^Fov@oE3tdy~)pNsfo$l&bLA z-xm;MEW?q&;E5&Xe59|#nH7k^1{-w@S&18ozVn1UKtCcGz%^GzM;m;H6d(>k0V5Hp zl^DfBN7UpYUz}qb(I@R_TZ2;H7s8h@9q!E6f3!42d*0B)>;+C z8f8QMG9!)>#H_6$Tyi-Wz{KhMZk!jAh$)M{(*>2{(Q(-Q1NFpPMlXJl#AV6O6&^)X zp~8!z2@NS^qS-CUAfO+jz!5T)XcT7?N)`&&TxKQH^-NfnAitL7N7r%IQ5C$vrk)d7 z;rJ}!2QgP@#{!M>M;1@Xlg*gphXl*89LO_G+n7NHw-996OxfmHbC`<306;OG*=;lG z6=iZCUP)IqjSZe%0r7rhrDH+U{K)#o7h8|V$mS8+10u){Hw(TyYf^7!FLk)6?gx*p zw^!vtQ`=oZ?T`!psJ$)eXx=d<@}A4KPT-!l+{UK3`gwl{!1ebbCC?CJ%4?{8_T#NGN-4n$8~yyiy<8>U{TQlmnUB`DOH6mT>=N z+*GU>w%)U!l{#z0TIgdceh9QM3}~f522L8z0v<#OJ$N9L7FEWjl=y?@9ss}!&z`q7 zB^X_Y3-pn@k;w#d5t*1ZdW={>0f7VNUlyimo1`}ewludqw@l=jTq63lUyWDvUQ17V@gD%O)h3C_XH}MXne7n)jfLj zQkflI2T>McKu2m|&^t@nK{X75@ys$_lq~h$YYtXErc_D5hvc}6ox;Br642#6v#2%L zIFx~-sPvq@o6cd*ax{(MhH-K52a@QmjLEV#@R`)arf^YmT-3zM)apHehBNpXD~cV} zCY$7|UuJ606`X5Pw$2%HU(~ES^7t?ep?VaYdbNTsp&a+sajBJ!h&%84#x;+h(+q6d zAM_i@1rDL?0Y7VEL=7!)U4ZX2^@qfupZ+ej%7_mYkq>~#W>5!S4{l}5rp(aKlJlsd z0^9~0#Vu#|ZZo1GA;X_MM{{82ZdMqoI8fkZ{K)4lLu{jrF2-jL#Htdi5PN`oH75GV zK+r9%>S2Kp59@nVtIG#h=ju$J)o-*u>k-ty1J;EJ*W0R$Eb$3zhrH+QLPfTFO&tTC z4x2i&2#Z{yMOoXv-|n9NWT@!(>V5dZ_v%vkm;T$l_UaRe%)lK)Ec6>B!2kqnP0tPqj}(%aE=@|_xRw%oMKI&(|{r_AenX}EEqeiXwB+pHSvMr&o{{t zgU&K|PYr~bB-dhUgGMjYE4Eo!M$Xgqus&KkShyNQ$kN1DhOW1J1mVlj!2&x46kqgz z*9%`xLVfNN!_+*n7cs|eh}J{TjO>t`dhe{6B0h`dDbVAxA~Cf6&=}HC;pjxWvWocO zHuk5*^PN%UC?8{?!SC;H9G8B7{sUiDQ*V0xr^eEiI_9_IpEd75NB=xVgYL(*{y(3; zPu`jwndo?&(+0Z1u?MgrB=|a%0B%T#2tRgIDZe!i8ZOBjNDYo9+Se*bJ@&P^k|ZmV z&ag*L2tsVu6#Qm(>TIki>o%)q1*U3>X9e^(5+Sc@Ou_b6=`gr5|FaJ~tcl8_aw*c? z!72BJPj|gRkDm&HmW>{q8#eROGIOu4e8u?!#kx(~@}!-ZQoiQx={vk3c${^u{WHP; zj-*=q#n(gIE26m^M|*$@nwnup>JZW}#0~ixb;{g4`@l9YZo!ozA{ogBctTc&IML$| zh7bZsg1t~CLtyAy!EjV5bO3r_I~72e1s;ql6&)U-xniB(zS18%)zY<=m)|CIQnC5Z zzdQgcq^IKf7oM-jUz8MHu?0O7JtWaMJsOtiEndIK@wd><{1|;kO~)%AT_kVCcUhg4 z;86MtbI#7od*Ler7el4%T&X+A79*p;-}5ZaZR+Q%LETJ(%9s+qy6%4}-zV#k9eFjm<zzPEwK z#qw>0@T$Eo%jLsbeM((IV4!O~x`1{?#^3%K09lRBMqxf;F;mIbM2Bu^2f^eE)wIw? zWy1`iM0%k`Vi(6FcTmRwgOW&m!bn_TG*SoylWJEA7p)8+#h}y{kXDlp^})|V3#DX` z(AC389zLhdZKKtpF|i(ugH*S_8*!G+>Y$LIyq4t}bkxxcME;Pd9QRt1V7k2dGQspo z$<^qsC}YH)G)Rd}YJb9h$^X6EO{cbzO0mH+{AbU^2W!Q-kFQ%du^4BIET#)!tZGEl z{)gw>hlUfiz9+h4JmeHu`bimC<@^+j;`SYijh(*uKU97kxy>>i^Hku5RrEOs0Jwjp zGEZP)e`HV~C8o0xQEF0jb^3z!le%1i8pvaVlTCn$(Ts9zm6JwkvqcRoX9~9<6Pd2G zoL02l^14Sk20rOx*H-ypo{`t#--G+s;S407dC?M<>FioZEtnQIC|{;2P)@F4GFANgnDS^s&a5TLE#s@-Ru^9Hz>-jfws4c!sFJr> ziYRd|rggw-bxhn;w;Pn#QD#i`%CO96dh4`N#r6x$X2#u0;MKwx zC&Br?-J!fxCo>|~IJh$KY1sio+ImIUcm<+ZPsCq{n z>`AXA0#Un$SxUd07FcKrU7MYFK zZo%1T;i`K}{aQ1o8To`Vp@9(1S?&>&!%te&v$WpONO~-S1HPsq|+*hCG9Uwu4u~o^^dmej%LIr zP{>8n008u0;(>g!8R7V^%h;?^+Zz%L13Ri5C@nyICCtQAkqa1Q))Lq^v$r#___Wk~ zXvDG_mpHhXQ8gl<*O&sILeg8EQAfmUUkl8Pr!g7t?p6=p^kh`>s;yG7>C6<<7!Er0 z-Ck)G);Wfb?hkKhV9dsH zqDdm?*P8a65VhlTU84_KzutcO*qb!VJ{EKsJ;<1As(n?m^y%Ab<@_8M2=$lB;kRk}JJajaf+(48|fWc9)q= z>867Z4e}4QU=!oTsHFbLcjyO z*mB2Om>UJgs8!lQP|7+v+3L}wqxuKx78bUXd9g2kIni{5$bFTRhfH`p^@0WSSm=5F zeRdmVC7y&WCtJGL#|w9RHc^%c)PGf8N?>Ip5CHia(21N2-m&OqjP%$Km~df=bwVzO z1_h)l{BCtn#*{-?m6Z*JUzs+^w7IX-^(Q8aln|4n`aKe7U)h8cFdQoj-Rey5M({_%PxZlc-?tNrjQ)td!vNju-$V*k3U#YZ4#TL{i;vT0lzBD;bB(pJ0 z=p`nUu7>wab>J5}AI(W13t6E+CX1=KR;)tb2WOJU)9jWdqgjf=;y(NClbnjDE zi#UFa#^s9=^)#3ARtXz70OB$M1b{FFM?y5DhoPK!w8B5zv-w%&VG#GhH_uhkBK!p_ zWQDk4S|qzt(%lcP$1b^otdqjwn-tl9FiBPl#gayqcRf66_1iIjFb@xU$LgmaZuj4L z-KrHxZswk7S5Q%j=Ft$ba|}gBYe$}QI_YT7bFHeX>=yZuE$i+MlYhBEchLM5*eCb7zoo0`r*p%2<&x&Nj39GM#Am;UyT_;P%EWI5&bfK5tNe~?am$a+ zWM9@Cy3f$tEGS)HE1PuBD|rfi>9+KJC{J-THF_MIx36fs94e=`uoc&rV)h?3kEE{8 zgV)5=CCg@`0v2r-p_aq@p|@7aF=$H4jJ(R0EKJP$wiy#D+O7Ke;ur zd$848ykz9}utxu)$Xgi))iDIZx_EyiY~VUN2sVAtdWP~?$IHMg#=}T74A-`M<*Hn5 zIGcMdddn75>u&LJM8{xXw#J5pBv`q1a5xexa=@8_pwhDSyqkeVs$sdzeRmdRXc?Ed zG2QXXnfa`qUr$dhJ%r^CJxzl#gIn`EE7YQ2bK9y@*%k*y*`f`hqqU~$P}0r1GV9pK zCmVNIr)QjSS-(*Od|a~8DPwHY_TC3^#kSp%?LWO9nele3B)s0DS54;jeoZS5yu^N$ zy8{69NC5`uFo1vkE9aAtMei@o|HB+|r6I!kCZ5d<;}lh6H)gn6V#n}TbIyPwe)y28 zQ}wjZ`Nz=>YLUTHtdaHPGKrd*YA0xL*BH`+Nt#%aOR{U^XA^D4VVs?MGrdC4b+mSI zE%mS1xJZS|2$sF!sBuq{g|BU+ScavC*z1f~(}4X4&3p-Cz#CcZ{e->*k1?{smFUwY zgHLAC^1dJCkL@g+Nb>m-<1}*g{Vd{xTaKulVVzGDH2%93foTM8%r{Q%dN=D|zfE+D zZ~9HepKf2RPkp$1O6mRTO$5|49nGGhs$(q&De`f=0Bs2ERM7LjrAztTl_9I#!%UsDRD~Ij_m$#rN+|y#EGL-+@^V`s{0 zM`ahCSI!VdM`Oj-x<_ZPGyVA`Ub0?AAr>rPb!IcN*Lt{GlHl&P8_a z5}j)4^o{zTlxH(Lmp2kj zPbCwX18)OA?2gT6Rq{4!-{|ATkn?c%tF$?{xGYm-Eu)3=XFZ#&YgEV?=b%U)h{7Nq z#KpZB7I$dgquTacB_yXFw8jiyg~s1+O%ujIpnZ7s?n939kF zPYWY1)sYB>;9HJrU|KSk))xHPVrEfHy3n+>wnhkP$mEUn+hT!XVN+6*x6MF$U~#4=+29GYF*CFtSEeg@>S3Q#)JOip`(40u8uoJLsOPc-{jb{ z)2-LDP~CCd7L-je6=$GMa|7KDK01Uho;(;$)i7m@h;}Q7kQLY#Pv*urgR(<_j>Igv ztqoThY@7Uy=O*z&BjP!}OpviWIQnb__Nx0HtyKRERpnQRIR=#rEYBMMD|ji74pUa@uD$V52T1(ydJi*%IRg6p&BA{aQl zVm9-)%fbR7EiIhd73b?^-tqM>OCI-|O2|K4v3QsL^RG+7hg^Rtyf4;nm-8a1Z@59` zG-p5gE)T+PpTC^^1xXISpwIZ^YNl;?WR5kXU!Tr`6xvj3Z&H%G-Dv;l05UNZvk zyw|gL4)E;;8Bk4TPLl6BM@3SaO%z~(W$(aR&MDR20lF)q7=Uz^Nfa&ecdBTzJ0R+O z5)%^(__J_3O&${Ny@=tf5(Z#+xQUF@HX+b7MV4_F*m`zc5;FR(>*6}R{JGyqpJ@jr z_T;v=BSGom;n0_y)6GsT6>T!XD!GpGnw`w|W$SAcQyLZK{;zY&M}##HENy-=&*rEl zd`LH}$B)`j_2Q-rbrdJnhs6<`-u}c1s_G(3V3`oGFVwjXv=io)XPo^rh~f zAD2=LwODql*)b~9WLA`fG-ICzf2U%Kdbd=ws*wXdIKaaRr^JHJyvQ*E1k2HL6N8aJ z>7|*8Ce6C7gbNNm(&k?A)QfXvIzGdU>BNJrqqL|tnviavwU_f~Ka@P^FXt|&;em34 zyJZhEDa3D^O-qZJxZIN05RWraqMUh<#Y_x|FNVtT)F&+dHJ2F*bl*0t^#yCK9i>W^ zirfg+5$(>FD+VV<-Sm|XuUE1W)wxue=`+_KpUuU_4=o&HaT67;;_GslHZnTUmfs*f zE!;$RH|X1#v-R_co;a5(4h@x8vNfg}3k4`P((rMq@h|J<34QBp?*dvx!vi8)T%Pdc zcQsBP{rl&mo?7|CK>3eCXNjZ#CK*={1GwiJK=3n8*pi&3#@la`9 zz}MJ%Z!^F4OeJ%_bQi|#`apZB*7eu03+7U8UEFx`EDfc=N#n zY0Wxl()vrp@R8zSKCc8T4beiS5j*H5$?w7}-kGGAiWhWA@RGG^V>A*hL7!Mu% z5lQWkK!Uu%)Y!a7;!_1%&QK9A;=`&ws>a!IBuN!_&u|l~6LRDUaB@I$WpE*y5(7Yx zebEI)Wv9?gX^!z>kH{w%>kte@n*CH~)p~WR#WO2c%b*EInp*m1o)+0afqFFqEkThM zQdWBXh{?jZaTT8oEJ34-#&}=ejJF$%5A%(+5JOs$NK(^-NtSE9;wiBC)4 zTmSi28Sv2{;62_?f5=ml{>>XFHhR`$^!dy1xRSmdoWJqcR6ZciU3Ftw$Uef9gd?E! zz4*%I$=I!VOAkIxF@GJSs4zrKYkZh_cR60yGH$KX%Tf)|;9n@#(4?NTMeWhxp~FO= zJ}+=_?$OlwV#TjY>vz7bRq{!WIEtxVq6Xu;fR&eJUBj{EN$C48{mKo3*ClN0Tn#_) z>RSQOFbpV{G2|dFzVCJ*;Qiyqc6-2hHr1Iby0H%Fh#9-G_MW@~!8f;9ad5$3h94$yE;;cNxH1 z4ULJt=CZtHwstBdZ^Qv>sSFx>QUhm)Om0P$uV{;1`(CO+iq*XC@mj8WN$;sTqi_J4 z81>L@%cAv&xXCqM5*3BU%vr&MUI*(hDTP>U{D^ze5{R8R$W<6F|D;Jg_&484FfhK_`QNz$OcbnITI6W2p(y0)Xa(0Pl zq+xsZ?qat(B{ayB`~wiOp0t-{h8?uBpS`zEhn1BuRrsujm2lKG!N__@Fp*IUb+|OJ zM!%4C*u(g3RQ+ZzGuV;nctf4Zz!5F37YTpro-u8O$Fq2zUXy{2K0 z+fnVzG6YVa86N#X;qZ79aa~f&mOm8GXhf7alUaX9s&$9o9DO}{oIbQiGBk=~ZiCf{ zQ?3}N;>xF*7oVtAJq5O#?P`47wC;m^KZUP5o)kF?qJs^k&`=jpbO%0K_|;e6oqA0Yc-&V2O60QHR%h{5?BFyGHL zoFwtrzmOF7<#u?Sau#<@Qjfc+ow(-E9&jlju@`*ExkK=T7R;{t3)S()DBmq_t(nHl_Gh|J z)6I=*`de$dy1-uc#47Qo0)BKauT!SQ;mf@BS1Lu;_lk#k1A1Zs5eC#@v8x$iy`J}k zpDKA=V_n-*2qg)mkYs>%Bx`6YvXfE5YJ%&?g%R}(6UzV{gDF@YKoiUXfKhXrnB&>C z*Duhord<8TkLMx!B<`c98$I*S}a!DybnSWmNJ=iRZGT1Jdt zEXOVfubV1x)|m?{7>HNM%(7|aT+>_j^7b9x&GbO>AXj;LQc%q>{gQ02R zxiP)vxEyX$$8OSfq}J$YD9o>uXV+B3uIn_obtp5J*~`!_2+RdF6^a8%XgO&}>vY1_ zC@GZUuC!y^W3TUDiW$0%nHiLEzwS4N7n=D@d9p8@J>8uX^3+XplSk=dF7#=*TON*n zp>B%EV`pa7M{%h-b&tlUOB6{mzjV#ba=GfTiBj z@UMTro0DEA=|8-|XQt;lMx8$mkE?l(#Q9d?mh~|ai@9T4#vA4j5AX>3`aStne02C* zURpFLKEDG653j!_)8vnOYm{W)`Zt8Ie003TVC(cbtwxl}OQ`$9Dq}ZqQBmiGI|bM+ z=T_Kow8>OHsLss9K=MsSPlVb2`eU-dZ*#0bg=(HMPvS z^lCO=j>5zWj`k?&Gw$v!t|k<0{6Ix@TGW(d;rz zVd&6D{J!SQ?)3Sdojb$EB$p;F8(s2s18rE1WJF3Pi#2{X-4spuQ8Qa~&-+3HvmTn+ zoStzQlA7d}v66TsgM{}4UpyC3ZwO4DUs1uTWhIb#oR)~9J|C-)#Y7kR z=u{l>+H*cOc3Bth4#@0qKh--poIH^(kQ5WGDn-16y*|#7O&Zn(V%$R508)@7*?0kw zli)223PdsvI>W0z~KTdYrMdWtGHf zkc2cH`9)E%sQ@>H1>7Od9>$c&m^w=pF0VdxshUdA;)KTzyw21i5rC;)i~8kjc~Ei( z%F`v9+NZ z;O@VXn+L;eW<-bw@P5vDwNAxk#FNlioS5SLhDT^?Gn1faG14;uo9_%U2~avMV>{RV zZFs{U-nvg(9B{0H<^C6cc@oyD1Ek2Fl!3GJBBZaBL52~Z0UFkzIN)FZUX&+`rX0|9 z!c+fdgiXK)>LR75z+4(|9Xl`rkE~WR`)o|oRK&_dai=9n;yPyyi zi?#JkyG%XqB)XxhyfF6BK(1XM4snX8ur4UZm!R+Gbh-cRVp^i zAT-O|F$O=<0V(3KX1lVN$gN~T1ZWlIhG&y`JGq|a$j-J79Ua8fv{4v$J!8$yBKN7R zJ|1|HyFrlWw7Nr5p7b7SZ3D#uM>K_;59OHRr>rNr9!RL3u&Nyb7PmZJGm zRq0x7(c9WO6hT$l^_JL9+H6wJxXJ?X4X%(v@Qv0lp_|VFkUDT_ok0KTo(JXMEY9Da z2RlRD9YY+`0fF@Oqm9>~M@CEcBvam9oTF+`~1vc48=(M+E3g%$@P-f85 zY(T-L&J`=4$CC*!QpaiBOLm;%OrAs$daO^7e@|Ma_sYGJEW9$M$A;800Zz+4D-_LC zIfA0s$-`8kHNj?A=@iOZToAtNl*%|M8eUg6F+$c|xlCWj{VlAu58I*3R!7q?)0Nrr-MB8 zH&fFbiMj&3NG{9PSB25LYaVtIB(RO}kXnQ8RuC!fCz%PE+8H&fJU3RnJbCtCsi_KA zps`Zpg2{3QfjJ7zj6IqttkgJWmqG@CpY$GLf=Mce7d#HJs_x}9adoL9Yi)iCT3SEi zA_GKv%97#Js%>A(m*IB}R`(#amAUj&LE6U(;C;kZxt&@8!B+?xKBiRuupb+tYQ4!^ zJmpv@q!=Y{{W*7HeNS9^VT0iGY@GG9Ig~}-*#bwJ+Ulp3ePz+W*rr~&t<1%Zw_JOS zhnz@nR@uQGPbuzuO|x>Xqs|m<{qVcB}I!bHqw z*M=S=Jf7viUcMCcF){-r$B|6VkmoL%XK(J2IH)q8>Hms_D0rKiiJK$3%xsxqTHeHb z?G}&Rl!Qk+tX<+4REz{|RDB=jjN44C{kMQYgjNP@Dx_*rPJTmqmBm?!2XruqYTQ`R zcCNu`pQ8LF!1Y$8&?&#qRsihq4io44r0YPLebm0Yt5T4P8Pc;^)4Kai&4QJAnsGHG z9WlsUu@zGy_im;|^!&T(7D=I+4)wI}oU2KX4efIaDPKw%cZ7LZ$?skWpX5fJ>ee_h zS-u6&+qpI&eMN(EUJc!}GnFxckO^%)4pXw`fa%(VvU95E{F5}xa%yQ*{r}JRCb|$5 z)P2A}1cX?FMaO|oNFH?`3rY7PSfm8lg~`MgF*3vz(5A(z3Dzk0Fv+N7elJbxMQZ&p zaoe?CZ^E6fC z(!6yWs;;8?`tyTnD%gy%P|fb6OU7Cpc!Yv;;<6@vjnj}AK+Fxn#r6b@LIm0BS~$lb zUVyJJ!eYOTm{$L-0z{N>O@Z~4iihc_&u%h?j;YfMUW0z{s1)JRGq>Qe(MKns#jf-A z*la0#Q{cQ5mzAHQ(&KQ6+ljp&Jy<^|eH$y>ZiC;MP`E)Ef7P6d8ebi$+}cLko2ydZ zBG8xvN}CzHYNce$!{NNnI*U(Fi7GTkSIU&zEZmAb){h`GJoR&c<2KkFAIHo5^KS>i z8cu*@*hgi+V3Y9TD;$u4?$LK1f8aEl#7m4O5Dj~aLG!~kE;=iV%6%EO$Pnn5A75x> zO^y@O)O={qJhe>0g-6@P0)LD|N(^ZPkd$?f zr=^<^Bo+k%;UNM{IlhGwi>amyL_bXp7;*ypI_%%<1wx0r@wX~|cl19cwKj*{!4v28V} zLUR|CA`Ni7OaA7Mv&^sWtsY`XG09&q)k2`CW!O?G&<;3Dh1aMA9sV#uFsB$2r#J>r z6T%J3%;I&64j;atn9U*@e!KwP&cK^@TU(SmXeR!&tK=tNh11w*{7hlyC^T8#MhcZmQ*Ws~Enx%pA`s=q0c8-q%gN2Ec}>X9 zRKv6Nv{t^ksE#-;LY8GuOC9>?t}7i%cc9m3Xp-O&fx%L`WO<9?AFf8t%}a?SK?sOT zME>CIGU0#TQ)z(40u-^-p-)d18?@JHAr6AAIo|hti^Fbd%o2|E|)DuvDt>*D*bp`2Lh0S|VTzdkV7>CQj`ivcU<)A2`8{mmH7Z zbP6Rjl_?(FL01T&&i?1$KQSL#1H{8N%!$A7>ASnmVAG!-T+Kg^nNE|~4!LMf!60Xd zDTsU9Zz`5j(P_W+OeRcsS{!k;^G+Pd1ML)3$!*1K$nYg~vNAIGk`tw@$h4!^o=YIj zp}OtBI+G5#cJCM+BbdHmx88W_d?pc#R$1&x#oD+|dPGo&SnjY^`9ePbOqB)kO5}U$ z_3hYdX#fwq$uaSw;&F^_2E5Xq$kA$?mxU`ozvtF%-+HO;#IZWSl)Jm(-Q`kabgd;r z5@9D+`a(Uc!lc*Zn~eD1b@+#O{9`p_(8*du-41`~D`WGIrjijDmJ=Lui8#yk$ari8 zR?w5{5ZSR36EP|osmN$KPr%D=qKVrG7tOzgl4xug?ilvY{x}sUS~kW ze3Z#?aa6q8xp*n}fkp?=Q=H}TWeF8VLRFw6&}g@|;^A)=o+~k~VdeTxlj83C)@<+jYpUA>s5Czr5o{z2)|VHGorBSq@)IPuFeK1V)%Z?tvW@(*;z$C8}C?Y zN~7H)YFyrmVk~L~bMj;NOotEdak$qpa~Y$iSHHjB_cJ{$M?7OQ2|B7YdW!Ft7G>NH zD!K>jHI}#E!&A*4_U?D@IscBhf^mT8WdMO!P(>BX_~efe5DIJ)ZXP{StGqo%vvJ__ zq+q4DI#adpB+}w^RIfSu0vB!4%!+!Rcy-I$qXbu-tRlQr8%;*)m#vvzcfTT81UXw_ z^U%o9+iG@AM7*9y^67&03CBmnF69_673?(DW;X)Vy%Z=4g4_=rrN?9?)hx`s-JFp} zLTeIXVXhHN3S*++vLLats7_9kB&bHy!X>S1Rbdw3JC@ag*~>W&x^cues|i|1q@ks5o*q7YWM!c|p_9y@fesDyGWYVoL~Lpp0kLO>e;&|?|XI@ z^}bd|R~aA5YX@2@Ug4OwG}6IIuEeE)yNUXoUb)9RR^~X&$&MOH-gS$WiZWF96q6{6 zmLDpV_4Y!X*;^XETc$qX8;=9d?X+4h#G>E>5h1$e9qigC%B=j}@aE6MM3iN0O!-aftxx&4I<3+D);G3_8jXfTs`2*dSmo>9 z?x3+svr~$miWgA$+f1OyQ=j+SxH-DQ>?TGPv*b>Ln#CC#{pi|Yc7^OiOZF%YCNURJ z*;bXe(WkHE+N&tl85<^&GKAcQ)rH>1)Jw#`1TfoAwQ;&@VnZJ{LRXYwRoA=`%7dm9 zj3uc(MFu;aArxCi0p69oMXdGmmgVmb^~4S-S9@d-&vlKMPOmYH?VMLRzI!EPWn@s* zBVsSICL!HlJzXc#(cm8G=D`tc)zQJOLQE){P)q=`a7|e=+FHAXTmsowPJXA@l3^5Odnud>?)0@_;QI1FIHi?ktSY4H`j=u|bYVL_{wDw{>wyXt- zq)0~pDnIV4Z0!5o#M|i2x@~Fs`qZmHLC>VZN`(-!vaF8Z~*SaunnycY$-Ty{m(o zF|@k^B~{dloTO?&O0&kP)*)xIJMk&T-YMwWxanZ*rGjgG1Z z>3T7xfMGK3p@EnscG_~e0_exX=o4Mly464@UM{(P;PB5CaqF(H=;Ol zI`gwuC1yV%5Q~x>0W-)y3sH?K3xxVaOR{ToScZu zWzd%j_Q>zvS+_rcpZIjBVDemBP~8W3QI4@6tg?z^O0*BY&BmNmGgrY#MC{LJH<#Zp zai^wKsL|AFYqu@pSk{phHtlL_eJT32?vJk(jfVQ_j)1KS0odIK54%UB&;Ne3iu?qUz_4$^DVSoo>q^#p1Bg52BkPrJ`7 z76%>dOt~8@##h=H>*KCoV^?_ zCKhf%#t;1?*nO6Q!Dr$D>G{(2^Yyg^E}fmny6r{QdBZ z)J6ysw~|STBi{v>o&5-1o(Sh8zFU~YbpTP2=dajcr<8jmm@`!)G^?ZQP|e{(l*+hw z1ZwsV~Lc_i%*DA_$3F`qK+$(OB90*F78ndR;jU6JTCiTpfi9u0pj?Vqx=|+5D?YOAuY@Nr;#X03t3GCQgi6NOS`5 z)Rg82vPwu7$8(_f$hbQeI>r;bl!R`{Bn#*H6Q~^j2AbK@~#05y9Gy~9=BR`7E$OHlB@}JdGIJGM3 z<(HF(SDSltjfjMi9(^PGeh4h@keS}$NLrZ^yt8Q+Lbvw9`5@n2kx6>cSuzLLk(ZgC zK25{#tf9=3JC%dSr8x6~sT5(GD1WO}D%nr$r^0K}HCIL_6Oy|b_Z*%xZ>WUdap@;l zO&wf|S;?lW&NgDZpUIf_36xY~OzPEyzD!~=g=!w&%4ZSj%TE&OB0j0*vRCI;;CYJC zdgOAqq?eN$Yd6i3b&biUu}0#>(x+$=X-kb~UosQgJyzJc^@LF=Svt+9u^qd_`-X0AM$(kkml zr)RIeD6a>9yc?9qrd9OxxK({5OH?&|lvcrgR-ta~TmFY3Wm< Date: Mon, 3 Nov 2025 14:16:13 +0000 Subject: [PATCH 304/898] Update screenshots --- ...features.space.impl.settings_SpaceSettingsView_Day_0_en.png | 3 +++ ...features.space.impl.settings_SpaceSettingsView_Day_1_en.png | 3 +++ ...features.space.impl.settings_SpaceSettingsView_Day_2_en.png | 3 +++ ...features.space.impl.settings_SpaceSettingsView_Day_3_en.png | 3 +++ ...atures.space.impl.settings_SpaceSettingsView_Night_0_en.png | 3 +++ ...atures.space.impl.settings_SpaceSettingsView_Night_1_en.png | 3 +++ ...atures.space.impl.settings_SpaceSettingsView_Night_2_en.png | 3 +++ ...atures.space.impl.settings_SpaceSettingsView_Night_3_en.png | 3 +++ 8 files changed, 24 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_3_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_0_en.png new file mode 100644 index 0000000000..24c00cb1a6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a573dcac3bab78db152da81c0a1b7803fcf70c2392cc05a20ae533edfde76730 +size 21620 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_1_en.png new file mode 100644 index 0000000000..13d9ea54d2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a17f1005bf296f04a2d631c6d19313bc864ebcd6832a788f8fa6909b7562dcb5 +size 17874 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_2_en.png new file mode 100644 index 0000000000..f408da9f38 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc34deb76678be310df0beb512d91fa3b6edf2d2c59a7daf46267f1c8012e12c +size 25422 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_3_en.png new file mode 100644 index 0000000000..189eb42ad0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Day_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d4cabaf98490e35bb75a12c3d37e3c499158b6d6b639084059ee1bc999e831 +size 26018 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_0_en.png new file mode 100644 index 0000000000..d163b60818 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13402b213b595b8a0a632eeb96263db7e8f7cbd3f56d8d235c38abf6df66128 +size 21235 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_1_en.png new file mode 100644 index 0000000000..77db74b048 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7031872033a6c12acd7328a5ae0820ac2dfa00340f8a8b6cac746c98004b285c +size 17444 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_2_en.png new file mode 100644 index 0000000000..9d45abb1c6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:053e0d74fb1c01e5e434aa48606b5f0d24fb9a950b56555783b618679c4e7ad5 +size 24925 diff --git a/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_3_en.png new file mode 100644 index 0000000000..9c36d80cef --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.space.impl.settings_SpaceSettingsView_Night_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d201e92db03d2d0d1b7d786d472d5d0f3e946ba7b610b9769ceb597b4d827eb9 +size 25467 From 876f692f3f90b5656180371cd7e0b1059689b832 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 15:02:26 +0100 Subject: [PATCH 305/898] Rename MessagesEntryPointNode to MessagesEntryPoint.NodeProxy for consistency. We already have a NodeProxy. --- .../android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt | 3 +-- .../android/features/messages/api/MessagesEntryPoint.kt | 6 +++--- .../android/features/messages/impl/MessagesFlowNode.kt | 4 +--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 8216ee512c..2faed24a19 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -26,7 +26,6 @@ import io.element.android.appnav.di.TimelineBindings import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint -import io.element.android.features.messages.api.MessagesEntryPointNode import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint @@ -283,7 +282,7 @@ class JoinedRoomLoadedFlowNode( val messageNode = waitForChildAttached { navTarget -> navTarget is NavTarget.Messages } - (messageNode as? MessagesEntryPointNode)?.attachThread(threadId, focusedEventId) + (messageNode as? MessagesEntryPoint.NodeProxy)?.attachThread(threadId, focusedEventId) } @Composable diff --git a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt index 901a243945..99f9ed79a0 100644 --- a/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt +++ b/features/messages/api/src/main/kotlin/io/element/android/features/messages/api/MessagesEntryPoint.kt @@ -47,8 +47,8 @@ interface MessagesEntryPoint : FeatureEntryPoint { params: Params, callback: Callback, ): Node -} -interface MessagesEntryPointNode { - suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) + interface NodeProxy { + suspend fun attachThread(threadId: ThreadId, focusedEventId: EventId?) + } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt index b4320ab69e..d51ebd250e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesFlowNode.kt @@ -32,7 +32,6 @@ import io.element.android.features.location.api.LocationService import io.element.android.features.location.api.SendLocationEntryPoint import io.element.android.features.location.api.ShowLocationEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint -import io.element.android.features.messages.api.MessagesEntryPointNode import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.features.messages.impl.attachments.preview.AttachmentsPreviewNode import io.element.android.features.messages.impl.pinned.DefaultPinnedEventsTimelineProvider @@ -130,8 +129,7 @@ class MessagesFlowNode( ), buildContext = buildContext, plugins = plugins, -), - MessagesEntryPointNode { +), MessagesEntryPoint.NodeProxy { sealed interface NavTarget : Parcelable { @Parcelize data class Messages(val focusedEventId: EventId?) : NavTarget From bb28fd6e9243b573bd91eee594b3d9b72aa2e02b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 31 Oct 2025 17:03:54 +0100 Subject: [PATCH 306/898] Forward Event error: Log error and use generic error dialog. --- features/forward/impl/build.gradle.kts | 1 + .../features/forward/impl/ForwardMessagesPresenter.kt | 7 ++++++- .../android/features/forward/impl/ForwardMessagesView.kt | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/features/forward/impl/build.gradle.kts b/features/forward/impl/build.gradle.kts index de38d25651..0364ffadd8 100644 --- a/features/forward/impl/build.gradle.kts +++ b/features/forward/impl/build.gradle.kts @@ -31,6 +31,7 @@ dependencies { implementation(projects.libraries.designsystem) implementation(projects.libraries.matrix.api) implementation(projects.libraries.roomselect.api) + implementation(projects.libraries.uiStrings) testCommonDependencies(libs, true) testImplementation(projects.libraries.matrix.test) diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt index 63fbb0bc7c..c495bd0dc4 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.matrix.api.timeline.TimelineProvider import io.element.android.libraries.matrix.api.timeline.getActiveTimeline import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import timber.log.Timber @AssistedInject class ForwardMessagesPresenter( @@ -63,7 +64,11 @@ class ForwardMessagesPresenter( roomIds: List, ) = launch { suspend { - timelineProvider.getActiveTimeline().forwardEvent(eventId, roomIds).getOrThrow() + timelineProvider.getActiveTimeline().forwardEvent(eventId, roomIds) + .onFailure { + Timber.e(it, "Error while forwarding event") + } + .getOrThrow() roomIds }.runCatchingUpdatingState(forwardingActionState) } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt index 214c795851..3e092c70fa 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesView.kt @@ -8,11 +8,13 @@ package io.element.android.features.forward.impl import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.libraries.designsystem.components.async.AsyncActionView 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 ForwardMessagesView( @@ -24,6 +26,9 @@ fun ForwardMessagesView( onSuccess = { onForwardSuccess(it) }, + errorMessage = { + stringResource(id = CommonStrings.error_unknown) + }, onErrorDismiss = { state.eventSink(ForwardMessagesEvents.ClearError) }, From 5b18f6f93ef8113af9477ca627c3fbf10927f11e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 15:53:31 +0100 Subject: [PATCH 307/898] Code cleanup --- .../android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt | 4 ---- .../impl/pinned/DefaultPinnedEventsTimelineProvider.kt | 5 +---- .../features/messages/impl/DefaultMessagesEntryPointTest.kt | 2 +- .../roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt | 2 +- .../mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt | 2 +- .../mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt | 4 ++-- .../impl/datasource/FakeMediaGalleryDataSource.kt | 4 ++++ .../mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt | 6 +++--- .../mediaviewer/impl/viewer/MediaViewerPresenterTest.kt | 5 +++-- 9 files changed, 16 insertions(+), 18 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 2faed24a19..419dc074fc 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -26,7 +26,6 @@ import io.element.android.appnav.di.TimelineBindings import io.element.android.appnav.room.RoomNavigationTarget import io.element.android.features.forward.api.ForwardEntryPoint import io.element.android.features.messages.api.MessagesEntryPoint -import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.space.api.SpaceEntryPoint import io.element.android.libraries.architecture.BackstackView @@ -45,12 +44,9 @@ import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.room.JoinedRoom -import io.element.android.libraries.matrix.api.timeline.TimelineProvider import io.element.android.services.appnavstate.api.ActiveRoomsHolder import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize import timber.log.Timber diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt index 0e2de50b86..f4641c8a66 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/DefaultPinnedEventsTimelineProvider.kt @@ -8,9 +8,7 @@ package io.element.android.features.messages.impl.pinned import dev.zacsweers.metro.ContributesBinding -import dev.zacsweers.metro.Inject import dev.zacsweers.metro.SingleIn -import dev.zacsweers.metro.binding import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -31,8 +29,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext @SingleIn(RoomScope::class) -@ContributesBinding(RoomScope::class, binding = binding()) -@Inject +@ContributesBinding(RoomScope::class) class DefaultPinnedEventsTimelineProvider( private val room: JoinedRoom, private val syncService: SyncService, diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt index 880f89f3bc..e9502346b4 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/DefaultMessagesEntryPointTest.kt @@ -90,7 +90,7 @@ class DefaultMessagesEntryPointTest { override fun navigateToRoomDetails() = lambdaError() override fun navigateToRoomMemberDetails(userId: UserId) = lambdaError() override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() - override fun forwardEvent(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) = lambdaError() override fun navigateToRoom(roomId: RoomId) = lambdaError() } val initialTarget = MessagesEntryPoint.InitialTarget.Messages(focusedEventId = AN_EVENT_ID) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index ebe92332e8..f9bc40b711 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -64,7 +64,7 @@ class DefaultRoomDetailsEntryPointTest { override fun navigateToGlobalNotificationSettings() = lambdaError() override fun navigateToRoom(roomId: RoomId, serverNames: List) = lambdaError() override fun handlePermalinkClick(data: PermalinkData, pushToBackstack: Boolean) = lambdaError() - override fun startForwardEventFlow(eventId: EventId) = lambdaError() + override fun startForwardEventFlow(eventId: EventId, fromPinnedEvents: Boolean) = lambdaError() } val params = RoomDetailsEntryPoint.Params( initialElement = RoomDetailsEntryPoint.InitialTarget.RoomDetails, diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt index 189644ebd5..991e29cd98 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaGalleryEntryPointTest.kt @@ -40,7 +40,7 @@ class DefaultMediaGalleryEntryPointTest { val callback = object : MediaGalleryEntryPoint.Callback { override fun onBackClick() = lambdaError() override fun viewInTimeline(eventId: EventId) = lambdaError() - override fun forward(eventId: EventId) = lambdaError() + override fun forward(eventId: EventId, fromPinnedEvents: Boolean) = lambdaError() } val result = entryPoint.createNode( parentNode = parentNode, diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt index b53fe7913c..f6246545b5 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/DefaultMediaViewerEntryPointTest.kt @@ -72,7 +72,7 @@ class DefaultMediaViewerEntryPointTest { val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() override fun viewInTimeline(eventId: EventId) = lambdaError() - override fun forwardEvent(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) = lambdaError() } val params = createMediaViewerEntryPointParams() val result = entryPoint.createNode( @@ -118,7 +118,7 @@ class DefaultMediaViewerEntryPointTest { val callback = object : MediaViewerEntryPoint.Callback { override fun onDone() = lambdaError() override fun viewInTimeline(eventId: EventId) = lambdaError() - override fun forwardEvent(eventId: EventId) = lambdaError() + override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) = lambdaError() } val params = entryPoint.createParamsForAvatar( filename = "fn", diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt index ea4bdfbad8..552e6baaff 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt @@ -38,6 +38,10 @@ class FakeMediaGalleryDataSource( return groupedMediaItemsFlow.replayCache.firstOrNull() ?: AsyncData.Uninitialized } + override fun fromPinnedEvents(): Boolean { + TODO("Not yet implemented") + } + override suspend fun loadMore(direction: Timeline.PaginationDirection) { loadMoreLambda(direction) } diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt index 791527445b..d223ad1ce9 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/FakeMediaViewerNavigator.kt @@ -12,15 +12,15 @@ import io.element.android.tests.testutils.lambda.lambdaError class FakeMediaViewerNavigator( private val onViewInTimelineClickLambda: (EventId) -> Unit = { lambdaError() }, - private val onForwardClickLambda: (EventId) -> Unit = { lambdaError() }, + private val onForwardClickLambda: (EventId, Boolean) -> Unit = { _, _ -> lambdaError() }, private val onItemDeletedLambda: () -> Unit = { lambdaError() }, ) : MediaViewerNavigator { override fun onViewInTimelineClick(eventId: EventId) { onViewInTimelineClickLambda(eventId) } - override fun onForwardClick(eventId: EventId) { - onForwardClickLambda(eventId) + override fun onForwardClick(eventId: EventId, fromPinnedEvents: Boolean) { + onForwardClickLambda(eventId, fromPinnedEvents) } override fun onItemDeleted() { diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt index 359eda7a5e..c0ea46b307 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt @@ -785,7 +785,7 @@ class MediaViewerPresenterTest { @Test fun `present - forward hides the bottom sheet and invokes the navigator`() = runTest { - val onForwardClickLambda = lambdaRecorder { } + val onForwardClickLambda = lambdaRecorder { _, _ -> } val navigator = FakeMediaViewerNavigator( onForwardClickLambda = onForwardClickLambda, ) @@ -804,7 +804,8 @@ class MediaViewerPresenterTest { initialState.eventSink(MediaViewerEvents.Forward(AN_EVENT_ID)) val finalState = awaitItem() assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden) - onForwardClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID)) + onForwardClickLambda.assertions().isCalledOnce() + .with(value(AN_EVENT_ID), value(false)) } } From c99350612931ce5aec2f25174a48e1735dc95242 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 16:07:13 +0100 Subject: [PATCH 308/898] Code cleanup --- .../impl/datasource/MediaGalleryDataSource.kt | 5 ----- .../impl/viewer/MediaViewerDataSource.kt | 2 -- .../mediaviewer/impl/viewer/MediaViewerNode.kt | 14 +++++++++----- .../impl/viewer/MediaViewerPresenter.kt | 6 +++++- .../impl/viewer/SingleMediaGalleryDataSource.kt | 1 - .../impl/datasource/FakeMediaGalleryDataSource.kt | 4 ---- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt index 46bfedacb1..eb822b4969 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/MediaGalleryDataSource.kt @@ -32,7 +32,6 @@ interface MediaGalleryDataSource { fun start() fun groupedMediaItemsFlow(): Flow> fun getLastData(): AsyncData - fun fromPinnedEvents(): Boolean suspend fun loadMore(direction: Timeline.PaginationDirection) suspend fun deleteItem(eventId: EventId) } @@ -47,10 +46,6 @@ class TimelineMediaGalleryDataSource( ) : MediaGalleryDataSource { private var timeline: Timeline? = null - override fun fromPinnedEvents(): Boolean { - return timeline?.mode == Timeline.Mode.PinnedEvents - } - private val groupedMediaItemsFlow = MutableSharedFlow>(replay = 1) override fun groupedMediaItemsFlow(): Flow> = groupedMediaItemsFlow diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt index 62d87a770a..1046a80fe3 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerDataSource.kt @@ -61,8 +61,6 @@ class MediaViewerDataSource( private val localMediaStates: MutableMap>> = mutableMapOf() - fun fromPinnedEvents(): Boolean = galleryDataSource.fromPinnedEvents() - fun setup() { galleryDataSource.start() } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt index 195f1589d6..f47f341657 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerNode.kt @@ -81,11 +81,7 @@ class MediaViewerNode( timelineMediaGalleryDataSource } else { // Can we use a specific timeline? - val timelineMode = when (val mode = inputs.mode) { - is MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos -> mode.timelineMode - is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios -> mode.timelineMode - else -> null - } + val timelineMode = inputs.mode.getTimelineMode() when (timelineMode) { null -> timelineMediaGalleryDataSource Timeline.Mode.Live, @@ -149,3 +145,11 @@ class MediaViewerNode( } } } + +internal fun MediaViewerEntryPoint.MediaViewerMode.getTimelineMode(): Timeline.Mode? { + return when (this) { + is MediaViewerEntryPoint.MediaViewerMode.TimelineImagesAndVideos -> timelineMode + is MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios -> timelineMode + else -> null + } +} diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt index be10af3f6d..a04a1a370a 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt @@ -33,6 +33,7 @@ import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOther import io.element.android.libraries.matrix.api.room.powerlevels.canRedactOwn +import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.item.event.toEventOrTransactionId import io.element.android.libraries.mediaviewer.api.MediaViewerEntryPoint import io.element.android.libraries.mediaviewer.api.local.LocalMedia @@ -119,7 +120,10 @@ class MediaViewerPresenter( } is MediaViewerEvents.Forward -> { mediaBottomSheetState = MediaBottomSheetState.Hidden - navigator.onForwardClick(event.eventId, fromPinnedEvents = dataSource.fromPinnedEvents()) + navigator.onForwardClick( + eventId = event.eventId, + fromPinnedEvents = inputs.mode.getTimelineMode() == Timeline.Mode.PinnedEvents, + ) } is MediaViewerEvents.OpenInfo -> coroutineScope.launch { mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState( diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt index 1d683fd8da..31964a6629 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/SingleMediaGalleryDataSource.kt @@ -27,7 +27,6 @@ class SingleMediaGalleryDataSource( override fun start() = Unit override fun groupedMediaItemsFlow() = flowOf(AsyncData.Success(data)) override fun getLastData(): AsyncData = AsyncData.Success(data) - override fun fromPinnedEvents(): Boolean = false override suspend fun loadMore(direction: Timeline.PaginationDirection) = Unit override suspend fun deleteItem(eventId: EventId) = Unit diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt index 552e6baaff..ea4bdfbad8 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/FakeMediaGalleryDataSource.kt @@ -38,10 +38,6 @@ class FakeMediaGalleryDataSource( return groupedMediaItemsFlow.replayCache.firstOrNull() ?: AsyncData.Uninitialized } - override fun fromPinnedEvents(): Boolean { - TODO("Not yet implemented") - } - override suspend fun loadMore(direction: Timeline.PaginationDirection) { loadMoreLambda(direction) } From 2eeb5fe1ccd540200b6ce30bbc3cbba9a99b5d71 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 16:08:59 +0100 Subject: [PATCH 309/898] Add test on forwarding from pinned event --- .../impl/viewer/MediaViewerPresenterTest.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt index c0ea46b307..f6de72b2d8 100644 --- a/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt +++ b/libraries/mediaviewer/impl/src/test/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenterTest.kt @@ -809,6 +809,33 @@ class MediaViewerPresenterTest { } } + @Test + fun `present - forward from pinned events hides the bottom sheet and invokes the navigator`() = runTest { + val onForwardClickLambda = lambdaRecorder { _, _ -> } + val navigator = FakeMediaViewerNavigator( + onForwardClickLambda = onForwardClickLambda, + ) + val presenter = createMediaViewerPresenter( + mode = MediaViewerEntryPoint.MediaViewerMode.TimelineFilesAndAudios(timelineMode = Timeline.Mode.PinnedEvents), + localMediaFactory = localMediaFactory, + mediaViewerNavigator = navigator, + room = FakeJoinedRoom( + baseRoom = FakeBaseRoom(canRedactOwnResult = { Result.success(true) }), + ), + ) + presenter.test { + val initialState = awaitItem() + initialState.eventSink(MediaViewerEvents.OpenInfo(aMediaViewerPageData())) + val withBottomSheetState = awaitItem() + assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java) + initialState.eventSink(MediaViewerEvents.Forward(AN_EVENT_ID)) + val finalState = awaitItem() + assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden) + onForwardClickLambda.assertions().isCalledOnce() + .with(value(AN_EVENT_ID), value(true)) + } + } + private suspend fun ReceiveTurbine.awaitFirstItem(): T { return awaitItem() } From ab0e4429d69e009709977dec1a5bd94b877e14eb Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 3 Nov 2025 16:36:58 +0100 Subject: [PATCH 310/898] change(roles and permissions): rename package changeroommemberrole to rolesandpermissions --- features/home/impl/build.gradle.kts | 2 +- .../io/element/android/features/home/impl/HomeFlowNode.kt | 4 ++-- .../api/build.gradle.kts | 2 +- .../api/ChangeRoomMemberRolesEntryPoint.kt | 2 +- .../impl/build.gradle.kts | 4 ++-- .../rolesandpermissions}/impl/RoomMemberListDataSource.kt | 2 +- .../rolesandpermissions/impl/roles}/ChangeRolesEvent.kt | 4 ++-- .../rolesandpermissions/impl/roles}/ChangeRolesNode.kt | 4 ++-- .../rolesandpermissions/impl/roles}/ChangeRolesPresenter.kt | 3 ++- .../rolesandpermissions/impl/roles}/ChangeRolesState.kt | 4 ++-- .../impl/roles}/ChangeRolesStateProvider.kt | 4 ++-- .../rolesandpermissions/impl/roles}/ChangeRolesView.kt | 3 ++- .../impl/roles}/ChangeRoomMemberRolesRootNode.kt | 6 +++--- .../impl/roles}/DefaultChangeRoomMemberRolesEntyPoint.kt | 6 +++--- .../impl/src/main/res/values-be/translations.xml | 0 .../impl/src/main/res/values-bg/translations.xml | 0 .../impl/src/main/res/values-cs/translations.xml | 0 .../impl/src/main/res/values-cy/translations.xml | 0 .../impl/src/main/res/values-da/translations.xml | 0 .../impl/src/main/res/values-de/translations.xml | 0 .../impl/src/main/res/values-el/translations.xml | 0 .../impl/src/main/res/values-es/translations.xml | 0 .../impl/src/main/res/values-et/translations.xml | 0 .../impl/src/main/res/values-eu/translations.xml | 0 .../impl/src/main/res/values-fa/translations.xml | 0 .../impl/src/main/res/values-fi/translations.xml | 0 .../impl/src/main/res/values-fr/translations.xml | 0 .../impl/src/main/res/values-hu/translations.xml | 0 .../impl/src/main/res/values-in/translations.xml | 0 .../impl/src/main/res/values-it/translations.xml | 0 .../impl/src/main/res/values-ka/translations.xml | 0 .../impl/src/main/res/values-ko/translations.xml | 0 .../impl/src/main/res/values-lt/translations.xml | 0 .../impl/src/main/res/values-nb/translations.xml | 0 .../impl/src/main/res/values-nl/translations.xml | 0 .../impl/src/main/res/values-pl/translations.xml | 0 .../impl/src/main/res/values-pt-rBR/translations.xml | 0 .../impl/src/main/res/values-pt/translations.xml | 0 .../impl/src/main/res/values-ro/translations.xml | 0 .../impl/src/main/res/values-ru/translations.xml | 0 .../impl/src/main/res/values-sk/translations.xml | 0 .../impl/src/main/res/values-sv/translations.xml | 0 .../impl/src/main/res/values-tr/translations.xml | 0 .../impl/src/main/res/values-uk/translations.xml | 0 .../impl/src/main/res/values-ur/translations.xml | 0 .../impl/src/main/res/values-uz/translations.xml | 0 .../impl/src/main/res/values-zh-rTW/translations.xml | 0 .../impl/src/main/res/values-zh/translations.xml | 0 .../impl/src/main/res/values/localazy.xml | 0 .../rolesandpermissions/impl/roles}/ChangeRolesNodeTest.kt | 4 ++-- .../impl/roles}/ChangeRolesPresenterTest.kt | 2 +- .../rolesandpermissions/impl/roles}/ChangeRolesViewTest.kt | 2 +- .../roles}/DefaultChangeRoomMemberRolesEntyPointTest.kt | 4 ++-- .../rolesandpermissions/impl/roles}/MembersByRoleTest.kt | 4 ++-- .../test/build.gradle.kts | 4 ++-- .../test/FakeChangeRoomMemberRolesEntryPoint.kt | 6 +++--- features/roomdetails/impl/build.gradle.kts | 4 ++-- .../features/roomdetails/impl/RoomDetailsFlowNode.kt | 4 ++-- .../impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt | 4 ++-- .../roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt | 2 +- 60 files changed, 46 insertions(+), 44 deletions(-) rename features/{changeroommemberroles => rolesandpermissions}/api/build.gradle.kts (87%) rename features/{changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles => rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions}/api/ChangeRoomMemberRolesEntryPoint.kt (94%) rename features/{changeroommemberroles => rolesandpermissions}/impl/build.gradle.kts (90%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions}/impl/RoomMemberListDataSource.kt (95%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesEvent.kt (85%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesNode.kt (93%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesPresenter.kt (98%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesState.kt (95%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesStateProvider.kt (98%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesView.kt (99%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRoomMemberRolesRootNode.kt (91%) rename features/{changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/DefaultChangeRoomMemberRolesEntyPoint.kt (81%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-be/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-bg/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-cs/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-cy/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-da/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-de/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-el/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-es/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-et/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-eu/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-fa/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-fi/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-fr/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-hu/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-in/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-it/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-ka/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-ko/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-lt/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-nb/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-nl/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-pl/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-pt-rBR/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-pt/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-ro/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-ru/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-sk/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-sv/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-tr/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-uk/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-ur/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-uz/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-zh-rTW/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values-zh/translations.xml (100%) rename features/{changeroommemberroles => rolesandpermissions}/impl/src/main/res/values/localazy.xml (100%) rename features/{changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesNodeTest.kt (83%) rename features/{changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesPresenterTest.kt (99%) rename features/{changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/ChangeRolesViewTest.kt (99%) rename features/{changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/DefaultChangeRoomMemberRolesEntyPointTest.kt (91%) rename features/{changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles}/MembersByRoleTest.kt (97%) rename features/{changeroommemberroles => rolesandpermissions}/test/build.gradle.kts (75%) rename features/{changeroommemberroles => rolesandpermissions}/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt (73%) diff --git a/features/home/impl/build.gradle.kts b/features/home/impl/build.gradle.kts index 9a29532ef0..1ac8dcec72 100644 --- a/features/home/impl/build.gradle.kts +++ b/features/home/impl/build.gradle.kts @@ -56,7 +56,7 @@ dependencies { implementation(libs.haze) implementation(libs.haze.materials) implementation(projects.features.reportroom.api) - implementation(projects.features.changeroommemberroles.api) + implementation(projects.features.rolesandpermissions.api) implementation(projects.libraries.previewutils) api(projects.features.home.api) 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 5380c51295..91ef53d9de 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 @@ -28,8 +28,8 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.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 diff --git a/features/changeroommemberroles/api/build.gradle.kts b/features/rolesandpermissions/api/build.gradle.kts similarity index 87% rename from features/changeroommemberroles/api/build.gradle.kts rename to features/rolesandpermissions/api/build.gradle.kts index 655bd5683e..0ace6032d9 100644 --- a/features/changeroommemberroles/api/build.gradle.kts +++ b/features/rolesandpermissions/api/build.gradle.kts @@ -11,7 +11,7 @@ plugins { } android { - namespace = "io.element.android.features.changeroommemberroles.api" + namespace = "io.element.android.features.rolesandpermissions.api" } dependencies { diff --git a/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt similarity index 94% rename from features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt rename to features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt index 7905cdc0ae..0d93632699 100644 --- a/features/changeroommemberroles/api/src/main/kotlin/io/element/android/features/changeroommemberroles/api/ChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.api +package io.element.android.features.rolesandpermissions.api import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node diff --git a/features/changeroommemberroles/impl/build.gradle.kts b/features/rolesandpermissions/impl/build.gradle.kts similarity index 90% rename from features/changeroommemberroles/impl/build.gradle.kts rename to features/rolesandpermissions/impl/build.gradle.kts index be2bf17979..2cd0960c50 100644 --- a/features/changeroommemberroles/impl/build.gradle.kts +++ b/features/rolesandpermissions/impl/build.gradle.kts @@ -14,7 +14,7 @@ plugins { } android { - namespace = "io.element.android.features.changeroommemberroles.impl" + namespace = "io.element.android.features.rolesandpermissions.impl" testOptions { unitTests { @@ -26,7 +26,7 @@ android { setupDependencyInjection() dependencies { - api(projects.features.changeroommemberroles.api) + api(projects.features.rolesandpermissions.api) implementation(projects.appnav) implementation(projects.libraries.architecture) implementation(projects.libraries.core) diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RoomMemberListDataSource.kt similarity index 95% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RoomMemberListDataSource.kt index a27833122a..523b320ccd 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/RoomMemberListDataSource.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RoomMemberListDataSource.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl import dev.zacsweers.metro.Inject import io.element.android.libraries.core.bool.orFalse diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesEvent.kt similarity index 85% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesEvent.kt index 56e1c50bcc..df924bc575 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesEvent.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesEvent.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.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import io.element.android.libraries.matrix.api.user.MatrixUser diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt similarity index 93% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt index 9edd20b549..915b129c84 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -17,7 +17,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.appyx.launchMolecule import io.element.android.libraries.architecture.inputs diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt similarity index 98% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt index b6d865a66a..07a0c5a873 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -22,6 +22,7 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedFactory import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.RoomModeration +import io.element.android.features.rolesandpermissions.impl.RoomMemberListDataSource import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt similarity index 95% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt index e0b3e68a9e..17d7b0c3dd 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.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.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.theme.components.SearchBarResultState diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt similarity index 98% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt index b54347f73f..d054f459aa 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesStateProvider.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.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.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.changerole import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt similarity index 99% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt index f9ebd75ca2..16c6965f18 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility @@ -39,6 +39,7 @@ 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.rolesandpermissions.impl.R import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.async.AsyncIndicator diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt similarity index 91% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt index a7556ef8ca..33fbd197ae 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRoomMemberRolesRootNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import android.os.Parcelable import androidx.compose.runtime.Composable @@ -20,8 +20,8 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPoint.kt similarity index 81% rename from features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPoint.kt index e76333cda7..62ec729b14 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPoint.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPoint.kt @@ -5,13 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import dev.zacsweers.metro.ContributesBinding -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.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 diff --git a/features/changeroommemberroles/impl/src/main/res/values-be/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-be/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-be/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-be/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-bg/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-bg/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-bg/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-bg/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-cs/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-cs/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-cs/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-cs/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-cy/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-cy/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-cy/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-cy/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-da/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-da/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-da/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-da/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-de/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-de/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-de/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-de/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-el/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-el/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-el/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-el/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-es/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-es/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-es/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-es/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-et/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-et/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-et/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-et/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-eu/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-eu/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-eu/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-eu/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-fa/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-fa/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-fa/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-fa/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-fi/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-fi/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-fi/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-fi/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-fr/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-fr/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-fr/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-fr/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-hu/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-hu/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-hu/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-hu/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-in/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-in/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-in/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-in/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-it/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-it/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-it/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-it/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-ka/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-ka/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-ka/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-ka/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-ko/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-ko/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-ko/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-ko/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-lt/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-lt/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-lt/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-lt/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-nb/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-nb/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-nb/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-nb/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-nl/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-nl/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-nl/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-nl/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-pl/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-pl/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-pl/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-pt-rBR/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-pt-rBR/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-pt-rBR/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-pt-rBR/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-pt/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-pt/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-pt/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-pt/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-ro/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-ro/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-ro/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-ro/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-ru/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-ru/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-ru/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-ru/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-sk/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-sk/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-sk/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-sv/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-sv/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-sv/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-sv/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-tr/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-tr/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-tr/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-tr/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-uk/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-uk/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-uk/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-uk/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-ur/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-ur/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-ur/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-ur/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-uz/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-uz/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-uz/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-uz/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-zh-rTW/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-zh-rTW/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-zh-rTW/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values-zh/translations.xml b/features/rolesandpermissions/impl/src/main/res/values-zh/translations.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values-zh/translations.xml rename to features/rolesandpermissions/impl/src/main/res/values-zh/translations.xml diff --git a/features/changeroommemberroles/impl/src/main/res/values/localazy.xml b/features/rolesandpermissions/impl/src/main/res/values/localazy.xml similarity index 100% rename from features/changeroommemberroles/impl/src/main/res/values/localazy.xml rename to features/rolesandpermissions/impl/src/main/res/values/localazy.xml diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNodeTest.kt similarity index 83% rename from features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNodeTest.kt index 3da57d3380..e8a470b0ef 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesNodeTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNodeTest.kt @@ -5,10 +5,10 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import com.google.common.truth.Truth.assertThat -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.RoomMember import org.junit.Test diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt similarity index 99% rename from features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt index a5e4cfaccb..6bcad2c4cc 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesPresenterTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt similarity index 99% rename from features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt index 19d9cadfa8..dc26741587 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesViewTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPointTest.kt similarity index 91% rename from features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPointTest.kt index 84e53c0cb6..3612479418 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/DefaultChangeRoomMemberRolesEntyPointTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/DefaultChangeRoomMemberRolesEntyPointTest.kt @@ -5,12 +5,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import androidx.test.ext.junit.runners.AndroidJUnit4 import com.bumble.appyx.core.modality.BuildContext import com.google.common.truth.Truth.assertThat -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.tests.testutils.node.TestParentNode import kotlinx.coroutines.test.runTest diff --git a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/MembersByRoleTest.kt similarity index 97% rename from features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/MembersByRoleTest.kt index a2e134f807..101a0e2869 100644 --- a/features/changeroommemberroles/impl/src/test/kotlin/io/element/android/features/changeroommemberroles/impl/MembersByRoleTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/MembersByRoleTest.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.changeroommemberroles.impl +package io.element.android.features.rolesandpermissions.impl.roles import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/features/changeroommemberroles/test/build.gradle.kts b/features/rolesandpermissions/test/build.gradle.kts similarity index 75% rename from features/changeroommemberroles/test/build.gradle.kts rename to features/rolesandpermissions/test/build.gradle.kts index 4d85d83c90..a5385b29d7 100644 --- a/features/changeroommemberroles/test/build.gradle.kts +++ b/features/rolesandpermissions/test/build.gradle.kts @@ -10,11 +10,11 @@ plugins { } android { - namespace = "io.element.android.features.changeroommemberroles.test" + namespace = "io.element.android.features.rolesandpermissions.test" } dependencies { - implementation(projects.features.changeroommemberroles.api) + implementation(projects.features.rolesandpermissions.api) implementation(projects.libraries.architecture) implementation(projects.libraries.matrix.api) implementation(projects.tests.testutils) diff --git a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt similarity index 73% rename from features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt rename to features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt index 16b404ab5e..3e3e5b1a43 100644 --- a/features/changeroommemberroles/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -5,12 +5,12 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.changeroommemberroles.test +package io.element.android.features.rolesandpermissions.test import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.tests.testutils.lambda.lambdaError diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts index 896fc8dbdc..881510ff28 100644 --- a/features/roomdetails/impl/build.gradle.kts +++ b/features/roomdetails/impl/build.gradle.kts @@ -56,7 +56,7 @@ dependencies { implementation(projects.features.verifysession.api) implementation(projects.features.reportroom.api) implementation(projects.features.roommembermoderation.api) - implementation(projects.features.changeroommemberroles.api) + implementation(projects.features.rolesandpermissions.api) implementation(projects.features.invitepeople.api) testCommonDependencies(libs, true) @@ -69,7 +69,7 @@ dependencies { testImplementation(projects.libraries.usersearch.test) testImplementation(projects.libraries.featureflag.test) testImplementation(projects.features.call.test) - testImplementation(projects.features.changeroommemberroles.test) + testImplementation(projects.features.rolesandpermissions.test) testImplementation(projects.features.knockrequests.test) testImplementation(projects.features.messages.test) testImplementation(projects.features.poll.test) 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 d31adaae8d..06e4818284 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 @@ -26,8 +26,8 @@ import io.element.android.annotations.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.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.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 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 b2b7d46780..80ef19a903 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 @@ -20,8 +20,8 @@ import com.bumble.appyx.navmodel.backstack.operation.push import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.changeroommemberroles.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.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 diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index ebe92332e8..ad939734df 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -12,7 +12,7 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.call.test.FakeElementCallEntryPoint -import io.element.android.features.changeroommemberroles.test.FakeChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.test.FakeChangeRoomMemberRolesEntryPoint import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint import io.element.android.features.messages.test.FakeMessagesEntryPoint import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint From 5b398adfcf7d5a5aa244dba285d015e236256d35 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 3 Nov 2025 17:14:23 +0000 Subject: [PATCH 311/898] Update screenshots --- .../features.forward.impl_ForwardMessagesView_Day_3_en.png | 4 ++-- .../features.forward.impl_ForwardMessagesView_Night_3_en.png | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png index c913d383ca..7866726430 100644 --- a/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c6ab936964323971e9b4927684e3ae2da96884b340569aebe6e6a711bd6c241 -size 8446 +oid sha256:9bd3fe043d7fffab7b19b5af9de7ef58ce8d2d97018a058b5b3c94cb55b277b9 +size 11273 diff --git a/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png index 33799bf61d..ff6610c109 100644 --- a/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.forward.impl_ForwardMessagesView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd3611749f6ad60bc647236c5a10694b8ac9d1aa84e546740c1bf85df277c6f9 -size 7668 +oid sha256:97bc2d4c9621a21533da2d35abe90a5e1c1ef1bc356a6342736b61f7be8d8e3b +size 10357 From 17dd75fe24a0ac715de8db76ddb52a0294d08040 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 3 Nov 2025 18:29:51 +0100 Subject: [PATCH 312/898] change(roles and permissions): import codefrom roomdetails module --- .../features/home/impl/HomeFlowNode.kt | 5 +++-- .../api/RolesAndPermissionsEntryPoint.kt | 12 ++++++++++ .../DefaultRolesAndPermissionsEntryPoint.kt | 22 +++++++++++++++++++ .../impl}/RolesAndPermissionsFlowNode.kt | 9 ++++---- .../impl/analytics/AnalyticUtils.kt | 2 +- .../permissions/ChangeRoomPermissionsEvent.kt | 2 +- .../permissions/ChangeRoomPermissionsNode.kt | 2 +- .../ChangeRoomPermissionsPresenter.kt | 4 ++-- .../permissions/ChangeRoomPermissionsState.kt | 2 +- .../ChangeRoomPermissionsStateProvider.kt | 2 +- .../permissions/ChangeRoomPermissionsView.kt | 2 +- .../impl/roles/ChangeRolesStateProvider.kt | 2 +- .../roles/ChangeRoomMemberRolesRootNode.kt | 1 + .../impl/root}/RolesAndPermissionsEvents.kt | 2 +- .../impl/root}/RolesAndPermissionsNode.kt | 2 +- .../root}/RolesAndPermissionsPresenter.kt | 2 +- .../impl/root}/RolesAndPermissionsState.kt | 2 +- .../root}/RolesAndPermissionsStateProvider.kt | 2 +- .../impl/root}/RolesAndPermissionsView.kt | 2 +- .../FakeChangeRoomMemberRolesEntryPoint.kt | 4 ++-- .../roomdetails/impl/RoomDetailsFlowNode.kt | 9 ++++---- 21 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/RolesAndPermissionsEntryPoint.kt create mode 100644 features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/DefaultRolesAndPermissionsEntryPoint.kt rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/RolesAndPermissionsFlowNode.kt (93%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions}/impl/analytics/AnalyticUtils.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsEvent.kt (87%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsNode.kt (95%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsPresenter.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsState.kt (91%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsStateProvider.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl}/permissions/ChangeRoomPermissionsView.kt (99%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsEvents.kt (88%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsNode.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsPresenter.kt (98%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsState.kt (88%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsStateProvider.kt (97%) rename features/{roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsView.kt (99%) 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 91ef53d9de..cf1d9e829d 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 @@ -28,8 +28,6 @@ import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.annotations.ContributesNode -import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.rolesandpermissions.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 @@ -40,6 +38,9 @@ import io.element.android.features.invite.api.declineandblock.DeclineInviteAndBl 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.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.appyx.launchMolecule diff --git a/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/RolesAndPermissionsEntryPoint.kt b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/RolesAndPermissionsEntryPoint.kt new file mode 100644 index 0000000000..4ed1fa5c90 --- /dev/null +++ b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/RolesAndPermissionsEntryPoint.kt @@ -0,0 +1,12 @@ +/* + * 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.rolesandpermissions.api + +import io.element.android.libraries.architecture.SimpleFeatureEntryPoint + +fun interface RolesAndPermissionsEntryPoint : SimpleFeatureEntryPoint diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/DefaultRolesAndPermissionsEntryPoint.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/DefaultRolesAndPermissionsEntryPoint.kt new file mode 100644 index 0000000000..a889b8266c --- /dev/null +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/DefaultRolesAndPermissionsEntryPoint.kt @@ -0,0 +1,22 @@ +/* + * 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.rolesandpermissions.impl + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import dev.zacsweers.metro.ContributesBinding +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint +import io.element.android.libraries.architecture.createNode +import io.element.android.libraries.di.RoomScope + +@ContributesBinding(RoomScope::class) +class DefaultRolesAndPermissionsEntryPoint : RolesAndPermissionsEntryPoint { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + return parentNode.createNode(buildContext) + } +} diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt similarity index 93% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt index 80ef19a903..36e4d233ca 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsFlowNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl import android.os.Parcelable import androidx.compose.runtime.Composable @@ -22,8 +22,9 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.rolesandpermissions.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.features.rolesandpermissions.impl.permissions.ChangeRoomPermissionsNode +import io.element.android.features.rolesandpermissions.impl.permissions.ChangeRoomPermissionsSection +import io.element.android.features.rolesandpermissions.impl.root.RolesAndPermissionsNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.createNode @@ -37,8 +38,8 @@ import kotlinx.parcelize.Parcelize class RolesAndPermissionsFlowNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, - private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, private val joinedRoom: JoinedRoom, + private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = NavTarget.AdminSettings, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/analytics/AnalyticUtils.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/analytics/AnalyticUtils.kt index 09d57af034..a609b79087 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/analytics/AnalyticUtils.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.analytics +package io.element.android.features.rolesandpermissions.impl.analytics import im.vector.app.features.analytics.plan.RoomModeration import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsEvent.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt similarity index 87% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsEvent.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt index a4c49c7ac3..f17960c790 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsEvent.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt similarity index 95% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsNode.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt index cebcc56e7f..c0c7d016dd 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import android.os.Parcelable import androidx.compose.runtime.Composable diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt index ec90df1d5e..ce59aa1907 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -18,7 +18,7 @@ import androidx.compose.runtime.setValue import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedFactory import dev.zacsweers.metro.AssistedInject -import io.element.android.features.roomdetails.impl.analytics.trackPermissionChangeAnalytics +import io.element.android.features.rolesandpermissions.impl.analytics.trackPermissionChangeAnalytics import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.room.JoinedRoom diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt similarity index 91% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt index 5e7b77560a..da106c888b 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt index 07d3455a90..484caa6dbe 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt similarity index 99% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index 6acf4935dc..52c4e254dd 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.fillMaxSize diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt index d054f459aa..5b0cadd024 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.rolesandpermissions.impl.changerole +package io.element.android.features.rolesandpermissions.impl.roles import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt index 33fbd197ae..0f588667c6 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt @@ -21,6 +21,7 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.createNode diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsEvents.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt similarity index 88% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsEvents.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt index 8b98f78d97..3864f7997c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsEvents.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt index 29394398d3..f5c7b2e7c2 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt similarity index 98% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt index 2ad4c84028..4f8bf2d201 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt similarity index 88% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsState.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt index 24f645a309..8be6fcaf31 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import io.element.android.libraries.architecture.AsyncAction diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsStateProvider.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStateProvider.kt similarity index 97% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsStateProvider.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStateProvider.kt index 211a16d7d1..d134c6e222 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsStateProvider.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStateProvider.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt similarity index 99% rename from features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsView.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt index b581554a92..11341a75ef 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding diff --git a/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt index 3e3e5b1a43..a2f9ac0253 100644 --- a/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -9,12 +9,12 @@ package io.element.android.features.rolesandpermissions.test import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.tests.testutils.lambda.lambdaError -class FakeChangeRoomMemberRolesEntryPoint : ChangeRoomMemberRolesEntryPoint { +class FakeChangeRoomMemberRolesEntryPoint : RolesAndPermissionsEntryPoint { override fun createNode( parentNode: Node, buildContext: BuildContext, 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 06e4818284..20e783fb6b 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 @@ -26,19 +26,19 @@ import io.element.android.annotations.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.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.rolesandpermissions.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 import io.element.android.features.reportroom.api.ReportRoomEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint import io.element.android.features.roomdetails.impl.edit.RoomDetailsEditNode import io.element.android.features.roomdetails.impl.invite.RoomInviteMembersNode import io.element.android.features.roomdetails.impl.members.RoomMemberListNode import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsNode import io.element.android.features.roomdetails.impl.notificationsettings.RoomNotificationSettingsNode -import io.element.android.features.roomdetails.impl.rolesandpermissions.RolesAndPermissionsFlowNode import io.element.android.features.roomdetails.impl.securityandprivacy.SecurityAndPrivacyFlowNode import io.element.android.features.userprofile.shared.UserProfileNodeHelper import io.element.android.features.verifysession.api.OutgoingVerificationEntryPoint @@ -82,6 +82,7 @@ class RoomDetailsFlowNode( private val outgoingVerificationEntryPoint: OutgoingVerificationEntryPoint, private val reportRoomEntryPoint: ReportRoomEntryPoint, private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, + private val rolesAndPermissionsEntryPoint: RolesAndPermissionsEntryPoint, ) : BaseFlowNode( backstack = BackStack( initialElement = plugins.filterIsInstance().first().initialElement.toNavTarget(), @@ -343,7 +344,7 @@ class RoomDetailsFlowNode( } is NavTarget.AdminSettings -> { - createNode(buildContext) + rolesAndPermissionsEntryPoint.createNode(this, buildContext) } NavTarget.PinnedMessagesList -> { val params = MessagesEntryPoint.Params( From 3b5c2bb8eb6e2e3dc6e17ad5bd78fc87c626e3a9 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 3 Nov 2025 18:35:18 +0100 Subject: [PATCH 313/898] change(roles and permissions): fix localazy strings --- .../impl/permissions/ChangeRoomPermissionsView.kt | 2 +- .../rolesandpermissions/impl/root/RolesAndPermissionsView.kt | 2 +- tools/localazy/config.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index 52c4e254dd..6275dbf73e 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.compound.tokens.generated.CompoundIcons -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.rolesandpermissions.impl.R import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.button.BackButton diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt index 11341a75ef..3ee3a409de 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt @@ -20,7 +20,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.rolesandpermissions.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 diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 82c273db2e..456de15c83 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -366,7 +366,7 @@ ] }, { - "name" : ":features:changeroommemberroles:impl", + "name" : ":features:rolesandpermissions:impl", "includeRegex" : [ "screen_room_change_.*", "screen_room_roles_.*", From 0743b56bc4327d585cf39ab751a22ca5d69b42b6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 18:49:00 +0100 Subject: [PATCH 314/898] Always use the handleEvent(s) function the same way. --- .../android/features/call/impl/ui/CallScreenPresenter.kt | 2 +- .../android/features/forward/impl/ForwardMessagesPresenter.kt | 2 +- .../features/messages/impl/actionlist/ActionListPresenter.kt | 2 +- .../video/DefaultMediaOptimizationSelectorPresenter.kt | 2 +- .../messages/impl/messagecomposer/MessageComposerPresenter.kt | 2 +- .../features/messages/impl/timeline/TimelinePresenter.kt | 2 +- .../components/customreaction/CustomReactionPresenter.kt | 2 +- .../components/reactionsummary/ReactionSummaryPresenter.kt | 2 +- .../receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt | 2 +- .../impl/timeline/protection/TimelineProtectionPresenter.kt | 2 +- .../impl/user/editprofile/EditUserProfilePresenter.kt | 2 +- .../roomdetails/impl/members/RoomMemberListPresenter.kt | 2 +- .../notificationsettings/RoomNotificationSettingsPresenter.kt | 2 +- .../impl/rolesandpermissions/RolesAndPermissionsPresenter.kt | 2 +- .../permissions/ChangeRoomPermissionsPresenter.kt | 2 +- .../impl/RoomMemberModerationPresenter.kt | 2 +- .../io/element/android/features/share/impl/SharePresenter.kt | 2 +- .../libraries/permissions/impl/DefaultPermissionsPresenter.kt | 2 +- .../android/libraries/roomselect/impl/RoomSelectPresenter.kt | 2 +- .../libraries/voiceplayer/impl/VoiceMessagePresenter.kt | 4 ++-- 20 files changed, 21 insertions(+), 21 deletions(-) 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 7604dbae18..a7302c9730 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 @@ -201,7 +201,7 @@ class CallScreenPresenter( userAgent = userAgent, isCallActive = isWidgetLoaded, isInWidgetMode = isInWidgetMode, - eventSink = { handleEvents(it) }, + eventSink = ::handleEvents, ) } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt index 63fbb0bc7c..90110b265c 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt @@ -54,7 +54,7 @@ class ForwardMessagesPresenter( return ForwardMessagesState( forwardAction = forwardingActionState.value, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt index 192ff30f39..370b3853ea 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt @@ -122,7 +122,7 @@ class DefaultActionListPresenter( return ActionListState( target = target.value, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/video/DefaultMediaOptimizationSelectorPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/video/DefaultMediaOptimizationSelectorPresenter.kt index b62b4116e6..c0121b98b0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/video/DefaultMediaOptimizationSelectorPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/video/DefaultMediaOptimizationSelectorPresenter.kt @@ -172,7 +172,7 @@ class DefaultMediaOptimizationSelectorPresenter( selectedVideoPreset = selectedVideoOptimizationPreset.dataOrNull(), displayMediaSelectorViews = displayMediaSelectorViews, displayVideoPresetSelectorDialog = displayVideoPresetSelectorDialog, - eventSink = { handleEvent(it) }, + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index 612797261a..f7dd029826 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -382,7 +382,7 @@ class MessageComposerPresenter( suggestions = suggestions.toImmutableList(), resolveMentionDisplay = resolveMentionDisplay, resolveAtRoomMentionDisplay = resolveAtRoomMentionDisplay, - eventSink = { handleEvents(it) }, + eventSink = ::handleEvents, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 8602de0532..6f9dab56c8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -289,7 +289,7 @@ class TimelinePresenter( messageShield = messageShield.value, resolveVerifiedUserSendFailureState = resolveVerifiedUserSendFailureState, displayThreadSummaries = displayThreadSummaries, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt index 3d1cc93d58..bbddbb1066 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt @@ -71,7 +71,7 @@ class CustomReactionPresenter( target = target.value, selectedEmoji = selectedEmoji, recentEmojis = recentEmojis, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt index 4354ef5b25..c3fb43d374 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt @@ -48,7 +48,7 @@ class ReactionSummaryPresenter( } return ReactionSummaryState( target = targetWithAvatars.value, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt index 33316a134a..a520f1fee1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/bottomsheet/ReadReceiptBottomSheetPresenter.kt @@ -36,7 +36,7 @@ class ReadReceiptBottomSheetPresenter : Presenter { return ReadReceiptBottomSheetState( selectedEvent = selectedEvent, - eventSink = { handleEvent(it) }, + eventSink = ::handleEvent, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/protection/TimelineProtectionPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/protection/TimelineProtectionPresenter.kt index 0d9db51d98..ded49a3804 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/protection/TimelineProtectionPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/protection/TimelineProtectionPresenter.kt @@ -56,7 +56,7 @@ class TimelineProtectionPresenter( return TimelineProtectionState( protectionState = protectionState, - eventSink = { event -> handleEvent(event) } + eventSink = ::handleEvent, ) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt index c894aae05d..3aa9c61555 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt @@ -143,7 +143,7 @@ class EditUserProfilePresenter( saveButtonEnabled = canSave && saveAction.value !is AsyncAction.Loading, saveAction = saveAction.value, cameraPermissionState = cameraPermissionState, - eventSink = { handleEvents(it) }, + eventSink = ::handleEvents, ) } 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 69efd04b9e..90619d2e2d 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 @@ -179,7 +179,7 @@ class RoomMemberListPresenter( isSearchActive = isSearchActive, canInvite = canInvite, moderationState = roomModerationState, - eventSink = { handleEvents(it) }, + eventSink = ::handleEvents, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt index 413e71169a..7bfdf9949c 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt @@ -135,7 +135,7 @@ class RoomNotificationSettingsPresenter( setNotificationSettingAction = setNotificationSettingAction.value, restoreDefaultAction = restoreDefaultAction.value, displayMentionsOnlyDisclaimer = shouldDisplayMentionsOnlyDisclaimer, - eventSink = { handleEvents(it) }, + eventSink = ::handleEvents, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt index 2ad4c84028..e7033d37be 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt @@ -100,7 +100,7 @@ class RolesAndPermissionsPresenter( canDemoteSelf = canDemoteSelf.value, changeOwnRoleAction = changeOwnRoleAction.value, resetPermissionsAction = resetPermissionsAction.value, - eventSink = { handleEvent(it) }, + eventSink = ::handleEvent, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt index ec90df1d5e..e9636978d5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt @@ -112,7 +112,7 @@ class ChangeRoomPermissionsPresenter( hasChanges = hasChanges, saveAction = saveAction, confirmExitAction = confirmExitAction, - eventSink = { handleEvent(it) } + eventSink = ::handleEvent, ) } diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt index 2ddb3ad34a..995baa069b 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt @@ -140,7 +140,7 @@ class RoomMemberModerationPresenter( kickUserAsyncAction = kickUserAsyncAction.value, banUserAsyncAction = banUserAsyncAction.value, unbanUserAsyncAction = unbanUserAsyncAction.value, - eventSink = { handleEvent(it) }, + eventSink = ::handleEvent, ) } diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt index d3222edf5e..f5ce67498e 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt @@ -63,7 +63,7 @@ class SharePresenter( return ShareState( shareAction = shareActionState.value, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt index f12d92a50d..c6bfbd73ed 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt @@ -125,7 +125,7 @@ class DefaultPermissionsPresenter( showDialog = showDialog.value, permissionAlreadyAsked = isAlreadyAsked, permissionAlreadyDenied = isAlreadyDenied, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt index ffd3fda5c0..841b955018 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt @@ -87,7 +87,7 @@ class RoomSelectPresenter( query = searchQuery, isSearchActive = isSearchActive, selectedRooms = selectedRooms, - eventSink = { handleEvents(it) } + eventSink = ::handleEvents, ) } } diff --git a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenter.kt b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenter.kt index c7811f6d17..74c6aae39a 100644 --- a/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenter.kt +++ b/libraries/voiceplayer/impl/src/main/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenter.kt @@ -84,7 +84,7 @@ class VoiceMessagePresenter( } } - fun eventSink(event: VoiceMessageEvents) { + fun handleEvent(event: VoiceMessageEvents) { when (event) { is VoiceMessageEvents.PlayPause -> { if (playerState.isPlaying) { @@ -119,7 +119,7 @@ class VoiceMessagePresenter( progress = progress, time = time, showCursor = showCursor, - eventSink = { eventSink(it) }, + eventSink = ::handleEvent, ) } } From 18e46644ba41c0e52781e9a494b20de4d9bc753f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 18:53:30 +0100 Subject: [PATCH 315/898] Revert "Update notification sound" --- .../push/impl/src/main/res/raw/message.mp3 | Bin 8685 -> 22414 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libraries/push/impl/src/main/res/raw/message.mp3 b/libraries/push/impl/src/main/res/raw/message.mp3 index abc056786c8504a9441ed74e955d9dcfa6bac927..5e9645adaf1f2b7435ef29360c690b8ddc405d3a 100644 GIT binary patch literal 22414 zcmeGEWl$X77ygS5?(Uia1{-Wa2Q-NxVw`;aCdii_n-;xZV8s)4hfn->?FT` zopWB^m$&NP@26^acXfAFcR$rnuf12VZe=-sG{9egatLJv?C%2I-zM*5?QHGh1ypzS zvbXUETKEIil;xD|tj(=tHPqDp?m+RkS-aQ*e0_a+o$amc|83&6bano_`ak|t;6DZa zQ{X=Z{!`#T1^!duKL!3%;6DZaQ{X=Z{!`#T1^$0rfj>VEto}b;qOyyP>)(Bd{x(to zKv4=n_z(L30se=`|4{sg?*Fj-hx`8s{zu~f$p0U;|LFQ3`kmV$cPnLuR`_WU=pk^arz6L%@&eS1sm>B58=v|k6Y7K3jK66`LL7$H|QldxM zpu)fM1t&bIoi}}Vf81SnZMg{ZRb7$aJ^c7n=yfxtHnscqx3EjOi!fcn^5#`@Rn@%Y z@t?=n)IUfIi4?1s3v5(ENbkT^Aqg9Ap*SsDkx0|De$;Kng@UeRd$||#WhyiZY z*rV&N?6$`F!e2hWf5Z6a58UzS3!~2VkMBRe^?wQcY4&gW=THBa>sOz?z5n0iDeu#d zyEpWb#j@xqgqjD%Kx}D%?4y(vv4|!y`imbG-wXbHmn4cB_=N?_5k7%nE@%3aez<^d?p6WABm;eJ51wb_l z=WACy_ly(JM}@IR}51)xD&>xf;INz|FdPyG)Xyhmb$Q0wkX$X?zy- z^_2K&-61^ParNb!t&@U%0Z%)bAfy=MlXgb!$uM_i(fh=@y}hBYB4u79Ex=~N}Z>pyMKFv=NI0svCff5jV+>swj?440Zr z54nvBDuGTQCK^hX1SpnhgUOl`5}2`oQzQrrHcT*ZH%xZD#~Ud^T0RSEQ{x1_lCs@)`#FGx{tA_85s;+bYo}*9{!jB|=jZfLkq{<}a zJwrM`fseC5HG|>?o2TPG;qwdgDL4hbo06TO%iH_GC^Nml|9UruAg!79TuyW6 z%+7CROb~cP55SmXn0j~G@G0Y)(NQ&zh%QK+}q`d_NFB^WQ8-2fgHh#IAap_Yy>SyXy`Dn)Z{Ki;h zy`%3(Q;M~Rt)cI|G54EqnLlK)%;$U!T+`nt_CAe^<^Fov@oE3tdy~)pNsfo$l&bLA z-xm;MEW?q&;E5&Xe59|#nH7k^1{-w@S&18ozVn1UKtCcGz%^GzM;m;H6d(>k0V5Hp zl^DfBN7UpYUz}qb(I@R_TZ2;H7s8h@9q!E6f3!42d*0B)>;+C z8f8QMG9!)>#H_6$Tyi-Wz{KhMZk!jAh$)M{(*>2{(Q(-Q1NFpPMlXJl#AV6O6&^)X zp~8!z2@NS^qS-CUAfO+jz!5T)XcT7?N)`&&TxKQH^-NfnAitL7N7r%IQ5C$vrk)d7 z;rJ}!2QgP@#{!M>M;1@Xlg*gphXl*89LO_G+n7NHw-996OxfmHbC`<306;OG*=;lG z6=iZCUP)IqjSZe%0r7rhrDH+U{K)#o7h8|V$mS8+10u){Hw(TyYf^7!FLk)6?gx*p zw^!vtQ`=oZ?T`!psJ$)eXx=d<@}A4KPT-!l+{UK3`gwl{!1ebbCC?CJ%4?{8_T#NGN-4n$8~yyiy<8>U{TQlmnUB`DOH6mT>=N z+*GU>w%)U!l{#z0TIgdceh9QM3}~f522L8z0v<#OJ$N9L7FEWjl=y?@9ss}!&z`q7 zB^X_Y3-pn@k;w#d5t*1ZdW={>0f7VNUlyimo1`}ewludqw@l=jTq63lUyWDvUQ17V@gD%O)h3C_XH}MXne7n)jfLj zQkflI2T>McKu2m|&^t@nK{X75@ys$_lq~h$YYtXErc_D5hvc}6ox;Br642#6v#2%L zIFx~-sPvq@o6cd*ax{(MhH-K52a@QmjLEV#@R`)arf^YmT-3zM)apHehBNpXD~cV} zCY$7|UuJ606`X5Pw$2%HU(~ES^7t?ep?VaYdbNTsp&a+sajBJ!h&%84#x;+h(+q6d zAM_i@1rDL?0Y7VEL=7!)U4ZX2^@qfupZ+ej%7_mYkq>~#W>5!S4{l}5rp(aKlJlsd z0^9~0#Vu#|ZZo1GA;X_MM{{82ZdMqoI8fkZ{K)4lLu{jrF2-jL#Htdi5PN`oH75GV zK+r9%>S2Kp59@nVtIG#h=ju$J)o-*u>k-ty1J;EJ*W0R$Eb$3zhrH+QLPfTFO&tTC z4x2i&2#Z{yMOoXv-|n9NWT@!(>V5dZ_v%vkm;T$l_UaRe%)lK)Ec6>B!2kqnP0tPqj}(%aE=@|_xRw%oMKI&(|{r_AenX}EEqeiXwB+pHSvMr&o{{t zgU&K|PYr~bB-dhUgGMjYE4Eo!M$Xgqus&KkShyNQ$kN1DhOW1J1mVlj!2&x46kqgz z*9%`xLVfNN!_+*n7cs|eh}J{TjO>t`dhe{6B0h`dDbVAxA~Cf6&=}HC;pjxWvWocO zHuk5*^PN%UC?8{?!SC;H9G8B7{sUiDQ*V0xr^eEiI_9_IpEd75NB=xVgYL(*{y(3; zPu`jwndo?&(+0Z1u?MgrB=|a%0B%T#2tRgIDZe!i8ZOBjNDYo9+Se*bJ@&P^k|ZmV z&ag*L2tsVu6#Qm(>TIki>o%)q1*U3>X9e^(5+Sc@Ou_b6=`gr5|FaJ~tcl8_aw*c? z!72BJPj|gRkDm&HmW>{q8#eROGIOu4e8u?!#kx(~@}!-ZQoiQx={vk3c${^u{WHP; zj-*=q#n(gIE26m^M|*$@nwnup>JZW}#0~ixb;{g4`@l9YZo!ozA{ogBctTc&IML$| zh7bZsg1t~CLtyAy!EjV5bO3r_I~72e1s;ql6&)U-xniB(zS18%)zY<=m)|CIQnC5Z zzdQgcq^IKf7oM-jUz8MHu?0O7JtWaMJsOtiEndIK@wd><{1|;kO~)%AT_kVCcUhg4 z;86MtbI#7od*Ler7el4%T&X+A79*p;-}5ZaZR+Q%LETJ(%9s+qy6%4}-zV#k9eFjm<zzPEwK z#qw>0@T$Eo%jLsbeM((IV4!O~x`1{?#^3%K09lRBMqxf;F;mIbM2Bu^2f^eE)wIw? zWy1`iM0%k`Vi(6FcTmRwgOW&m!bn_TG*SoylWJEA7p)8+#h}y{kXDlp^})|V3#DX` z(AC389zLhdZKKtpF|i(ugH*S_8*!G+>Y$LIyq4t}bkxxcME;Pd9QRt1V7k2dGQspo z$<^qsC}YH)G)Rd}YJb9h$^X6EO{cbzO0mH+{AbU^2W!Q-kFQ%du^4BIET#)!tZGEl z{)gw>hlUfiz9+h4JmeHu`bimC<@^+j;`SYijh(*uKU97kxy>>i^Hku5RrEOs0Jwjp zGEZP)e`HV~C8o0xQEF0jb^3z!le%1i8pvaVlTCn$(Ts9zm6JwkvqcRoX9~9<6Pd2G zoL02l^14Sk20rOx*H-ypo{`t#--G+s;S407dC?M<>FioZEtnQIC|{;2P)@F4GFANgnDS^s&a5TLE#s@-Ru^9Hz>-jfws4c!sFJr> ziYRd|rggw-bxhn;w;Pn#QD#i`%CO96dh4`N#r6x$X2#u0;MKwx zC&Br?-J!fxCo>|~IJh$KY1sio+ImIUcm<+ZPsCq{n z>`AXA0#Un$SxUd07FcKrU7MYFK zZo%1T;i`K}{aQ1o8To`Vp@9(1S?&>&!%te&v$WpONO~-S1HPsq|+*hCG9Uwu4u~o^^dmej%LIr zP{>8n008u0;(>g!8R7V^%h;?^+Zz%L13Ri5C@nyICCtQAkqa1Q))Lq^v$r#___Wk~ zXvDG_mpHhXQ8gl<*O&sILeg8EQAfmUUkl8Pr!g7t?p6=p^kh`>s;yG7>C6<<7!Er0 z-Ck)G);Wfb?hkKhV9dsH zqDdm?*P8a65VhlTU84_KzutcO*qb!VJ{EKsJ;<1As(n?m^y%Ab<@_8M2=$lB;kRk}JJajaf+(48|fWc9)q= z>867Z4e}4QU=!oTsHFbLcjyO z*mB2Om>UJgs8!lQP|7+v+3L}wqxuKx78bUXd9g2kIni{5$bFTRhfH`p^@0WSSm=5F zeRdmVC7y&WCtJGL#|w9RHc^%c)PGf8N?>Ip5CHia(21N2-m&OqjP%$Km~df=bwVzO z1_h)l{BCtn#*{-?m6Z*JUzs+^w7IX-^(Q8aln|4n`aKe7U)h8cFdQoj-Rey5M({_%PxZlc-?tNrjQ)td!vNju-$V*k3U#YZ4#TL{i;vT0lzBD;bB(pJ0 z=p`nUu7>wab>J5}AI(W13t6E+CX1=KR;)tb2WOJU)9jWdqgjf=;y(NClbnjDE zi#UFa#^s9=^)#3ARtXz70OB$M1b{FFM?y5DhoPK!w8B5zv-w%&VG#GhH_uhkBK!p_ zWQDk4S|qzt(%lcP$1b^otdqjwn-tl9FiBPl#gayqcRf66_1iIjFb@xU$LgmaZuj4L z-KrHxZswk7S5Q%j=Ft$ba|}gBYe$}QI_YT7bFHeX>=yZuE$i+MlYhBEchLM5*eCb7zoo0`r*p%2<&x&Nj39GM#Am;UyT_;P%EWI5&bfK5tNe~?am$a+ zWM9@Cy3f$tEGS)HE1PuBD|rfi>9+KJC{J-THF_MIx36fs94e=`uoc&rV)h?3kEE{8 zgV)5=CCg@`0v2r-p_aq@p|@7aF=$H4jJ(R0EKJP$wiy#D+O7Ke;ur zd$848ykz9}utxu)$Xgi))iDIZx_EyiY~VUN2sVAtdWP~?$IHMg#=}T74A-`M<*Hn5 zIGcMdddn75>u&LJM8{xXw#J5pBv`q1a5xexa=@8_pwhDSyqkeVs$sdzeRmdRXc?Ed zG2QXXnfa`qUr$dhJ%r^CJxzl#gIn`EE7YQ2bK9y@*%k*y*`f`hqqU~$P}0r1GV9pK zCmVNIr)QjSS-(*Od|a~8DPwHY_TC3^#kSp%?LWO9nele3B)s0DS54;jeoZS5yu^N$ zy8{69NC5`uFo1vkE9aAtMei@o|HB+|r6I!kCZ5d<;}lh6H)gn6V#n}TbIyPwe)y28 zQ}wjZ`Nz=>YLUTHtdaHPGKrd*YA0xL*BH`+Nt#%aOR{U^XA^D4VVs?MGrdC4b+mSI zE%mS1xJZS|2$sF!sBuq{g|BU+ScavC*z1f~(}4X4&3p-Cz#CcZ{e->*k1?{smFUwY zgHLAC^1dJCkL@g+Nb>m-<1}*g{Vd{xTaKulVVzGDH2%93foTM8%r{Q%dN=D|zfE+D zZ~9HepKf2RPkp$1O6mRTO$5|49nGGhs$(q&De`f=0Bs2ERM7LjrAztTl_9I#!%UsDRD~Ij_m$#rN+|y#EGL-+@^V`s{0 zM`ahCSI!VdM`Oj-x<_ZPGyVA`Ub0?AAr>rPb!IcN*Lt{GlHl&P8_a z5}j)4^o{zTlxH(Lmp2kj zPbCwX18)OA?2gT6Rq{4!-{|ATkn?c%tF$?{xGYm-Eu)3=XFZ#&YgEV?=b%U)h{7Nq z#KpZB7I$dgquTacB_yXFw8jiyg~s1+O%ujIpnZ7s?n939kF zPYWY1)sYB>;9HJrU|KSk))xHPVrEfHy3n+>wnhkP$mEUn+hT!XVN+6*x6MF$U~#4=+29GYF*CFtSEeg@>S3Q#)JOip`(40u8uoJLsOPc-{jb{ z)2-LDP~CCd7L-je6=$GMa|7KDK01Uho;(;$)i7m@h;}Q7kQLY#Pv*urgR(<_j>Igv ztqoThY@7Uy=O*z&BjP!}OpviWIQnb__Nx0HtyKRERpnQRIR=#rEYBMMD|ji74pUa@uD$V52T1(ydJi*%IRg6p&BA{aQl zVm9-)%fbR7EiIhd73b?^-tqM>OCI-|O2|K4v3QsL^RG+7hg^Rtyf4;nm-8a1Z@59` zG-p5gE)T+PpTC^^1xXISpwIZ^YNl;?WR5kXU!Tr`6xvj3Z&H%G-Dv;l05UNZvk zyw|gL4)E;;8Bk4TPLl6BM@3SaO%z~(W$(aR&MDR20lF)q7=Uz^Nfa&ecdBTzJ0R+O z5)%^(__J_3O&${Ny@=tf5(Z#+xQUF@HX+b7MV4_F*m`zc5;FR(>*6}R{JGyqpJ@jr z_T;v=BSGom;n0_y)6GsT6>T!XD!GpGnw`w|W$SAcQyLZK{;zY&M}##HENy-=&*rEl zd`LH}$B)`j_2Q-rbrdJnhs6<`-u}c1s_G(3V3`oGFVwjXv=io)XPo^rh~f zAD2=LwODql*)b~9WLA`fG-ICzf2U%Kdbd=ws*wXdIKaaRr^JHJyvQ*E1k2HL6N8aJ z>7|*8Ce6C7gbNNm(&k?A)QfXvIzGdU>BNJrqqL|tnviavwU_f~Ka@P^FXt|&;em34 zyJZhEDa3D^O-qZJxZIN05RWraqMUh<#Y_x|FNVtT)F&+dHJ2F*bl*0t^#yCK9i>W^ zirfg+5$(>FD+VV<-Sm|XuUE1W)wxue=`+_KpUuU_4=o&HaT67;;_GslHZnTUmfs*f zE!;$RH|X1#v-R_co;a5(4h@x8vNfg}3k4`P((rMq@h|J<34QBp?*dvx!vi8)T%Pdc zcQsBP{rl&mo?7|CK>3eCXNjZ#CK*={1GwiJK=3n8*pi&3#@la`9 zz}MJ%Z!^F4OeJ%_bQi|#`apZB*7eu03+7U8UEFx`EDfc=N#n zY0Wxl()vrp@R8zSKCc8T4beiS5j*H5$?w7}-kGGAiWhWA@RGG^V>A*hL7!Mu% z5lQWkK!Uu%)Y!a7;!_1%&QK9A;=`&ws>a!IBuN!_&u|l~6LRDUaB@I$WpE*y5(7Yx zebEI)Wv9?gX^!z>kH{w%>kte@n*CH~)p~WR#WO2c%b*EInp*m1o)+0afqFFqEkThM zQdWBXh{?jZaTT8oEJ34-#&}=ejJF$%5A%(+5JOs$NK(^-NtSE9;wiBC)4 zTmSi28Sv2{;62_?f5=ml{>>XFHhR`$^!dy1xRSmdoWJqcR6ZciU3Ftw$Uef9gd?E! zz4*%I$=I!VOAkIxF@GJSs4zrKYkZh_cR60yGH$KX%Tf)|;9n@#(4?NTMeWhxp~FO= zJ}+=_?$OlwV#TjY>vz7bRq{!WIEtxVq6Xu;fR&eJUBj{EN$C48{mKo3*ClN0Tn#_) z>RSQOFbpV{G2|dFzVCJ*;Qiyqc6-2hHr1Iby0H%Fh#9-G_MW@~!8f;9ad5$3h94$yE;;cNxH1 z4ULJt=CZtHwstBdZ^Qv>sSFx>QUhm)Om0P$uV{;1`(CO+iq*XC@mj8WN$;sTqi_J4 z81>L@%cAv&xXCqM5*3BU%vr&MUI*(hDTP>U{D^ze5{R8R$W<6F|D;Jg_&484FfhK_`QNz$OcbnITI6W2p(y0)Xa(0Pl zq+xsZ?qat(B{ayB`~wiOp0t-{h8?uBpS`zEhn1BuRrsujm2lKG!N__@Fp*IUb+|OJ zM!%4C*u(g3RQ+ZzGuV;nctf4Zz!5F37YTpro-u8O$Fq2zUXy{2K0 z+fnVzG6YVa86N#X;qZ79aa~f&mOm8GXhf7alUaX9s&$9o9DO}{oIbQiGBk=~ZiCf{ zQ?3}N;>xF*7oVtAJq5O#?P`47wC;m^KZUP5o)kF?qJs^k&`=jpbO%0K_|;e6oqA0Yc-&V2O60QHR%h{5?BFyGHL zoFwtrzmOF7<#u?Sau#<@Qjfc+ow(-E9&jlju@`*ExkK=T7R;{t3)S()DBmq_t(nHl_Gh|J z)6I=*`de$dy1-uc#47Qo0)BKauT!SQ;mf@BS1Lu;_lk#k1A1Zs5eC#@v8x$iy`J}k zpDKA=V_n-*2qg)mkYs>%Bx`6YvXfE5YJ%&?g%R}(6UzV{gDF@YKoiUXfKhXrnB&>C z*Duhord<8TkLMx!B<`c98$I*S}a!DybnSWmNJ=iRZGT1Jdt zEXOVfubV1x)|m?{7>HNM%(7|aT+>_j^7b9x&GbO>AXj;LQc%q>{gQ02R zxiP)vxEyX$$8OSfq}J$YD9o>uXV+B3uIn_obtp5J*~`!_2+RdF6^a8%XgO&}>vY1_ zC@GZUuC!y^W3TUDiW$0%nHiLEzwS4N7n=D@d9p8@J>8uX^3+XplSk=dF7#=*TON*n zp>B%EV`pa7M{%h-b&tlUOB6{mzjV#ba=GfTiBj z@UMTro0DEA=|8-|XQt;lMx8$mkE?l(#Q9d?mh~|ai@9T4#vA4j5AX>3`aStne02C* zURpFLKEDG653j!_)8vnOYm{W)`Zt8Ie003TVC(cbtwxl}OQ`$9Dq}ZqQBmiGI|bM+ z=T_Kow8>OHsLss9K=MsSPlVb2`eU-dZ*#0bg=(HMPvS z^lCO=j>5zWj`k?&Gw$v!t|k<0{6Ix@TGW(d;rz zVd&6D{J!SQ?)3Sdojb$EB$p;F8(s2s18rE1WJF3Pi#2{X-4spuQ8Qa~&-+3HvmTn+ zoStzQlA7d}v66TsgM{}4UpyC3ZwO4DUs1uTWhIb#oR)~9J|C-)#Y7kR z=u{l>+H*cOc3Bth4#@0qKh--poIH^(kQ5WGDn-16y*|#7O&Zn(V%$R508)@7*?0kw zli)223PdsvI>W0z~KTdYrMdWtGHf zkc2cH`9)E%sQ@>H1>7Od9>$c&m^w=pF0VdxshUdA;)KTzyw21i5rC;)i~8kjc~Ei( z%F`v9+NZ z;O@VXn+L;eW<-bw@P5vDwNAxk#FNlioS5SLhDT^?Gn1faG14;uo9_%U2~avMV>{RV zZFs{U-nvg(9B{0H<^C6cc@oyD1Ek2Fl!3GJBBZaBL52~Z0UFkzIN)FZUX&+`rX0|9 z!c+fdgiXK)>LR75z+4(|9Xl`rkE~WR`)o|oRK&_dai=9n;yPyyi zi?#JkyG%XqB)XxhyfF6BK(1XM4snX8ur4UZm!R+Gbh-cRVp^i zAT-O|F$O=<0V(3KX1lVN$gN~T1ZWlIhG&y`JGq|a$j-J79Ua8fv{4v$J!8$yBKN7R zJ|1|HyFrlWw7Nr5p7b7SZ3D#uM>K_;59OHRr>rNr9!RL3u&Nyb7PmZJGm zRq0x7(c9WO6hT$l^_JL9+H6wJxXJ?X4X%(v@Qv0lp_|VFkUDT_ok0KTo(JXMEY9Da z2RlRD9YY+`0fF@Oqm9>~M@CEcBvam9oTF+`~1vc48=(M+E3g%$@P-f85 zY(T-L&J`=4$CC*!QpaiBOLm;%OrAs$daO^7e@|Ma_sYGJEW9$M$A;800Zz+4D-_LC zIfA0s$-`8kHNj?A=@iOZToAtNl*%|M8eUg6F+$c|xlCWj{VlAu58I*3R!7q?)0Nrr-MB8 zH&fFbiMj&3NG{9PSB25LYaVtIB(RO}kXnQ8RuC!fCz%PE+8H&fJU3RnJbCtCsi_KA zps`Zpg2{3QfjJ7zj6IqttkgJWmqG@CpY$GLf=Mce7d#HJs_x}9adoL9Yi)iCT3SEi zA_GKv%97#Js%>A(m*IB}R`(#amAUj&LE6U(;C;kZxt&@8!B+?xKBiRuupb+tYQ4!^ zJmpv@q!=Y{{W*7HeNS9^VT0iGY@GG9Ig~}-*#bwJ+Ulp3ePz+W*rr~&t<1%Zw_JOS zhnz@nR@uQGPbuzuO|x>Xqs|m<{qVcB}I!bHqw z*M=S=Jf7viUcMCcF){-r$B|6VkmoL%XK(J2IH)q8>Hms_D0rKiiJK$3%xsxqTHeHb z?G}&Rl!Qk+tX<+4REz{|RDB=jjN44C{kMQYgjNP@Dx_*rPJTmqmBm?!2XruqYTQ`R zcCNu`pQ8LF!1Y$8&?&#qRsihq4io44r0YPLebm0Yt5T4P8Pc;^)4Kai&4QJAnsGHG z9WlsUu@zGy_im;|^!&T(7D=I+4)wI}oU2KX4efIaDPKw%cZ7LZ$?skWpX5fJ>ee_h zS-u6&+qpI&eMN(EUJc!}GnFxckO^%)4pXw`fa%(VvU95E{F5}xa%yQ*{r}JRCb|$5 z)P2A}1cX?FMaO|oNFH?`3rY7PSfm8lg~`MgF*3vz(5A(z3Dzk0Fv+N7elJbxMQZ&p zaoe?CZ^E6fC z(!6yWs;;8?`tyTnD%gy%P|fb6OU7Cpc!Yv;;<6@vjnj}AK+Fxn#r6b@LIm0BS~$lb zUVyJJ!eYOTm{$L-0z{N>O@Z~4iihc_&u%h?j;YfMUW0z{s1)JRGq>Qe(MKns#jf-A z*la0#Q{cQ5mzAHQ(&KQ6+ljp&Jy<^|eH$y>ZiC;MP`E)Ef7P6d8ebi$+}cLko2ydZ zBG8xvN}CzHYNce$!{NNnI*U(Fi7GTkSIU&zEZmAb){h`GJoR&c<2KkFAIHo5^KS>i z8cu*@*hgi+V3Y9TD;$u4?$LK1f8aEl#7m4O5Dj~aLG!~kE;=iV%6%EO$Pnn5A75x> zO^y@O)O={qJhe>0g-6@P0)LD|N(^ZPkd$?f zr=^<^Bo+k%;UNM{IlhGwi>amyL_bXp7;*ypI_%%<1wx0r@wX~|cl19cwKj*{!4v28V} zLUR|CA`Ni7OaA7Mv&^sWtsY`XG09&q)k2`CW!O?G&<;3Dh1aMA9sV#uFsB$2r#J>r z6T%J3%;I&64j;atn9U*@e!KwP&cK^@TU(SmXeR!&tK=tNh11w*{7hlyC^T8#MhcZmQ*Ws~Enx%pA`s=q0c8-q%gN2Ec}>X9 zRKv6Nv{t^ksE#-;LY8GuOC9>?t}7i%cc9m3Xp-O&fx%L`WO<9?AFf8t%}a?SK?sOT zME>CIGU0#TQ)z(40u-^-p-)d18?@JHAr6AAIo|hti^Fbd%o2|E|)DuvDt>*D*bp`2Lh0S|VTzdkV7>CQj`ivcU<)A2`8{mmH7Z zbP6Rjl_?(FL01T&&i?1$KQSL#1H{8N%!$A7>ASnmVAG!-T+Kg^nNE|~4!LMf!60Xd zDTsU9Zz`5j(P_W+OeRcsS{!k;^G+Pd1ML)3$!*1K$nYg~vNAIGk`tw@$h4!^o=YIj zp}OtBI+G5#cJCM+BbdHmx88W_d?pc#R$1&x#oD+|dPGo&SnjY^`9ePbOqB)kO5}U$ z_3hYdX#fwq$uaSw;&F^_2E5Xq$kA$?mxU`ozvtF%-+HO;#IZWSl)Jm(-Q`kabgd;r z5@9D+`a(Uc!lc*Zn~eD1b@+#O{9`p_(8*du-41`~D`WGIrjijDmJ=Lui8#yk$ari8 zR?w5{5ZSR36EP|osmN$KPr%D=qKVrG7tOzgl4xug?ilvY{x}sUS~kW ze3Z#?aa6q8xp*n}fkp?=Q=H}TWeF8VLRFw6&}g@|;^A)=o+~k~VdeTxlj83C)@<+jYpUA>s5Czr5o{z2)|VHGorBSq@)IPuFeK1V)%Z?tvW@(*;z$C8}C?Y zN~7H)YFyrmVk~L~bMj;NOotEdak$qpa~Y$iSHHjB_cJ{$M?7OQ2|B7YdW!Ft7G>NH zD!K>jHI}#E!&A*4_U?D@IscBhf^mT8WdMO!P(>BX_~efe5DIJ)ZXP{StGqo%vvJ__ zq+q4DI#adpB+}w^RIfSu0vB!4%!+!Rcy-I$qXbu-tRlQr8%;*)m#vvzcfTT81UXw_ z^U%o9+iG@AM7*9y^67&03CBmnF69_673?(DW;X)Vy%Z=4g4_=rrN?9?)hx`s-JFp} zLTeIXVXhHN3S*++vLLats7_9kB&bHy!X>S1Rbdw3JC@ag*~>W&x^cues|i|1q@ks5o*q7YWM!c|p_9y@fesDyGWYVoL~Lpp0kLO>e;&|?|XI@ z^}bd|R~aA5YX@2@Ug4OwG}6IIuEeE)yNUXoUb)9RR^~X&$&MOH-gS$WiZWF96q6{6 zmLDpV_4Y!X*;^XETc$qX8;=9d?X+4h#G>E>5h1$e9qigC%B=j}@aE6MM3iN0O!-aftxx&4I<3+D);G3_8jXfTs`2*dSmo>9 z?x3+svr~$miWgA$+f1OyQ=j+SxH-DQ>?TGPv*b>Ln#CC#{pi|Yc7^OiOZF%YCNURJ z*;bXe(WkHE+N&tl85<^&GKAcQ)rH>1)Jw#`1TfoAwQ;&@VnZJ{LRXYwRoA=`%7dm9 zj3uc(MFu;aArxCi0p69oMXdGmmgVmb^~4S-S9@d-&vlKMPOmYH?VMLRzI!EPWn@s* zBVsSICL!HlJzXc#(cm8G=D`tc)zQJOLQE){P)q=`a7|e=+FHAXTmsowPJXA@l3^5Odnud>?)0@_;QI1FIHi?ktSY4H`j=u|bYVL_{wDw{>wyXt- zq)0~pDnIV4Z0!5o#M|i2x@~Fs`qZmHLC>VZN`(-!vaF8Z~*SaunnycY$-Ty{m(o zF|@k^B~{dloTO?&O0&kP)*)xIJMk&T-YMwWxanZ*rGjgG1Z z>3T7xfMGK3p@EnscG_~e0_exX=o4Mly464@UM{(P;PB5CaqF(H=;Ol zI`gwuC1yV%5Q~x>0W-)y3sH?K3xxVaOR{ToScZu zWzd%j_Q>zvS+_rcpZIjBVDemBP~8W3QI4@6tg?z^O0*BY&BmNmGgrY#MC{LJH<#Zp zai^wKsL|AFYqu@pSk{phHtlL_eJT32?vJk(jfVQ_j)1KS0odIK54%UB&;Ne3iu?qUz_4$^DVSoo>q^#p1Bg52BkPrJ`7 z76%>dOt~8@##h=H>*KCoV^?_ zCKhf%#t;1?*nO6Q!Dr$D>G{(2^Yyg^E}fmny6r{QdBZ z)J6ysw~|STBi{v>o&5-1o(Sh8zFU~YbpTP2=dajcr<8jmm@`!)G^?ZQP|e{(l*+hw z1ZwsV~Lc_i%*DA_$3F`qK+$(OB90*F78ndR;jU6JTCiTpfi9u0pj?Vqx=|+5D?YOAuY@Nr;#X03t3GCQgi6NOS`5 z)Rg82vPwu7$8(_f$hbQeI>r;bl!R`{Bn#*H6Q~^j2AbK@~#05y9Gy~9=BR`7E$OHlB@}JdGIJGM3 z<(HF(SDSltjfjMi9(^PGeh4h@keS}$NLrZ^yt8Q+Lbvw9`5@n2kx6>cSuzLLk(ZgC zK25{#tf9=3JC%dSr8x6~sT5(GD1WO}D%nr$r^0K}HCIL_6Oy|b_Z*%xZ>WUdap@;l zO&wf|S;?lW&NgDZpUIf_36xY~OzPEyzD!~=g=!w&%4ZSj%TE&OB0j0*vRCI;;CYJC zdgOAqq?eN$Yd6i3b&biUu}0#>(x+$=X-kb~UosQgJyzJc^@LF=Svt+9u^qd_`-X0AM$(kkml zr)RIeD6a>9yc?9qrd9OxxK({5OH?&|lvcrgR-ta~TmFY3Wm<wCITz zL?noiLS!F)&-0%1{_+0({PTYPn7Q}dnYrKj+%q$G&ec+rfB;wUUmcFB_~!Y@g_BIk;-OB%1}zU1{4Gnah0V(*fZD+rfdCArLOdzD%Cs`7u}1^-Wp zt4}9)i<)qrX$JtH9`;EpYXpESUQDaR1L6hpd-@#2{jS~ygil9(l52f-9a!- zbw{O2=8wY~aOvNHSlKQ?)aBin+Y9!0^x{oeiENnv{zVH@y=Rz$uD~Pw$dA3~p}N#wU730r5L928#8?h%T$&`##T_Pq>HYBgvIhRWvl5SvhmZ~3C96aBAEHG~=QogWP;WS6fZhEN3ul5tqwW` z&;kJYgF*KfEABV|C^fCGi&whx4+X$g3imzSivT&EJj)RnkZjj!)me$7-6Xxy&WQ!( zxClZtacYmXJ*nV>n(ds~r=3Y$fx zu{%(pr}l(nWk&zddSo^ize-a`arT*#4uqxgGr3B-sJ(uBoBmwno91i*KyT+vQNMB- z>`HNTb#`V$!uOa5GH zdD1#&P)J}TRWdB$I{Z5%qbgR)b%w4YiqUx6mzgKjN*Zmy*yL^S!%q1X#E242e*BCY z{YF}xLivV@sh2_3fO8vW{E4@QZAGB|uX&}^g&~uJha3lZFT$GcF9N#li8xutCbJ-D zF7)%G%Pv>6wNNjn)%z~P))=voZ7tT@MKPE*&E?%}Q8iIocq@$^E`T<4;5AKts6TtB zF1m}s<6|#RWOb{CrLXX1YYViJFjUpJsj<9iy7Er}fD0AY4y>^d$^J9jH*kPx^2czgUE#>2QCVD(FcXQxz&~s%6EnL z`a96L^q@0X>XY6JAB$^6`0MvD^C4mdzbUFBN0F;pQ%yN7y=<5$_yC1~aea%1PMZ&@ zl`yeS%gvTt!hWbwdG6ZfW4Jb)UH2EY*NR=qSRp7wG z)BBw+Xfdu_AvR)4ngUVP`i*K-SCr5Ra~bvL$4J~wu>uUKGCx2({&k2r_f-q+skD}C zZ~baY*o}}mt=kX$m>z7{th8Z+Z% zx8~*-r`+rI39AR^_o#^AS=@S4B47pGAv8s`SekWE%vA_jpawz_F<~4V{*nR?= zAQvkbf0Sb)6Uo5 zBh_CAuvS!Z@$oez!Qtq#&TyM|Ct0YLfHU0ZZ~8X9${;^-#7Wl|?}LYVFyh!xsFF&< z+NnLQgHJeB?$>D38jS+J7Pa3ym1b)`x7FX@7I{^t!6vmNI`4Wy3m6z|B=h3q9z~|D z*>L>Adg?@ix-|GiKnv=DhU4dnFuH85HH`%6wf2)xLJa_rfk+UWUj%?b5>IPMeQ#UX zlphe`H!2Soy7Es=2L7utxwRaR7O|G6;aFEs`F>3z#X$?z73uPr8PAmTCksInM${)F zAe%s)xSaX=diXkY^(;#x5`qkNNa!eDId#;aJC?MmwuMh0TUUbWgde{m}n&D;nR zj~1=(6DL_)Ek9i&}|YkWVA>UiW(Kj2&mk^K87?}99I_E z0$aC7l8I+<#D)yVq%AWj%f<&9wYQ>z! za!M-nYar~4YT#2u!^Z$ye64Hraaxq??2B@0{br*VVLQ5R%d9!tcXfllUGzM~zp#D# zs8AO|%XqYCbCaLHgJI_S9#Za?LkFbzAlkC~m8sWrtMk8*`C`#eYi3{LWpp`vxxNAb z9SBFXfkS}sWMOpSO{(}~N#z_IH5?w^|KI*0B%U-S56bq078 z6IrEF$H>+-UuvC9A{i%jcF*pWsyd@)9UtbR+sHiy^SaAyx$&axJ|rRPh?{#ST#rc{yn=jTB1Je>WMJP}tWuVZxJISM`K?{jyG0ytPVBF4p9M(2 z<1)=vYI|^g0{{FV_j1k!E`~Z!Ei>s1ZgqU9^8AiN^wS0n6`==8{^K72m+9#4*D)f+ ztf9T^*BO(shw=xt#<=15y^~`0eQ|$I3ApkD?^MO5QOohdS#iaKp{*0mww5nc(Wl-*Vjfb{=~%sK#>0mX&mNFB&PTNu zEp!zNN&tW+78typVMba1QD!$!mNgWo=P?{9{{z8xbeOWpYjyZzdrlC zP!C4@q#tEXo{E&Z>0-QCTX507XszMw(;XXSO1TKm-5-oBGFyvCF=x5&s8y~u%k<+N zU)HBrO?P_sv=6%l#<3$dMS8a4ExyDx_v8!a##XY&rvTk5I_Xq|InkpVpNyXq;|&b_ zOcOT3t+hW}Qc}l{aAY*S4U7Yx<*qBe?~5D}yUVCG?s7Rn&qBT2R-=cLqsfT;^O;ma zvF9Hpd6DErNYo6db7_5KtZhY*{Kn>QuH-DR=BS-oH9lcg@h9h@;m4f$knw7cexf{w zI90q`DLwvS=*tZz^T9^AuJ;u`u$#%Im6$nosY3Q*iejgM2=j z!e@6*uOB{G?;E-Iq!u8q3tPo8CZP}!>`5}24J%7!mgBqE^GNh!Dbp!Lf%g)ps+6P@8b2dJb=IlWVoz|nDV*Jotbr4UoQ6*H#V6wS_C)k3i5|3v) zSYcV5);;>Dm3utC_yIGMPF~`%DlSbnCE|T>y-XNNqoukNc|cKT-6r>SsJr0JyjW@e zS4iUG3_$+{l2%5#Xo>AD)$E}9)L?PVSRv(Vit#0#dm5`tAoDdTI$ziBp;-RC^v z!k~baU#Cssw6)mAhrz1;Z3#JrYkz4@vh(mBZ7>C$Vzw~#j4S`@IIx`j)c!-(zY^i` z!SEf%#Kwi22aV2s)8sWTaa<#2V}fd`_QoTGi(8=tY_ACppl^bh8}K1^m{teE7dPDP z=CM(4If3{HxMv_SRm@zpf=$q4sgj&2OS-f%^rubJ7ixtbN2fCO^Cd)Y;A0~at6c$u z2J-04gf)fUECNQI=S^Y%;HZ#**Z@~{F0NHHaYq^fWDG`1&qrsl>PG()VyO!(8pX^89kbilMPNsIR3(#vf$dgKgR-gGbhi}n$ zH>J=@|8-EmVg5GFaG365!+rJ||wF(63`8Sq`r z0)V*`9ULzuF9449PCuA6>z_i)3U?rF9xW`kwr6O+pDsz(9qf4efu$5h3;c%R;Ig!m z7OAubG;y;dV!-#O%>D)<#O#uqpm<^JfjS=VK>Cav*6Gy-Polb?%S)`hWU<$tt4$Sg znMu3SC}bPEV(@m1>=-=}MXbtDbn2Jb+#I{4+>$NPz3vr`E^bZWX&DL(mrlyPPn_pV z5l2MUDn=weElsm-U(sx9YV`nO^`I#UJz-_p*6r-Pv-|26)3T*Rdm#L0hm-ZJ zmEWZLc^-Q0Umrkfy;2U4&3(3kgsg!zSf*v|f*!sXhGGm5j!;SW36<`Jo?4N}F5_P> zpIhu!B#+B>0T8ofPXL5Z48z@#oFRqnpe0QJZ%q}u`AW^?x=Y6kb>iUV# zaIeBwGe^rYZ~ifBw-?CUGa1`C*{dOozDB1&^XF#zuy-e7bW=oYDM4E68emm}=5Bqx zyL|xB(k73&xh6H-k7sg183l@!rzj(8UPom>+otPW-XXo{&wXp2r@q`;9j=}|c#H+e zmMb&8jKw0NSYF1M!X>A!rKR5-Cq1)N&WhoE6BWtcGd>jNy_aeuzke@tbpKguT!*VK zuZVllq^$J>RZ#UvtRXz3G}|Hg$Emk-OQ69{ZA`;`!bM#W^7n@N0sYJBL#4*tjpkSZ ztX&#NWr0P7s<)i6u{1;WugbKV`1i*~E0$o<1~hbt*9KrquD%aZy?HXyj4-SK5tORPjLBo0zDE!i;2Fj~aC!9zp;bfC?Xd zW0giB98n?Ufe)uuI&R%-_m*8xt%h50FFYOoUQ!Rg?z8Yp=5SM7idlO7PSGZ

q)t zZ98?m7I$5NB$1MTu_RmyysMK6fvNB%!0e z4arpY?6OvfAR{6jrEwr}>3WSn6?g>`uTHuNRARP2KI8e0Vn4$uvthpzd>S&sbNL-% zfP?CtSSr~!mo_HEBVECTvxg7&ce)B2+>k@A=LhCdnvrA*EtAWycGg(C_DesXUq<@& z@5RVCPq?$uC(U7tE!w+0xLty0bO0Z$2&%)`nRfd}@1E6otx!Se+sf&|u*mYB3w(!@ zv0TKo@}U_3vvcvpk%;s`n%!<8*z6gjZr%LbU@wQ(m&9+APTge{NrgnP&N8^oZmjto zb!V`Kgx-x-CsyDNt}9EOA~1a_5D-SxP^)K`LeAfO*`5AAe>t$%4hhTiGvM^!jp>JW zN0wP%{iP(ngFTGHul!Ghf%?H=5^@%#U$9uLz&$g%a)+E zlyQTf0l6no9Q)(@FBWg*UpF;7D3eyiEQWgqyv|>Q{X1FH1cXL?ji*W_V_v!)K@;YljDQ03b>a27+WUTE`j6AkRgKT6zw!jmM6F|RKyralV(1-=wO=ei2p(p9m zb0weJ)Xt@JGXVbkC_p4NBVy)j{1P|dPa-ZTapixT2vjJeWgE?kP#OFZ3>j2?A*>Nm{uFFCICotov6v(dl2{X*M6XT&GixlQGcP8}h{40;5koV|Bz2 znA}FY`P405IlMb;uJXAl3V!g1J+O%aW=_YfXg^e4hPR+kF=+~04+ND_x={GOj!#qb z_}K)}ddn$ai$M==(Z59aVcCyRu|lBybn(Y6AO9TF^^6BqodDsjn#X_WDiRM_iGMq< z$A!Zc`}O7~kU!)i18$btEa$M?NlD_~`}TP@VJQ8;vfy6Ytd5^JK8{COhgYa;yer0#{-aa!4jtE9(Ug4rDXgW`Ef#Hi;YY>o#7N^Ijru#Ls&;dwM_>3IaD z7ZIWa9sQ;rD4K&S2$gL6^HbBYauE?bLgR?SaHJX60y}Dqq_?NWg#dC701%x}u86U6 z(jVgnQEBrMX9!PU`QHqa2vi!G$VH~Qy#BpNq6wl_CS{>^8X$@++%k%wtWw|~udzQ6 zEBrGOTDNB2noG!k>8;(M)qPR&cUksS5YF-}m$qrN$?R4-JDIn+<)pyZN1yf85I`vAK6= zI=bk$BBkw9^X9h^o40wu?FwnZ)=83WX%?Km0yFmnes~O4f9M(>ViWhc_RXWf!$JD1 zjub=Ci(ZLB#mr&RwoY@&IJz9ybAsu!kJVVD3>B!f(%X%`W}mLwR9;%D02(top6F1p zSHm#w>n8kat@CHf{u6yZ`zMt=tCv51Pd2tYE8p2-CmAJ+%P6k9&ebuNxOYB!ubvoU zg|DcSKhtWKtJpWy5gZkOStv_(TFEY;k_AXN`etr_#z}lF`TEI_*1{fLoeiUo zuH%ZRwJNL0=%0MS45#XmTPyAu-~1&Fe*2Gb%{a%fEB~EwvoM7_6V_sghuUQ2q$D6+ z9}ZZBTc2_?mrWE`j=%9-r&fR;ve{n6A_8v;sSFSr^2*zCF`>2h=wUukg#SzUXZGv@ zqd48WJ_!gAQ~0tc+c|)SEwBv7*weTMY5B+|XGhje(qjWd8XDSh&&1c(+KibgKFx!X zshbiC!;;wHDreXb1!PE;-!A;;qp;DCk%@6RPjlDa*Q!4JYbHwPj@9Seza#-bNRyQ> zuxF571vwp>!^(XYFT40Y=2Ll6dwN+(rK6eoulgZ#9nEghO{E2O;`FXmH}BRTTom*y zBXWFM2LA#$@y>tuJ~kK6Ivkq!vi*4}s zFFEg~%%Ujva-!+l?bd9*3L^BPZkrI4&Tlv0mOX3hezJEg4t@^J75m$vrVV)K(jtdHYNBwh_H+OS!#tD|ZnmA%Wx6B^t`e&3?^z$D4^h#A!gd!m=- zX&3Rlcs zDN@LzUO~sCAsB^`$ln$W+rM7l&Mdzhtc7w_Q)xN3aN5YQ<14g?3CSrklzzq{cjhgmcN(5R{XiuZ<*;y zl3kP&du?l8J-;yiZ1%jS)<&vVyS*h8*{2&K{&ji7z|(-W+M({~GqY$EgSfr%F`CiS z=~g2q7Q*}IJ}0rN+M|xR+EWynC5(fJ@4abGPQHmsjxWFE!^H}CiNiqFYHL&a`e)Pmq*fBbzYwb##GSZN6!Ej8!6qY3pmOnlCCLA$o%|Obe-s%2 From 3ab67bf4216be079db3b1c9682fb621d06826eff Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 19:08:49 +0100 Subject: [PATCH 316/898] Use the new notification sound only on debug and night --- libraries/push/impl/build.gradle.kts | 4 ++++ .../push/impl/src/debug/res/raw/message.mp3 | Bin 0 -> 8685 bytes .../push/impl/src/nightly/res/raw/message.mp3 | Bin 0 -> 8685 bytes .../src/{main => release}/res/raw/message.mp3 | Bin 4 files changed, 4 insertions(+) create mode 100644 libraries/push/impl/src/debug/res/raw/message.mp3 create mode 100644 libraries/push/impl/src/nightly/res/raw/message.mp3 rename libraries/push/impl/src/{main => release}/res/raw/message.mp3 (100%) diff --git a/libraries/push/impl/build.gradle.kts b/libraries/push/impl/build.gradle.kts index 87b3c681f1..b0e32481a4 100644 --- a/libraries/push/impl/build.gradle.kts +++ b/libraries/push/impl/build.gradle.kts @@ -21,6 +21,10 @@ android { isIncludeAndroidResources = true } } + + buildTypes { + register("nightly") + } } setupDependencyInjection() diff --git a/libraries/push/impl/src/debug/res/raw/message.mp3 b/libraries/push/impl/src/debug/res/raw/message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..abc056786c8504a9441ed74e955d9dcfa6bac927 GIT binary patch literal 8685 zcmd^^cQhQ)!}rJTYOAwYHLC^@RwsnjqJ&s1QDgNkM2K$n-b+@CUZa<25nYr>wCITz zL?noiLS!F)&-0%1{_+0({PTYPn7Q}dnYrKj+%q$G&ec+rfB;wUUmcFB_~!Y@g_BIk;-OB%1}zU1{4Gnah0V(*fZD+rfdCArLOdzD%Cs`7u}1^-Wp zt4}9)i<)qrX$JtH9`;EpYXpESUQDaR1L6hpd-@#2{jS~ygil9(l52f-9a!- zbw{O2=8wY~aOvNHSlKQ?)aBin+Y9!0^x{oeiENnv{zVH@y=Rz$uD~Pw$dA3~p}N#wU730r5L928#8?h%T$&`##T_Pq>HYBgvIhRWvl5SvhmZ~3C96aBAEHG~=QogWP;WS6fZhEN3ul5tqwW` z&;kJYgF*KfEABV|C^fCGi&whx4+X$g3imzSivT&EJj)RnkZjj!)me$7-6Xxy&WQ!( zxClZtacYmXJ*nV>n(ds~r=3Y$fx zu{%(pr}l(nWk&zddSo^ize-a`arT*#4uqxgGr3B-sJ(uBoBmwno91i*KyT+vQNMB- z>`HNTb#`V$!uOa5GH zdD1#&P)J}TRWdB$I{Z5%qbgR)b%w4YiqUx6mzgKjN*Zmy*yL^S!%q1X#E242e*BCY z{YF}xLivV@sh2_3fO8vW{E4@QZAGB|uX&}^g&~uJha3lZFT$GcF9N#li8xutCbJ-D zF7)%G%Pv>6wNNjn)%z~P))=voZ7tT@MKPE*&E?%}Q8iIocq@$^E`T<4;5AKts6TtB zF1m}s<6|#RWOb{CrLXX1YYViJFjUpJsj<9iy7Er}fD0AY4y>^d$^J9jH*kPx^2czgUE#>2QCVD(FcXQxz&~s%6EnL z`a96L^q@0X>XY6JAB$^6`0MvD^C4mdzbUFBN0F;pQ%yN7y=<5$_yC1~aea%1PMZ&@ zl`yeS%gvTt!hWbwdG6ZfW4Jb)UH2EY*NR=qSRp7wG z)BBw+Xfdu_AvR)4ngUVP`i*K-SCr5Ra~bvL$4J~wu>uUKGCx2({&k2r_f-q+skD}C zZ~baY*o}}mt=kX$m>z7{th8Z+Z% zx8~*-r`+rI39AR^_o#^AS=@S4B47pGAv8s`SekWE%vA_jpawz_F<~4V{*nR?= zAQvkbf0Sb)6Uo5 zBh_CAuvS!Z@$oez!Qtq#&TyM|Ct0YLfHU0ZZ~8X9${;^-#7Wl|?}LYVFyh!xsFF&< z+NnLQgHJeB?$>D38jS+J7Pa3ym1b)`x7FX@7I{^t!6vmNI`4Wy3m6z|B=h3q9z~|D z*>L>Adg?@ix-|GiKnv=DhU4dnFuH85HH`%6wf2)xLJa_rfk+UWUj%?b5>IPMeQ#UX zlphe`H!2Soy7Es=2L7utxwRaR7O|G6;aFEs`F>3z#X$?z73uPr8PAmTCksInM${)F zAe%s)xSaX=diXkY^(;#x5`qkNNa!eDId#;aJC?MmwuMh0TUUbWgde{m}n&D;nR zj~1=(6DL_)Ek9i&}|YkWVA>UiW(Kj2&mk^K87?}99I_E z0$aC7l8I+<#D)yVq%AWj%f<&9wYQ>z! za!M-nYar~4YT#2u!^Z$ye64Hraaxq??2B@0{br*VVLQ5R%d9!tcXfllUGzM~zp#D# zs8AO|%XqYCbCaLHgJI_S9#Za?LkFbzAlkC~m8sWrtMk8*`C`#eYi3{LWpp`vxxNAb z9SBFXfkS}sWMOpSO{(}~N#z_IH5?w^|KI*0B%U-S56bq078 z6IrEF$H>+-UuvC9A{i%jcF*pWsyd@)9UtbR+sHiy^SaAyx$&axJ|rRPh?{#ST#rc{yn=jTB1Je>WMJP}tWuVZxJISM`K?{jyG0ytPVBF4p9M(2 z<1)=vYI|^g0{{FV_j1k!E`~Z!Ei>s1ZgqU9^8AiN^wS0n6`==8{^K72m+9#4*D)f+ ztf9T^*BO(shw=xt#<=15y^~`0eQ|$I3ApkD?^MO5QOohdS#iaKp{*0mww5nc(Wl-*Vjfb{=~%sK#>0mX&mNFB&PTNu zEp!zNN&tW+78typVMba1QD!$!mNgWo=P?{9{{z8xbeOWpYjyZzdrlC zP!C4@q#tEXo{E&Z>0-QCTX507XszMw(;XXSO1TKm-5-oBGFyvCF=x5&s8y~u%k<+N zU)HBrO?P_sv=6%l#<3$dMS8a4ExyDx_v8!a##XY&rvTk5I_Xq|InkpVpNyXq;|&b_ zOcOT3t+hW}Qc}l{aAY*S4U7Yx<*qBe?~5D}yUVCG?s7Rn&qBT2R-=cLqsfT;^O;ma zvF9Hpd6DErNYo6db7_5KtZhY*{Kn>QuH-DR=BS-oH9lcg@h9h@;m4f$knw7cexf{w zI90q`DLwvS=*tZz^T9^AuJ;u`u$#%Im6$nosY3Q*iejgM2=j z!e@6*uOB{G?;E-Iq!u8q3tPo8CZP}!>`5}24J%7!mgBqE^GNh!Dbp!Lf%g)ps+6P@8b2dJb=IlWVoz|nDV*Jotbr4UoQ6*H#V6wS_C)k3i5|3v) zSYcV5);;>Dm3utC_yIGMPF~`%DlSbnCE|T>y-XNNqoukNc|cKT-6r>SsJr0JyjW@e zS4iUG3_$+{l2%5#Xo>AD)$E}9)L?PVSRv(Vit#0#dm5`tAoDdTI$ziBp;-RC^v z!k~baU#Cssw6)mAhrz1;Z3#JrYkz4@vh(mBZ7>C$Vzw~#j4S`@IIx`j)c!-(zY^i` z!SEf%#Kwi22aV2s)8sWTaa<#2V}fd`_QoTGi(8=tY_ACppl^bh8}K1^m{teE7dPDP z=CM(4If3{HxMv_SRm@zpf=$q4sgj&2OS-f%^rubJ7ixtbN2fCO^Cd)Y;A0~at6c$u z2J-04gf)fUECNQI=S^Y%;HZ#**Z@~{F0NHHaYq^fWDG`1&qrsl>PG()VyO!(8pX^89kbilMPNsIR3(#vf$dgKgR-gGbhi}n$ zH>J=@|8-EmVg5GFaG365!+rJ||wF(63`8Sq`r z0)V*`9ULzuF9449PCuA6>z_i)3U?rF9xW`kwr6O+pDsz(9qf4efu$5h3;c%R;Ig!m z7OAubG;y;dV!-#O%>D)<#O#uqpm<^JfjS=VK>Cav*6Gy-Polb?%S)`hWU<$tt4$Sg znMu3SC}bPEV(@m1>=-=}MXbtDbn2Jb+#I{4+>$NPz3vr`E^bZWX&DL(mrlyPPn_pV z5l2MUDn=weElsm-U(sx9YV`nO^`I#UJz-_p*6r-Pv-|26)3T*Rdm#L0hm-ZJ zmEWZLc^-Q0Umrkfy;2U4&3(3kgsg!zSf*v|f*!sXhGGm5j!;SW36<`Jo?4N}F5_P> zpIhu!B#+B>0T8ofPXL5Z48z@#oFRqnpe0QJZ%q}u`AW^?x=Y6kb>iUV# zaIeBwGe^rYZ~ifBw-?CUGa1`C*{dOozDB1&^XF#zuy-e7bW=oYDM4E68emm}=5Bqx zyL|xB(k73&xh6H-k7sg183l@!rzj(8UPom>+otPW-XXo{&wXp2r@q`;9j=}|c#H+e zmMb&8jKw0NSYF1M!X>A!rKR5-Cq1)N&WhoE6BWtcGd>jNy_aeuzke@tbpKguT!*VK zuZVllq^$J>RZ#UvtRXz3G}|Hg$Emk-OQ69{ZA`;`!bM#W^7n@N0sYJBL#4*tjpkSZ ztX&#NWr0P7s<)i6u{1;WugbKV`1i*~E0$o<1~hbt*9KrquD%aZy?HXyj4-SK5tORPjLBo0zDE!i;2Fj~aC!9zp;bfC?Xd zW0giB98n?Ufe)uuI&R%-_m*8xt%h50FFYOoUQ!Rg?z8Yp=5SM7idlO7PSGZ

q)t zZ98?m7I$5NB$1MTu_RmyysMK6fvNB%!0e z4arpY?6OvfAR{6jrEwr}>3WSn6?g>`uTHuNRARP2KI8e0Vn4$uvthpzd>S&sbNL-% zfP?CtSSr~!mo_HEBVECTvxg7&ce)B2+>k@A=LhCdnvrA*EtAWycGg(C_DesXUq<@& z@5RVCPq?$uC(U7tE!w+0xLty0bO0Z$2&%)`nRfd}@1E6otx!Se+sf&|u*mYB3w(!@ zv0TKo@}U_3vvcvpk%;s`n%!<8*z6gjZr%LbU@wQ(m&9+APTge{NrgnP&N8^oZmjto zb!V`Kgx-x-CsyDNt}9EOA~1a_5D-SxP^)K`LeAfO*`5AAe>t$%4hhTiGvM^!jp>JW zN0wP%{iP(ngFTGHul!Ghf%?H=5^@%#U$9uLz&$g%a)+E zlyQTf0l6no9Q)(@FBWg*UpF;7D3eyiEQWgqyv|>Q{X1FH1cXL?ji*W_V_v!)K@;YljDQ03b>a27+WUTE`j6AkRgKT6zw!jmM6F|RKyralV(1-=wO=ei2p(p9m zb0weJ)Xt@JGXVbkC_p4NBVy)j{1P|dPa-ZTapixT2vjJeWgE?kP#OFZ3>j2?A*>Nm{uFFCICotov6v(dl2{X*M6XT&GixlQGcP8}h{40;5koV|Bz2 znA}FY`P405IlMb;uJXAl3V!g1J+O%aW=_YfXg^e4hPR+kF=+~04+ND_x={GOj!#qb z_}K)}ddn$ai$M==(Z59aVcCyRu|lBybn(Y6AO9TF^^6BqodDsjn#X_WDiRM_iGMq< z$A!Zc`}O7~kU!)i18$btEa$M?NlD_~`}TP@VJQ8;vfy6Ytd5^JK8{COhgYa;yer0#{-aa!4jtE9(Ug4rDXgW`Ef#Hi;YY>o#7N^Ijru#Ls&;dwM_>3IaD z7ZIWa9sQ;rD4K&S2$gL6^HbBYauE?bLgR?SaHJX60y}Dqq_?NWg#dC701%x}u86U6 z(jVgnQEBrMX9!PU`QHqa2vi!G$VH~Qy#BpNq6wl_CS{>^8X$@++%k%wtWw|~udzQ6 zEBrGOTDNB2noG!k>8;(M)qPR&cUksS5YF-}m$qrN$?R4-JDIn+<)pyZN1yf85I`vAK6= zI=bk$BBkw9^X9h^o40wu?FwnZ)=83WX%?Km0yFmnes~O4f9M(>ViWhc_RXWf!$JD1 zjub=Ci(ZLB#mr&RwoY@&IJz9ybAsu!kJVVD3>B!f(%X%`W}mLwR9;%D02(top6F1p zSHm#w>n8kat@CHf{u6yZ`zMt=tCv51Pd2tYE8p2-CmAJ+%P6k9&ebuNxOYB!ubvoU zg|DcSKhtWKtJpWy5gZkOStv_(TFEY;k_AXN`etr_#z}lF`TEI_*1{fLoeiUo zuH%ZRwJNL0=%0MS45#XmTPyAu-~1&Fe*2Gb%{a%fEB~EwvoM7_6V_sghuUQ2q$D6+ z9}ZZBTc2_?mrWE`j=%9-r&fR;ve{n6A_8v;sSFSr^2*zCF`>2h=wUukg#SzUXZGv@ zqd48WJ_!gAQ~0tc+c|)SEwBv7*weTMY5B+|XGhje(qjWd8XDSh&&1c(+KibgKFx!X zshbiC!;;wHDreXb1!PE;-!A;;qp;DCk%@6RPjlDa*Q!4JYbHwPj@9Seza#-bNRyQ> zuxF571vwp>!^(XYFT40Y=2Ll6dwN+(rK6eoulgZ#9nEghO{E2O;`FXmH}BRTTom*y zBXWFM2LA#$@y>tuJ~kK6Ivkq!vi*4}s zFFEg~%%Ujva-!+l?bd9*3L^BPZkrI4&Tlv0mOX3hezJEg4t@^J75m$vrVV)K(jtdHYNBwh_H+OS!#tD|ZnmA%Wx6B^t`e&3?^z$D4^h#A!gd!m=- zX&3Rlcs zDN@LzUO~sCAsB^`$ln$W+rM7l&Mdzhtc7w_Q)xN3aN5YQ<14g?3CSrklzzq{cjhgmcN(5R{XiuZ<*;y zl3kP&du?l8J-;yiZ1%jS)<&vVyS*h8*{2&K{&ji7z|(-W+M({~GqY$EgSfr%F`CiS z=~g2q7Q*}IJ}0rN+M|xR+EWynC5(fJ@4abGPQHmsjxWFE!^H}CiNiqFYHL&a`e)Pmq*fBbzYwb##GSZN6!Ej8!6qY3pmOnlCCLA$o%|Obe-s%2 literal 0 HcmV?d00001 diff --git a/libraries/push/impl/src/nightly/res/raw/message.mp3 b/libraries/push/impl/src/nightly/res/raw/message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..abc056786c8504a9441ed74e955d9dcfa6bac927 GIT binary patch literal 8685 zcmd^^cQhQ)!}rJTYOAwYHLC^@RwsnjqJ&s1QDgNkM2K$n-b+@CUZa<25nYr>wCITz zL?noiLS!F)&-0%1{_+0({PTYPn7Q}dnYrKj+%q$G&ec+rfB;wUUmcFB_~!Y@g_BIk;-OB%1}zU1{4Gnah0V(*fZD+rfdCArLOdzD%Cs`7u}1^-Wp zt4}9)i<)qrX$JtH9`;EpYXpESUQDaR1L6hpd-@#2{jS~ygil9(l52f-9a!- zbw{O2=8wY~aOvNHSlKQ?)aBin+Y9!0^x{oeiENnv{zVH@y=Rz$uD~Pw$dA3~p}N#wU730r5L928#8?h%T$&`##T_Pq>HYBgvIhRWvl5SvhmZ~3C96aBAEHG~=QogWP;WS6fZhEN3ul5tqwW` z&;kJYgF*KfEABV|C^fCGi&whx4+X$g3imzSivT&EJj)RnkZjj!)me$7-6Xxy&WQ!( zxClZtacYmXJ*nV>n(ds~r=3Y$fx zu{%(pr}l(nWk&zddSo^ize-a`arT*#4uqxgGr3B-sJ(uBoBmwno91i*KyT+vQNMB- z>`HNTb#`V$!uOa5GH zdD1#&P)J}TRWdB$I{Z5%qbgR)b%w4YiqUx6mzgKjN*Zmy*yL^S!%q1X#E242e*BCY z{YF}xLivV@sh2_3fO8vW{E4@QZAGB|uX&}^g&~uJha3lZFT$GcF9N#li8xutCbJ-D zF7)%G%Pv>6wNNjn)%z~P))=voZ7tT@MKPE*&E?%}Q8iIocq@$^E`T<4;5AKts6TtB zF1m}s<6|#RWOb{CrLXX1YYViJFjUpJsj<9iy7Er}fD0AY4y>^d$^J9jH*kPx^2czgUE#>2QCVD(FcXQxz&~s%6EnL z`a96L^q@0X>XY6JAB$^6`0MvD^C4mdzbUFBN0F;pQ%yN7y=<5$_yC1~aea%1PMZ&@ zl`yeS%gvTt!hWbwdG6ZfW4Jb)UH2EY*NR=qSRp7wG z)BBw+Xfdu_AvR)4ngUVP`i*K-SCr5Ra~bvL$4J~wu>uUKGCx2({&k2r_f-q+skD}C zZ~baY*o}}mt=kX$m>z7{th8Z+Z% zx8~*-r`+rI39AR^_o#^AS=@S4B47pGAv8s`SekWE%vA_jpawz_F<~4V{*nR?= zAQvkbf0Sb)6Uo5 zBh_CAuvS!Z@$oez!Qtq#&TyM|Ct0YLfHU0ZZ~8X9${;^-#7Wl|?}LYVFyh!xsFF&< z+NnLQgHJeB?$>D38jS+J7Pa3ym1b)`x7FX@7I{^t!6vmNI`4Wy3m6z|B=h3q9z~|D z*>L>Adg?@ix-|GiKnv=DhU4dnFuH85HH`%6wf2)xLJa_rfk+UWUj%?b5>IPMeQ#UX zlphe`H!2Soy7Es=2L7utxwRaR7O|G6;aFEs`F>3z#X$?z73uPr8PAmTCksInM${)F zAe%s)xSaX=diXkY^(;#x5`qkNNa!eDId#;aJC?MmwuMh0TUUbWgde{m}n&D;nR zj~1=(6DL_)Ek9i&}|YkWVA>UiW(Kj2&mk^K87?}99I_E z0$aC7l8I+<#D)yVq%AWj%f<&9wYQ>z! za!M-nYar~4YT#2u!^Z$ye64Hraaxq??2B@0{br*VVLQ5R%d9!tcXfllUGzM~zp#D# zs8AO|%XqYCbCaLHgJI_S9#Za?LkFbzAlkC~m8sWrtMk8*`C`#eYi3{LWpp`vxxNAb z9SBFXfkS}sWMOpSO{(}~N#z_IH5?w^|KI*0B%U-S56bq078 z6IrEF$H>+-UuvC9A{i%jcF*pWsyd@)9UtbR+sHiy^SaAyx$&axJ|rRPh?{#ST#rc{yn=jTB1Je>WMJP}tWuVZxJISM`K?{jyG0ytPVBF4p9M(2 z<1)=vYI|^g0{{FV_j1k!E`~Z!Ei>s1ZgqU9^8AiN^wS0n6`==8{^K72m+9#4*D)f+ ztf9T^*BO(shw=xt#<=15y^~`0eQ|$I3ApkD?^MO5QOohdS#iaKp{*0mww5nc(Wl-*Vjfb{=~%sK#>0mX&mNFB&PTNu zEp!zNN&tW+78typVMba1QD!$!mNgWo=P?{9{{z8xbeOWpYjyZzdrlC zP!C4@q#tEXo{E&Z>0-QCTX507XszMw(;XXSO1TKm-5-oBGFyvCF=x5&s8y~u%k<+N zU)HBrO?P_sv=6%l#<3$dMS8a4ExyDx_v8!a##XY&rvTk5I_Xq|InkpVpNyXq;|&b_ zOcOT3t+hW}Qc}l{aAY*S4U7Yx<*qBe?~5D}yUVCG?s7Rn&qBT2R-=cLqsfT;^O;ma zvF9Hpd6DErNYo6db7_5KtZhY*{Kn>QuH-DR=BS-oH9lcg@h9h@;m4f$knw7cexf{w zI90q`DLwvS=*tZz^T9^AuJ;u`u$#%Im6$nosY3Q*iejgM2=j z!e@6*uOB{G?;E-Iq!u8q3tPo8CZP}!>`5}24J%7!mgBqE^GNh!Dbp!Lf%g)ps+6P@8b2dJb=IlWVoz|nDV*Jotbr4UoQ6*H#V6wS_C)k3i5|3v) zSYcV5);;>Dm3utC_yIGMPF~`%DlSbnCE|T>y-XNNqoukNc|cKT-6r>SsJr0JyjW@e zS4iUG3_$+{l2%5#Xo>AD)$E}9)L?PVSRv(Vit#0#dm5`tAoDdTI$ziBp;-RC^v z!k~baU#Cssw6)mAhrz1;Z3#JrYkz4@vh(mBZ7>C$Vzw~#j4S`@IIx`j)c!-(zY^i` z!SEf%#Kwi22aV2s)8sWTaa<#2V}fd`_QoTGi(8=tY_ACppl^bh8}K1^m{teE7dPDP z=CM(4If3{HxMv_SRm@zpf=$q4sgj&2OS-f%^rubJ7ixtbN2fCO^Cd)Y;A0~at6c$u z2J-04gf)fUECNQI=S^Y%;HZ#**Z@~{F0NHHaYq^fWDG`1&qrsl>PG()VyO!(8pX^89kbilMPNsIR3(#vf$dgKgR-gGbhi}n$ zH>J=@|8-EmVg5GFaG365!+rJ||wF(63`8Sq`r z0)V*`9ULzuF9449PCuA6>z_i)3U?rF9xW`kwr6O+pDsz(9qf4efu$5h3;c%R;Ig!m z7OAubG;y;dV!-#O%>D)<#O#uqpm<^JfjS=VK>Cav*6Gy-Polb?%S)`hWU<$tt4$Sg znMu3SC}bPEV(@m1>=-=}MXbtDbn2Jb+#I{4+>$NPz3vr`E^bZWX&DL(mrlyPPn_pV z5l2MUDn=weElsm-U(sx9YV`nO^`I#UJz-_p*6r-Pv-|26)3T*Rdm#L0hm-ZJ zmEWZLc^-Q0Umrkfy;2U4&3(3kgsg!zSf*v|f*!sXhGGm5j!;SW36<`Jo?4N}F5_P> zpIhu!B#+B>0T8ofPXL5Z48z@#oFRqnpe0QJZ%q}u`AW^?x=Y6kb>iUV# zaIeBwGe^rYZ~ifBw-?CUGa1`C*{dOozDB1&^XF#zuy-e7bW=oYDM4E68emm}=5Bqx zyL|xB(k73&xh6H-k7sg183l@!rzj(8UPom>+otPW-XXo{&wXp2r@q`;9j=}|c#H+e zmMb&8jKw0NSYF1M!X>A!rKR5-Cq1)N&WhoE6BWtcGd>jNy_aeuzke@tbpKguT!*VK zuZVllq^$J>RZ#UvtRXz3G}|Hg$Emk-OQ69{ZA`;`!bM#W^7n@N0sYJBL#4*tjpkSZ ztX&#NWr0P7s<)i6u{1;WugbKV`1i*~E0$o<1~hbt*9KrquD%aZy?HXyj4-SK5tORPjLBo0zDE!i;2Fj~aC!9zp;bfC?Xd zW0giB98n?Ufe)uuI&R%-_m*8xt%h50FFYOoUQ!Rg?z8Yp=5SM7idlO7PSGZ

q)t zZ98?m7I$5NB$1MTu_RmyysMK6fvNB%!0e z4arpY?6OvfAR{6jrEwr}>3WSn6?g>`uTHuNRARP2KI8e0Vn4$uvthpzd>S&sbNL-% zfP?CtSSr~!mo_HEBVECTvxg7&ce)B2+>k@A=LhCdnvrA*EtAWycGg(C_DesXUq<@& z@5RVCPq?$uC(U7tE!w+0xLty0bO0Z$2&%)`nRfd}@1E6otx!Se+sf&|u*mYB3w(!@ zv0TKo@}U_3vvcvpk%;s`n%!<8*z6gjZr%LbU@wQ(m&9+APTge{NrgnP&N8^oZmjto zb!V`Kgx-x-CsyDNt}9EOA~1a_5D-SxP^)K`LeAfO*`5AAe>t$%4hhTiGvM^!jp>JW zN0wP%{iP(ngFTGHul!Ghf%?H=5^@%#U$9uLz&$g%a)+E zlyQTf0l6no9Q)(@FBWg*UpF;7D3eyiEQWgqyv|>Q{X1FH1cXL?ji*W_V_v!)K@;YljDQ03b>a27+WUTE`j6AkRgKT6zw!jmM6F|RKyralV(1-=wO=ei2p(p9m zb0weJ)Xt@JGXVbkC_p4NBVy)j{1P|dPa-ZTapixT2vjJeWgE?kP#OFZ3>j2?A*>Nm{uFFCICotov6v(dl2{X*M6XT&GixlQGcP8}h{40;5koV|Bz2 znA}FY`P405IlMb;uJXAl3V!g1J+O%aW=_YfXg^e4hPR+kF=+~04+ND_x={GOj!#qb z_}K)}ddn$ai$M==(Z59aVcCyRu|lBybn(Y6AO9TF^^6BqodDsjn#X_WDiRM_iGMq< z$A!Zc`}O7~kU!)i18$btEa$M?NlD_~`}TP@VJQ8;vfy6Ytd5^JK8{COhgYa;yer0#{-aa!4jtE9(Ug4rDXgW`Ef#Hi;YY>o#7N^Ijru#Ls&;dwM_>3IaD z7ZIWa9sQ;rD4K&S2$gL6^HbBYauE?bLgR?SaHJX60y}Dqq_?NWg#dC701%x}u86U6 z(jVgnQEBrMX9!PU`QHqa2vi!G$VH~Qy#BpNq6wl_CS{>^8X$@++%k%wtWw|~udzQ6 zEBrGOTDNB2noG!k>8;(M)qPR&cUksS5YF-}m$qrN$?R4-JDIn+<)pyZN1yf85I`vAK6= zI=bk$BBkw9^X9h^o40wu?FwnZ)=83WX%?Km0yFmnes~O4f9M(>ViWhc_RXWf!$JD1 zjub=Ci(ZLB#mr&RwoY@&IJz9ybAsu!kJVVD3>B!f(%X%`W}mLwR9;%D02(top6F1p zSHm#w>n8kat@CHf{u6yZ`zMt=tCv51Pd2tYE8p2-CmAJ+%P6k9&ebuNxOYB!ubvoU zg|DcSKhtWKtJpWy5gZkOStv_(TFEY;k_AXN`etr_#z}lF`TEI_*1{fLoeiUo zuH%ZRwJNL0=%0MS45#XmTPyAu-~1&Fe*2Gb%{a%fEB~EwvoM7_6V_sghuUQ2q$D6+ z9}ZZBTc2_?mrWE`j=%9-r&fR;ve{n6A_8v;sSFSr^2*zCF`>2h=wUukg#SzUXZGv@ zqd48WJ_!gAQ~0tc+c|)SEwBv7*weTMY5B+|XGhje(qjWd8XDSh&&1c(+KibgKFx!X zshbiC!;;wHDreXb1!PE;-!A;;qp;DCk%@6RPjlDa*Q!4JYbHwPj@9Seza#-bNRyQ> zuxF571vwp>!^(XYFT40Y=2Ll6dwN+(rK6eoulgZ#9nEghO{E2O;`FXmH}BRTTom*y zBXWFM2LA#$@y>tuJ~kK6Ivkq!vi*4}s zFFEg~%%Ujva-!+l?bd9*3L^BPZkrI4&Tlv0mOX3hezJEg4t@^J75m$vrVV)K(jtdHYNBwh_H+OS!#tD|ZnmA%Wx6B^t`e&3?^z$D4^h#A!gd!m=- zX&3Rlcs zDN@LzUO~sCAsB^`$ln$W+rM7l&Mdzhtc7w_Q)xN3aN5YQ<14g?3CSrklzzq{cjhgmcN(5R{XiuZ<*;y zl3kP&du?l8J-;yiZ1%jS)<&vVyS*h8*{2&K{&ji7z|(-W+M({~GqY$EgSfr%F`CiS z=~g2q7Q*}IJ}0rN+M|xR+EWynC5(fJ@4abGPQHmsjxWFE!^H}CiNiqFYHL&a`e)Pmq*fBbzYwb##GSZN6!Ej8!6qY3pmOnlCCLA$o%|Obe-s%2 literal 0 HcmV?d00001 diff --git a/libraries/push/impl/src/main/res/raw/message.mp3 b/libraries/push/impl/src/release/res/raw/message.mp3 similarity index 100% rename from libraries/push/impl/src/main/res/raw/message.mp3 rename to libraries/push/impl/src/release/res/raw/message.mp3 From 71ef154eea693297e51da4708c36f8c22bd54a67 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 3 Nov 2025 20:27:37 +0100 Subject: [PATCH 317/898] quality: fix import in test --- .../android/features/space/impl/DefaultSpaceEntryPointTest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt index 696e80eeea..319d1eeeff 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/DefaultSpaceEntryPointTest.kt @@ -16,7 +16,6 @@ import io.element.android.features.space.impl.di.FakeSpaceFlowGraph import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.room.FakeJoinedRoom -import io.element.android.libraries.matrix.test.room.join.FakeJoinRoom import io.element.android.libraries.matrix.test.spaces.FakeSpaceRoomList import io.element.android.libraries.matrix.test.spaces.FakeSpaceService import io.element.android.tests.testutils.lambda.lambdaError From 08227d44036bc34ed565b4af18a9120fc1fdbb74 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 3 Nov 2025 21:40:37 +0100 Subject: [PATCH 318/898] change(roles and permissions): update change permission design --- .../impl/RolesAndPermissionsFlowNode.kt | 20 +--- .../permissions/ChangeRoomPermissionsEvent.kt | 4 +- .../permissions/ChangeRoomPermissionsNode.kt | 20 +--- .../ChangeRoomPermissionsPresenter.kt | 54 ++++++----- .../permissions/ChangeRoomPermissionsState.kt | 58 +++++++++++- .../ChangeRoomPermissionsStateProvider.kt | 24 ++--- .../permissions/ChangeRoomPermissionsView.kt | 91 ++++++------------- .../impl/root/RolesAndPermissionsNode.kt | 9 +- .../impl/root/RolesAndPermissionsView.kt | 19 +--- .../preferences/PreferenceDropdown.kt | 13 +++ 10 files changed, 145 insertions(+), 167 deletions(-) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt index 36e4d233ca..81ef3b3b1e 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt @@ -23,7 +23,6 @@ import io.element.android.annotations.ContributesNode import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.features.rolesandpermissions.impl.permissions.ChangeRoomPermissionsNode -import io.element.android.features.rolesandpermissions.impl.permissions.ChangeRoomPermissionsSection import io.element.android.features.rolesandpermissions.impl.root.RolesAndPermissionsNode import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode @@ -59,7 +58,7 @@ class RolesAndPermissionsFlowNode( data object ModeratorList : NavTarget @Parcelize - data class ChangeRoomPermissions(val section: ChangeRoomPermissionsSection) : NavTarget + data object ChangeRoomPermissions: NavTarget } override fun onBuilt() { @@ -84,17 +83,10 @@ class RolesAndPermissionsFlowNode( backstack.push(NavTarget.ModeratorList) } - override fun openEditRoomDetailsPermissions() { - backstack.push(NavTarget.ChangeRoomPermissions(ChangeRoomPermissionsSection.RoomDetails)) + override fun openEditPermissions() { + backstack.push(NavTarget.ChangeRoomPermissions) } - override fun openMessagesAndContentPermissions() { - backstack.push(NavTarget.ChangeRoomPermissions(ChangeRoomPermissionsSection.MessagesAndContent)) - } - - override fun openModerationPermissions() { - backstack.push(NavTarget.ChangeRoomPermissions(ChangeRoomPermissionsSection.MembershipModeration)) - } } createNode( buildContext = buildContext, @@ -118,11 +110,7 @@ class RolesAndPermissionsFlowNode( ) } is NavTarget.ChangeRoomPermissions -> { - val inputs = ChangeRoomPermissionsNode.Inputs(navTarget.section) - createNode( - buildContext = buildContext, - plugins = listOf(inputs), - ) + createNode(buildContext = buildContext) } } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt index f17960c790..ee2984205d 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsEvent.kt @@ -7,10 +7,8 @@ package io.element.android.features.rolesandpermissions.impl.permissions -import io.element.android.libraries.matrix.api.room.RoomMember - interface ChangeRoomPermissionsEvent { - data class ChangeMinimumRoleForAction(val action: RoomPermissionType, val role: RoomMember.Role) : ChangeRoomPermissionsEvent + data class ChangeMinimumRoleForAction(val action: RoomPermissionType, val role: SelectableRole) : ChangeRoomPermissionsEvent data object Save : ChangeRoomPermissionsEvent data object Exit : ChangeRoomPermissionsEvent data object ResetPendingActions : ChangeRoomPermissionsEvent diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt index c0c7d016dd..b8261abd89 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt @@ -7,7 +7,6 @@ package io.element.android.features.rolesandpermissions.impl.permissions -import android.os.Parcelable import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext @@ -16,25 +15,15 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.libraries.architecture.NodeInputs -import io.element.android.libraries.architecture.inputs import io.element.android.libraries.di.RoomScope -import kotlinx.parcelize.Parcelize @ContributesNode(RoomScope::class) @AssistedInject class ChangeRoomPermissionsNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, - presenterFactory: ChangeRoomPermissionsPresenter.Factory, + private val presenter: ChangeRoomPermissionsPresenter, ) : Node(buildContext, plugins = plugins) { - @Parcelize - data class Inputs( - val section: ChangeRoomPermissionsSection, - ) : NodeInputs, Parcelable - - private val inputs: Inputs = inputs() - private val presenter = presenterFactory.create(inputs.section) @Composable override fun View(modifier: Modifier) { @@ -46,10 +35,3 @@ class ChangeRoomPermissionsNode( ) } } - -@Parcelize -enum class ChangeRoomPermissionsSection : Parcelable { - RoomDetails, - MessagesAndContent, - MembershipModeration, -} diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt index ce59aa1907..e073a48171 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt @@ -15,50 +15,50 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue -import dev.zacsweers.metro.Assisted -import dev.zacsweers.metro.AssistedFactory -import dev.zacsweers.metro.AssistedInject +import dev.zacsweers.metro.Inject import io.element.android.features.rolesandpermissions.impl.analytics.trackPermissionChangeAnalytics import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.services.analytics.api.AnalyticsService -import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.persistentMapOf import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -@AssistedInject +@Inject class ChangeRoomPermissionsPresenter( - @Assisted private val section: ChangeRoomPermissionsSection, private val room: JoinedRoom, private val analyticsService: AnalyticsService, ) : Presenter { companion object { - internal fun itemsForSection(section: ChangeRoomPermissionsSection) = when (section) { - ChangeRoomPermissionsSection.RoomDetails -> persistentListOf( + private fun itemsForSection(section: RoomPermissionsSection) = when (section) { + RoomPermissionsSection.RoomDetails -> persistentListOf( RoomPermissionType.ROOM_NAME, RoomPermissionType.ROOM_AVATAR, RoomPermissionType.ROOM_TOPIC, ) - ChangeRoomPermissionsSection.MessagesAndContent -> persistentListOf( + RoomPermissionsSection.MessagesAndContent -> persistentListOf( RoomPermissionType.SEND_EVENTS, RoomPermissionType.REDACT_EVENTS, ) - ChangeRoomPermissionsSection.MembershipModeration -> persistentListOf( + RoomPermissionsSection.MembershipModeration -> persistentListOf( RoomPermissionType.INVITE, RoomPermissionType.KICK, RoomPermissionType.BAN, ) } - } - @AssistedFactory - interface Factory { - fun create(section: ChangeRoomPermissionsSection): ChangeRoomPermissionsPresenter + + internal fun buildItems(forSpace: Boolean) = persistentMapOf( + RoomPermissionsSection.RoomDetails to itemsForSection(RoomPermissionsSection.RoomDetails), + RoomPermissionsSection.MessagesAndContent to itemsForSection(RoomPermissionsSection.MessagesAndContent), + RoomPermissionsSection.MembershipModeration to itemsForSection(RoomPermissionsSection.MembershipModeration), + ) } - private val items: ImmutableList = itemsForSection(section) + private val items = buildItems(forSpace = room.info().isSpace) private var initialPermissions by mutableStateOf(null) private var currentPermissions by mutableStateOf(null) @@ -80,15 +80,20 @@ class ChangeRoomPermissionsPresenter( fun handleEvent(event: ChangeRoomPermissionsEvent) { when (event) { is ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction -> { + val powerLevel = when (event.role) { + SelectableRole.Admin -> RoomMember.Role.Admin.powerLevel + SelectableRole.Moderator -> RoomMember.Role.Moderator.powerLevel + SelectableRole.Everyone -> RoomMember.Role.User.powerLevel + } currentPermissions = when (event.action) { - RoomPermissionType.BAN -> currentPermissions?.copy(ban = event.role.powerLevel) - RoomPermissionType.INVITE -> currentPermissions?.copy(invite = event.role.powerLevel) - RoomPermissionType.KICK -> currentPermissions?.copy(kick = event.role.powerLevel) - RoomPermissionType.SEND_EVENTS -> currentPermissions?.copy(sendEvents = event.role.powerLevel) - RoomPermissionType.REDACT_EVENTS -> currentPermissions?.copy(redactEvents = event.role.powerLevel) - RoomPermissionType.ROOM_NAME -> currentPermissions?.copy(roomName = event.role.powerLevel) - RoomPermissionType.ROOM_AVATAR -> currentPermissions?.copy(roomAvatar = event.role.powerLevel) - RoomPermissionType.ROOM_TOPIC -> currentPermissions?.copy(roomTopic = event.role.powerLevel) + RoomPermissionType.BAN -> currentPermissions?.copy(ban = powerLevel) + RoomPermissionType.INVITE -> currentPermissions?.copy(invite = powerLevel) + RoomPermissionType.KICK -> currentPermissions?.copy(kick = powerLevel) + RoomPermissionType.SEND_EVENTS -> currentPermissions?.copy(sendEvents = powerLevel) + RoomPermissionType.REDACT_EVENTS -> currentPermissions?.copy(redactEvents = powerLevel) + RoomPermissionType.ROOM_NAME -> currentPermissions?.copy(roomName = powerLevel) + RoomPermissionType.ROOM_AVATAR -> currentPermissions?.copy(roomAvatar = powerLevel) + RoomPermissionType.ROOM_TOPIC -> currentPermissions?.copy(roomTopic = powerLevel) } } is ChangeRoomPermissionsEvent.Save -> coroutineScope.save() @@ -106,9 +111,8 @@ class ChangeRoomPermissionsPresenter( } } return ChangeRoomPermissionsState( - section = section, currentPermissions = currentPermissions, - items = items, + itemsBySection = items, hasChanges = hasChanges, saveAction = saveAction, confirmExitAction = confirmExitAction, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt index da106c888b..e91dd9fcb6 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt @@ -7,19 +7,71 @@ package io.element.android.features.rolesandpermissions.impl.permissions +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.ui.res.stringResource +import io.element.android.features.rolesandpermissions.impl.R import io.element.android.libraries.architecture.AsyncAction +import io.element.android.libraries.designsystem.components.preferences.DropdownOption +import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.ImmutableMap data class ChangeRoomPermissionsState( - val section: ChangeRoomPermissionsSection, val currentPermissions: RoomPowerLevelsValues?, - val items: ImmutableList, + val itemsBySection: ImmutableMap>, val hasChanges: Boolean, val saveAction: AsyncAction, val confirmExitAction: AsyncAction, val eventSink: (ChangeRoomPermissionsEvent) -> Unit, -) +){ + fun selectedRoleForType(type: RoomPermissionType): SelectableRole? { + if(currentPermissions == null) return null + val role = when (type) { + RoomPermissionType.BAN -> RoomMember.Role.forPowerLevel(currentPermissions.ban) + RoomPermissionType.INVITE -> RoomMember.Role.forPowerLevel(currentPermissions.invite) + RoomPermissionType.KICK -> RoomMember.Role.forPowerLevel(currentPermissions.kick) + RoomPermissionType.SEND_EVENTS -> RoomMember.Role.forPowerLevel(currentPermissions.sendEvents) + RoomPermissionType.REDACT_EVENTS -> RoomMember.Role.forPowerLevel(currentPermissions.redactEvents) + RoomPermissionType.ROOM_NAME -> RoomMember.Role.forPowerLevel(currentPermissions.roomName) + RoomPermissionType.ROOM_AVATAR -> RoomMember.Role.forPowerLevel(currentPermissions.roomAvatar) + RoomPermissionType.ROOM_TOPIC -> RoomMember.Role.forPowerLevel(currentPermissions.roomTopic) + } + return when(role){ + is RoomMember.Role.Owner, + RoomMember.Role.Admin -> SelectableRole.Admin + RoomMember.Role.Moderator -> SelectableRole.Moderator + RoomMember.Role.User -> SelectableRole.Everyone + } + } + +} + +enum class RoomPermissionsSection { + RoomDetails, + MessagesAndContent, + MembershipModeration, +} + +enum class SelectableRole: DropdownOption { + Admin { + @Composable + @ReadOnlyComposable + override fun getText(): String = stringResource(R.string.screen_room_member_list_role_administrator) + }, + Moderator { + @Composable + @ReadOnlyComposable + override fun getText(): String = stringResource(R.string.screen_room_member_list_role_moderator) + }, + Everyone { + @Composable + @ReadOnlyComposable + override fun getText(): String = stringResource(R.string.screen_room_change_permissions_everyone) + } +} + enum class RoomPermissionType { BAN, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt index 484caa6dbe..2196c4aa46 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsStateProvider.kt @@ -11,41 +11,33 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues -import kotlinx.collections.immutable.toImmutableList +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableMap class ChangeRoomPermissionsStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( - aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.RoomDetails), - aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.MessagesAndContent), - aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.MembershipModeration), - aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true), - aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, saveAction = AsyncAction.Loading), + aChangeRoomPermissionsState(), + aChangeRoomPermissionsState(hasChanges = true), + aChangeRoomPermissionsState(hasChanges = true, saveAction = AsyncAction.Loading), aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, saveAction = AsyncAction.Failure(IllegalStateException("Failed to save changes")) ), - aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, - hasChanges = true, - confirmExitAction = AsyncAction.ConfirmingNoParams, - ), + aChangeRoomPermissionsState(hasChanges = true, confirmExitAction = AsyncAction.ConfirmingNoParams), ) } internal fun aChangeRoomPermissionsState( - section: ChangeRoomPermissionsSection, currentPermissions: RoomPowerLevelsValues = previewPermissions(), - items: List = ChangeRoomPermissionsPresenter.itemsForSection(section), + itemsBySection: Map> = ChangeRoomPermissionsPresenter.buildItems(false), hasChanges: Boolean = false, saveAction: AsyncAction = AsyncAction.Uninitialized, confirmExitAction: AsyncAction = AsyncAction.Uninitialized, eventSink: (ChangeRoomPermissionsEvent) -> Unit = {}, ) = ChangeRoomPermissionsState( - section = section, currentPermissions = currentPermissions, - items = items.toImmutableList(), + itemsBySection = itemsBySection.toImmutableMap(), hasChanges = hasChanges, saveAction = saveAction, confirmExitAction = confirmExitAction, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index 6275dbf73e..85a75f9f35 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -23,6 +23,7 @@ import io.element.android.libraries.designsystem.components.async.AsyncActionVie import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog import io.element.android.libraries.designsystem.components.list.ListItemContent +import io.element.android.libraries.designsystem.components.preferences.PreferenceDropdown import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.IconSource @@ -36,6 +37,7 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.ui.strings.CommonStrings +import kotlinx.collections.immutable.toImmutableList @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -50,13 +52,8 @@ fun ChangeRoomPermissionsView( Scaffold( modifier = modifier, topBar = { - val title = when (state.section) { - ChangeRoomPermissionsSection.RoomDetails -> stringResource(R.string.screen_room_change_permissions_room_details) - ChangeRoomPermissionsSection.MessagesAndContent -> stringResource(R.string.screen_room_change_permissions_messages_and_content) - ChangeRoomPermissionsSection.MembershipModeration -> stringResource(R.string.screen_room_change_permissions_member_moderation) - } TopAppBar( - titleStr = title, + titleStr = stringResource(R.string.screen_room_roles_and_permissions_permissions_header), navigationIcon = { BackButton(onClick = { state.eventSink(ChangeRoomPermissionsEvent.Exit) }) }, @@ -75,29 +72,25 @@ fun ChangeRoomPermissionsView( .padding(padding) .fillMaxSize() ) { - for ((index, permissionItem) in state.items.withIndex()) { + state.itemsBySection.onEachIndexed { index, (section, items) -> item { - ListSectionHeader(titleForSection(item = permissionItem), hasDivider = index > 0) - SelectRoleItem( - permissionsItem = permissionItem, - role = RoomMember.Role.Admin, - currentPermissions = state.currentPermissions - ) { item, role -> - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(item, role)) - } - SelectRoleItem( - permissionsItem = permissionItem, - role = RoomMember.Role.Moderator, - currentPermissions = state.currentPermissions - ) { item, role -> - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(item, role)) - } - SelectRoleItem( - permissionsItem = permissionItem, - role = RoomMember.Role.User, - currentPermissions = state.currentPermissions - ) { item, role -> - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(item, role)) + ListSectionHeader(titleForSection(section), hasDivider = index>0) + } + for (permissionType in items) { + item { + PreferenceDropdown( + title = titleForType(permissionType), + selectedOption = state.selectedRoleForType(permissionType), + options = SelectableRole.entries.toImmutableList(), + onSelectOption = { role -> + state.eventSink( + ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction( + action = permissionType, + role = role + ) + ) + } + ) } } } @@ -126,47 +119,15 @@ fun ChangeRoomPermissionsView( onErrorDismiss = {}, ) } - @Composable -private fun SelectRoleItem( - permissionsItem: RoomPermissionType, - role: RoomMember.Role, - currentPermissions: RoomPowerLevelsValues?, - onClick: (RoomPermissionType, RoomMember.Role) -> Unit -) { - val title = when (role) { - RoomMember.Role.Admin -> stringResource(R.string.screen_room_change_permissions_administrators) - RoomMember.Role.Moderator -> stringResource(R.string.screen_room_change_permissions_moderators) - RoomMember.Role.User -> stringResource(R.string.screen_room_change_permissions_everyone) - else -> error("Unsupported role selected: $role") - } - ListItem( - headlineContent = { Text(text = title) }, - trailingContent = if (currentPermissions?.isSelected(permissionsItem, role).orFalse()) { - ListItemContent.Icon(IconSource.Vector(CompoundIcons.Check())) - } else { - null - }, - style = ListItemStyle.Primary, - onClick = { onClick(permissionsItem, role) }, - ) -} - -private fun RoomPowerLevelsValues.isSelected(item: RoomPermissionType, role: RoomMember.Role): Boolean { - return when (item) { - RoomPermissionType.BAN -> RoomMember.Role.forPowerLevel(ban) == role - RoomPermissionType.INVITE -> RoomMember.Role.forPowerLevel(invite) == role - RoomPermissionType.KICK -> RoomMember.Role.forPowerLevel(kick) == role - RoomPermissionType.SEND_EVENTS -> RoomMember.Role.forPowerLevel(sendEvents) == role - RoomPermissionType.REDACT_EVENTS -> RoomMember.Role.forPowerLevel(redactEvents) == role - RoomPermissionType.ROOM_NAME -> RoomMember.Role.forPowerLevel(roomName) == role - RoomPermissionType.ROOM_AVATAR -> RoomMember.Role.forPowerLevel(roomAvatar) == role - RoomPermissionType.ROOM_TOPIC -> RoomMember.Role.forPowerLevel(roomTopic) == role - } +private fun titleForSection(section: RoomPermissionsSection): String = when (section) { + RoomPermissionsSection.RoomDetails -> stringResource(R.string.screen_room_change_permissions_room_details) + RoomPermissionsSection.MessagesAndContent -> stringResource(R.string.screen_room_change_permissions_messages_and_content) + RoomPermissionsSection.MembershipModeration -> stringResource(R.string.screen_room_change_permissions_member_moderation) } @Composable -private fun titleForSection(item: RoomPermissionType): String = when (item) { +private fun titleForType(type: RoomPermissionType): String = when (type) { RoomPermissionType.INVITE -> stringResource(R.string.screen_room_change_permissions_invite_people) RoomPermissionType.KICK -> stringResource(R.string.screen_room_change_permissions_remove_people) RoomPermissionType.BAN -> stringResource(R.string.screen_room_change_permissions_ban_people) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt index f5c7b2e7c2..da06fd1eae 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsNode.kt @@ -39,9 +39,8 @@ class RolesAndPermissionsNode( interface Callback : Plugin, RolesAndPermissionsNavigator { override fun openAdminList() override fun openModeratorList() - override fun openEditRoomDetailsPermissions() - override fun openMessagesAndContentPermissions() - override fun openModerationPermissions() + override fun openEditPermissions() + override fun onBackClick() {} } @@ -85,7 +84,5 @@ interface RolesAndPermissionsNavigator { fun onBackClick() {} fun openAdminList() {} fun openModeratorList() {} - fun openEditRoomDetailsPermissions() {} - fun openMessagesAndContentPermissions() {} - fun openModerationPermissions() {} + fun openEditPermissions() {} } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt index 3ee3a409de..87b03fef92 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt @@ -78,25 +78,16 @@ fun RolesAndPermissionsView( leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Edit())) ) } - ListSectionHeader(title = stringResource(R.string.screen_room_roles_and_permissions_permissions_header), hasDivider = true) + HorizontalDivider() ListItem( - headlineContent = { Text(stringResource(R.string.screen_room_roles_and_permissions_room_details)) }, - leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Info())), - onClick = { rolesAndPermissionsNavigator.openEditRoomDetailsPermissions() }, - ) - ListItem( - headlineContent = { Text(stringResource(R.string.screen_room_roles_and_permissions_messages_and_content)) }, - leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Chat())), - onClick = { rolesAndPermissionsNavigator.openMessagesAndContentPermissions() }, - ) - ListItem( - headlineContent = { Text(stringResource(R.string.screen_room_roles_and_permissions_member_moderation)) }, - leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.User())), - onClick = { rolesAndPermissionsNavigator.openModerationPermissions() }, + headlineContent = { Text(stringResource(R.string.screen_room_roles_and_permissions_permissions_header)) }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Settings())), + onClick = { rolesAndPermissionsNavigator.openEditPermissions() }, ) HorizontalDivider() ListItem( headlineContent = { Text(stringResource(R.string.screen_room_roles_and_permissions_reset)) }, + leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Delete())), onClick = { state.eventSink(RolesAndPermissionsEvents.ResetPermissions) }, style = ListItemStyle.Destructive, ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt index 7be47338ca..ebac860c7e 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt @@ -10,9 +10,11 @@ package io.element.android.libraries.designsystem.components.preferences import androidx.annotation.DrawableRes +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.size import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.ExposedDropdownMenuDefaults @@ -26,6 +28,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.components.list.ListItemContent @@ -33,6 +36,7 @@ import io.element.android.libraries.designsystem.components.preferences.componen import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem +import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.ListItem import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.toEnabledColor @@ -144,6 +148,15 @@ private fun DropdownTrailingContent( style = ElementTheme.typography.fontBodyMdRegular ) }, + trailingIcon = { + if(option == selectedOption){ + Icon( + imageVector = CompoundIcons.Check(), + contentDescription = null, + tint = ElementTheme.colors.iconSuccessPrimary, + ) + } + }, onClick = { onSelectOption(option) onExpandedChange(false) From 7a7a6256763c7d04d14b7ae53d2344bac120b1e9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 22:18:50 +0100 Subject: [PATCH 319/898] Need to provide matchingFallbacks --- libraries/push/impl/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/push/impl/build.gradle.kts b/libraries/push/impl/build.gradle.kts index b0e32481a4..091c74992f 100644 --- a/libraries/push/impl/build.gradle.kts +++ b/libraries/push/impl/build.gradle.kts @@ -23,7 +23,9 @@ android { } buildTypes { - register("nightly") + register("nightly") { + matchingFallbacks += listOf("release") + } } } From f1ad56bef1fe1b4f5fd16e42b34795eb2edcbdd7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 3 Nov 2025 22:29:38 +0100 Subject: [PATCH 320/898] Move dependencies block out of the android block. --- libraries/compound/build.gradle.kts | 16 ++++---- libraries/cryptography/test/build.gradle.kts | 8 ++-- libraries/dateformatter/api/build.gradle.kts | 8 ++-- libraries/dateformatter/impl/build.gradle.kts | 30 +++++++------- libraries/dateformatter/test/build.gradle.kts | 10 ++--- libraries/designsystem/build.gradle.kts | 40 +++++++++---------- libraries/featureflag/test/build.gradle.kts | 14 +++---- libraries/mediapickers/api/build.gradle.kts | 16 ++++---- libraries/mediapickers/test/build.gradle.kts | 12 +++--- libraries/preferences/test/build.gradle.kts | 16 ++++---- libraries/previewutils/build.gradle.kts | 14 +++---- libraries/ui-utils/build.gradle.kts | 14 +++---- 12 files changed, 99 insertions(+), 99 deletions(-) diff --git a/libraries/compound/build.gradle.kts b/libraries/compound/build.gradle.kts index cbdb09d451..933ef3e495 100644 --- a/libraries/compound/build.gradle.kts +++ b/libraries/compound/build.gradle.kts @@ -18,12 +18,12 @@ android { testOptions { unitTests.isIncludeAndroidResources = true } - - dependencies { - implementation(libs.showkase) - testCommonDependencies(libs) - testImplementation(libs.test.roborazzi) - testImplementation(libs.test.roborazzi.compose) - testImplementation(libs.test.roborazzi.junit) - } +} + +dependencies { + implementation(libs.showkase) + testCommonDependencies(libs) + testImplementation(libs.test.roborazzi) + testImplementation(libs.test.roborazzi.compose) + testImplementation(libs.test.roborazzi.junit) } diff --git a/libraries/cryptography/test/build.gradle.kts b/libraries/cryptography/test/build.gradle.kts index 5564c972f9..e3a110d8fb 100644 --- a/libraries/cryptography/test/build.gradle.kts +++ b/libraries/cryptography/test/build.gradle.kts @@ -11,8 +11,8 @@ plugins { android { namespace = "io.element.android.libraries.cryptography.test" - - dependencies { - api(projects.libraries.cryptography.api) - } +} + +dependencies { + api(projects.libraries.cryptography.api) } diff --git a/libraries/dateformatter/api/build.gradle.kts b/libraries/dateformatter/api/build.gradle.kts index cebb9d4049..99c22515fd 100644 --- a/libraries/dateformatter/api/build.gradle.kts +++ b/libraries/dateformatter/api/build.gradle.kts @@ -13,8 +13,8 @@ plugins { android { namespace = "io.element.android.libraries.dateformatter.api" - - dependencies { - testCommonDependencies(libs) - } +} + +dependencies { + testCommonDependencies(libs) } diff --git a/libraries/dateformatter/impl/build.gradle.kts b/libraries/dateformatter/impl/build.gradle.kts index 72da2f81f6..15c0034f91 100644 --- a/libraries/dateformatter/impl/build.gradle.kts +++ b/libraries/dateformatter/impl/build.gradle.kts @@ -30,19 +30,19 @@ android { ) } } - - dependencies { - implementation(projects.libraries.core) - implementation(projects.libraries.designsystem) - implementation(projects.libraries.di) - implementation(projects.libraries.uiStrings) - implementation(projects.services.toolbox.api) - - api(projects.libraries.dateformatter.api) - api(libs.datetime) - - testCommonDependencies(libs, true) - testImplementation(projects.libraries.dateformatter.test) - testImplementation(projects.services.toolbox.test) - } +} + +dependencies { + implementation(projects.libraries.core) + implementation(projects.libraries.designsystem) + implementation(projects.libraries.di) + implementation(projects.libraries.uiStrings) + implementation(projects.services.toolbox.api) + + api(projects.libraries.dateformatter.api) + api(libs.datetime) + + testCommonDependencies(libs, true) + testImplementation(projects.libraries.dateformatter.test) + testImplementation(projects.services.toolbox.test) } diff --git a/libraries/dateformatter/test/build.gradle.kts b/libraries/dateformatter/test/build.gradle.kts index 6f3877ea80..af8b2a8e19 100644 --- a/libraries/dateformatter/test/build.gradle.kts +++ b/libraries/dateformatter/test/build.gradle.kts @@ -11,9 +11,9 @@ plugins { android { namespace = "io.element.android.libraries.dateformatter.test" - - dependencies { - api(projects.libraries.dateformatter.api) - api(libs.datetime) - } +} + +dependencies { + api(projects.libraries.dateformatter.api) + api(libs.datetime) } diff --git a/libraries/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts index ff0b4878b2..8750b04683 100644 --- a/libraries/designsystem/build.gradle.kts +++ b/libraries/designsystem/build.gradle.kts @@ -25,24 +25,24 @@ android { consumerProguardFiles("consumer-rules.pro") } } - - dependencies { - api(projects.libraries.compound) - - implementation(libs.androidx.compose.material3.windowsizeclass) - implementation(libs.androidx.compose.material3.adaptive) - implementation(libs.coil.compose) - implementation(libs.vanniktech.blurhash) - implementation(projects.libraries.androidutils) - implementation(projects.libraries.architecture) - implementation(projects.libraries.core) - implementation(projects.libraries.preferences.api) - implementation(projects.libraries.testtags) - implementation(projects.libraries.uiStrings) - - ksp(libs.showkase.processor) - implementation(libs.showkase) - - testCommonDependencies(libs) - } +} + +dependencies { + api(projects.libraries.compound) + + implementation(libs.androidx.compose.material3.windowsizeclass) + implementation(libs.androidx.compose.material3.adaptive) + implementation(libs.coil.compose) + implementation(libs.vanniktech.blurhash) + implementation(projects.libraries.androidutils) + implementation(projects.libraries.architecture) + implementation(projects.libraries.core) + implementation(projects.libraries.preferences.api) + implementation(projects.libraries.testtags) + implementation(projects.libraries.uiStrings) + + ksp(libs.showkase.processor) + implementation(libs.showkase) + + testCommonDependencies(libs) } diff --git a/libraries/featureflag/test/build.gradle.kts b/libraries/featureflag/test/build.gradle.kts index e2920a07b7..f2361417a0 100644 --- a/libraries/featureflag/test/build.gradle.kts +++ b/libraries/featureflag/test/build.gradle.kts @@ -11,11 +11,11 @@ plugins { android { namespace = "io.element.android.libraries.featureflag.test" - - dependencies { - api(projects.libraries.featureflag.api) - implementation(projects.libraries.core) - implementation(projects.libraries.matrix.test) - implementation(libs.coroutines.core) - } +} + +dependencies { + api(projects.libraries.featureflag.api) + implementation(projects.libraries.core) + implementation(projects.libraries.matrix.test) + implementation(libs.coroutines.core) } diff --git a/libraries/mediapickers/api/build.gradle.kts b/libraries/mediapickers/api/build.gradle.kts index c130cd7900..aaf9b4cd0c 100644 --- a/libraries/mediapickers/api/build.gradle.kts +++ b/libraries/mediapickers/api/build.gradle.kts @@ -13,12 +13,12 @@ plugins { android { namespace = "io.element.android.libraries.mediapickers.api" - - dependencies { - implementation(projects.libraries.uiStrings) - implementation(projects.libraries.core) - implementation(projects.libraries.di) - - testCommonDependencies(libs) - } +} + +dependencies { + implementation(projects.libraries.uiStrings) + implementation(projects.libraries.core) + implementation(projects.libraries.di) + + testCommonDependencies(libs) } diff --git a/libraries/mediapickers/test/build.gradle.kts b/libraries/mediapickers/test/build.gradle.kts index ee743bb63d..dc37741b02 100644 --- a/libraries/mediapickers/test/build.gradle.kts +++ b/libraries/mediapickers/test/build.gradle.kts @@ -15,10 +15,10 @@ setupDependencyInjection() android { namespace = "io.element.android.libraries.mediapickers.test" - - dependencies { - implementation(projects.libraries.core) - implementation(projects.libraries.di) - api(projects.libraries.mediapickers.api) - } +} + +dependencies { + implementation(projects.libraries.core) + implementation(projects.libraries.di) + api(projects.libraries.mediapickers.api) } diff --git a/libraries/preferences/test/build.gradle.kts b/libraries/preferences/test/build.gradle.kts index 9db4ab1866..44116aac13 100644 --- a/libraries/preferences/test/build.gradle.kts +++ b/libraries/preferences/test/build.gradle.kts @@ -11,12 +11,12 @@ plugins { android { namespace = "io.element.android.libraries.preferences.test" - - dependencies { - api(projects.libraries.preferences.api) - implementation(projects.libraries.matrix.api) - implementation(projects.tests.testutils) - implementation(libs.coroutines.core) - implementation(libs.androidx.datastore.preferences) - } +} + +dependencies { + api(projects.libraries.preferences.api) + implementation(projects.libraries.matrix.api) + implementation(projects.tests.testutils) + implementation(libs.coroutines.core) + implementation(libs.androidx.datastore.preferences) } diff --git a/libraries/previewutils/build.gradle.kts b/libraries/previewutils/build.gradle.kts index 92218e9286..111cb4c830 100644 --- a/libraries/previewutils/build.gradle.kts +++ b/libraries/previewutils/build.gradle.kts @@ -11,11 +11,11 @@ plugins { android { namespace = "io.element.android.libraries.previewutils" - - dependencies { - implementation(projects.libraries.designsystem) - implementation(projects.libraries.matrix.api) - - implementation(libs.kotlinx.collections.immutable) - } +} + +dependencies { + implementation(projects.libraries.designsystem) + implementation(projects.libraries.matrix.api) + + implementation(libs.kotlinx.collections.immutable) } diff --git a/libraries/ui-utils/build.gradle.kts b/libraries/ui-utils/build.gradle.kts index 95ce3d21a1..227bdd7f49 100644 --- a/libraries/ui-utils/build.gradle.kts +++ b/libraries/ui-utils/build.gradle.kts @@ -13,11 +13,11 @@ plugins { android { namespace = "io.element.android.libraries.ui.utils" - - dependencies { - implementation(projects.libraries.androidutils) - implementation(projects.services.toolbox.impl) - - testCommonDependencies(libs) - } +} + +dependencies { + implementation(projects.libraries.androidutils) + implementation(projects.services.toolbox.impl) + + testCommonDependencies(libs) } From 1e517252e156a28ae06df172359e53462ac97cca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 08:23:34 +0000 Subject: [PATCH 321/898] fix(deps): update roborazzi to v1.51.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7f07c14167..cbf32ec299 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,7 +33,7 @@ accompanist = "0.37.3" # Test test_core = "1.7.0" -roborazzi = "1.50.0" +roborazzi = "1.51.0" # Jetbrain datetime = "0.7.1" From 8d529849e88441ffcd83b7a28d66ea6953f49be8 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Tue, 4 Nov 2025 11:36:17 +0100 Subject: [PATCH 322/898] Try fixing 'Timeline Event object has already been destroyed' (#5675) This will display a fallback notification. I don't see how the current code could cause it, but I tried to re-structure it a bit so we don't have nested `use` usages and `timestamp` is fetched ahead of time. --- .../libraries/matrix/impl/notification/NotificationMapper.kt | 5 +++-- .../notification/TimelineEventToNotificationContentMapper.kt | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt index bad622e456..7e06eb3c75 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/NotificationMapper.kt @@ -39,6 +39,7 @@ class NotificationMapper( isDirect = item.roomInfo.isDirect, activeMembersCount = item.roomInfo.joinedMembersCount.toInt(), ) + val timestamp = item.timestamp() ?: clock.epochMillis() NotificationData( sessionId = sessionId, eventId = eventId, @@ -53,8 +54,8 @@ class NotificationMapper( isDm = isDm, isEncrypted = item.roomInfo.isEncrypted.orFalse(), isNoisy = item.isNoisy.orFalse(), - timestamp = item.timestamp() ?: clock.epochMillis(), - content = item.event.use { notificationContentMapper.map(it) }.getOrThrow(), + timestamp = timestamp, + content = notificationContentMapper.map(item.event).getOrThrow(), hasMention = item.hasMention.orFalse(), ) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt index 2ca4a3c823..b2952461df 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/notification/TimelineEventToNotificationContentMapper.kt @@ -25,8 +25,9 @@ class TimelineEventToNotificationContentMapper { fun map(timelineEvent: TimelineEvent): Result { return runCatchingExceptions { timelineEvent.use { + val senderId = UserId(timelineEvent.senderId()) timelineEvent.eventType().use { eventType -> - eventType.toContent(senderId = UserId(timelineEvent.senderId())) + eventType.toContent(senderId = senderId) } } } From a2b6561009008d3aaa2253ac006814c7fcdc185c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 12:11:11 +0100 Subject: [PATCH 323/898] Make sure we know the session verification state before showing the option to verify the session. #5521 --- .../ChooseSelfVerificationModePresenter.kt | 34 ++++++- .../ChooseSelfVerificationModeState.kt | 11 ++- ...ChooseSelfVerificationModeStateProvider.kt | 42 +++++++-- .../ChooseSelfVerificationModeView.kt | 78 ++++++++++----- ...oseSessionVerificationModePresenterTest.kt | 94 ++++++++++++++++--- .../ChooseSessionVerificationModeViewTest.kt | 5 +- .../api/encryption/EncryptionService.kt | 3 +- .../impl/encryption/RustEncryptionService.kt | 16 +++- .../test/encryption/FakeEncryptionService.kt | 5 +- 9 files changed, 228 insertions(+), 60 deletions(-) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt index eb3c1330b3..32419a0a59 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt @@ -15,7 +15,9 @@ import androidx.compose.runtime.remember import dev.zacsweers.metro.Inject import io.element.android.features.logout.api.direct.DirectLogoutEvents import io.element.android.features.logout.api.direct.DirectLogoutState +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.coroutine.mapState import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState @@ -27,8 +29,33 @@ class ChooseSelfVerificationModePresenter( @Composable override fun present(): ChooseSelfVerificationModeState { val hasDevicesToVerifyAgainst by encryptionService.hasDevicesToVerifyAgainst.collectAsState() - val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState() - val canEnterRecoveryKey by remember { derivedStateOf { recoveryState == RecoveryState.INCOMPLETE } } + val canEnterRecoveryKey by encryptionService.recoveryStateStateFlow + .mapState { recoveryState -> + when (recoveryState) { + RecoveryState.WAITING_FOR_SYNC, + RecoveryState.UNKNOWN -> AsyncData.Loading() + RecoveryState.INCOMPLETE -> AsyncData.Success(true) + RecoveryState.ENABLED, + RecoveryState.DISABLED -> AsyncData.Success(false) + } + } + .collectAsState() + val buttonsState by remember { + derivedStateOf { + val canUseAnotherDevice = hasDevicesToVerifyAgainst.dataOrNull() + val canEnterRecoveryKey = canEnterRecoveryKey.dataOrNull() + if (canUseAnotherDevice == null || canEnterRecoveryKey == null) { + AsyncData.Loading() + } else { + AsyncData.Success( + ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = canUseAnotherDevice, + canEnterRecoveryKey = canEnterRecoveryKey, + ) + ) + } + } + } val directLogoutState = directLogoutPresenter.present() @@ -39,8 +66,7 @@ class ChooseSelfVerificationModePresenter( } return ChooseSelfVerificationModeState( - canUseAnotherDevice = hasDevicesToVerifyAgainst, - canEnterRecoveryKey = canEnterRecoveryKey, + buttonsState = buttonsState, directLogoutState = directLogoutState, eventSink = ::eventHandler, ) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeState.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeState.kt index 117768a6d2..5cc03352f0 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeState.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeState.kt @@ -8,10 +8,15 @@ package io.element.android.features.ftue.impl.sessionverification.choosemode import io.element.android.features.logout.api.direct.DirectLogoutState +import io.element.android.libraries.architecture.AsyncData data class ChooseSelfVerificationModeState( - val canUseAnotherDevice: Boolean, - val canEnterRecoveryKey: Boolean, + val buttonsState: AsyncData, val directLogoutState: DirectLogoutState, val eventSink: (ChooseSelfVerificationModeEvent) -> Unit, -) +) { + data class ButtonsState( + val canUseAnotherDevice: Boolean, + val canEnterRecoveryKey: Boolean, + ) +} diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeStateProvider.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeStateProvider.kt index e053728e2c..fa480706fd 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeStateProvider.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeStateProvider.kt @@ -9,23 +9,49 @@ package io.element.android.features.ftue.impl.sessionverification.choosemode import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.logout.api.direct.aDirectLogoutState +import io.element.android.libraries.architecture.AsyncData class ChooseSelfVerificationModeStateProvider : PreviewParameterProvider { override val values = sequenceOf( - aChooseSelfVerificationModeState(canUseAnotherDevice = false, canEnterRecoveryKey = true), - aChooseSelfVerificationModeState(canUseAnotherDevice = false, canEnterRecoveryKey = false), - aChooseSelfVerificationModeState(canUseAnotherDevice = true, canEnterRecoveryKey = true), - aChooseSelfVerificationModeState(canUseAnotherDevice = true, canEnterRecoveryKey = false), + aChooseSelfVerificationModeState( + buttonsState = AsyncData.Success( + aButtonsState(canUseAnotherDevice = false, canEnterRecoveryKey = true), + ), + ), + aChooseSelfVerificationModeState( + buttonsState = AsyncData.Success( + aButtonsState(canUseAnotherDevice = false, canEnterRecoveryKey = false), + ), + ), + aChooseSelfVerificationModeState( + buttonsState = AsyncData.Success( + aButtonsState(canUseAnotherDevice = true, canEnterRecoveryKey = true), + ), + ), + aChooseSelfVerificationModeState( + buttonsState = AsyncData.Success( + aButtonsState(canUseAnotherDevice = true, canEnterRecoveryKey = false), + ), + ), + aChooseSelfVerificationModeState( + buttonsState = AsyncData.Loading(), + ), ) } fun aChooseSelfVerificationModeState( - canUseAnotherDevice: Boolean = true, - canEnterRecoveryKey: Boolean = true, + buttonsState: AsyncData = AsyncData.Success(aButtonsState()), ) = ChooseSelfVerificationModeState( - canUseAnotherDevice = canUseAnotherDevice, - canEnterRecoveryKey = canEnterRecoveryKey, + buttonsState = buttonsState, directLogoutState = aDirectLogoutState(), eventSink = {}, ) + +fun aButtonsState( + canUseAnotherDevice: Boolean = true, + canEnterRecoveryKey: Boolean = true, +) = ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = canUseAnotherDevice, + canEnterRecoveryKey = canEnterRecoveryKey, +) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeView.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeView.kt index b07c04ac9c..6907414863 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeView.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModeView.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.ftue.impl.R +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage @@ -50,7 +51,6 @@ fun ChooseSelfVerificationModeView( BackHandler { activity?.finish() } - HeaderFooterPage( modifier = modifier, topBar = { @@ -73,29 +73,12 @@ fun ChooseSelfVerificationModeView( ) }, footer = { - ButtonColumnMolecule( - modifier = Modifier.padding(bottom = 16.dp) - ) { - if (state.canUseAnotherDevice) { - Button( - modifier = Modifier.fillMaxWidth(), - text = stringResource(R.string.screen_identity_use_another_device), - onClick = onUseAnotherDevice, - ) - } - if (state.canEnterRecoveryKey) { - Button( - modifier = Modifier.fillMaxWidth(), - text = stringResource(R.string.screen_session_verification_enter_recovery_key), - onClick = onUseRecoveryKey, - ) - } - OutlinedButton( - modifier = Modifier.fillMaxWidth(), - text = stringResource(R.string.screen_identity_confirmation_cannot_confirm), - onClick = onResetKey, - ) - } + ChooseSelfVerificationModeButtons( + state = state, + onUseAnotherDevice = onUseAnotherDevice, + onUseRecoveryKey = onUseRecoveryKey, + onResetKey = onResetKey, + ) } ) { Row( @@ -113,6 +96,53 @@ fun ChooseSelfVerificationModeView( } } +@Composable +private fun ChooseSelfVerificationModeButtons( + state: ChooseSelfVerificationModeState, + onUseAnotherDevice: () -> Unit, + onUseRecoveryKey: () -> Unit, + onResetKey: () -> Unit, +) { + ButtonColumnMolecule( + modifier = Modifier.padding(bottom = 16.dp) + ) { + when (state.buttonsState) { + AsyncData.Uninitialized, + is AsyncData.Failure, + is AsyncData.Loading -> { + Button( + modifier = Modifier.fillMaxWidth(), + enabled = false, + showProgress = true, + text = stringResource(CommonStrings.common_loading), + onClick = {}, + ) + } + is AsyncData.Success -> { + if (state.buttonsState.data.canUseAnotherDevice) { + Button( + modifier = Modifier.fillMaxWidth(), + text = stringResource(R.string.screen_identity_use_another_device), + onClick = onUseAnotherDevice, + ) + } + if (state.buttonsState.data.canEnterRecoveryKey) { + Button( + modifier = Modifier.fillMaxWidth(), + text = stringResource(R.string.screen_session_verification_enter_recovery_key), + onClick = onUseRecoveryKey, + ) + } + OutlinedButton( + modifier = Modifier.fillMaxWidth(), + text = stringResource(R.string.screen_identity_confirmation_cannot_confirm), + onClick = onResetKey, + ) + } + } + } +} + @PreviewsDayNight @Composable internal fun ChooseSelfVerificationModeViewPreview( diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModePresenterTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModePresenterTest.kt index 3dbf5a6932..2caead346a 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModePresenterTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModePresenterTest.kt @@ -11,6 +11,7 @@ import com.google.common.truth.Truth.assertThat import io.element.android.features.logout.api.direct.DirectLogoutEvents import io.element.android.features.logout.api.direct.DirectLogoutState import io.element.android.features.logout.api.direct.aDirectLogoutState +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService @@ -22,23 +23,92 @@ import org.junit.Test class ChooseSessionVerificationModePresenterTest { @Test - fun `initial state - is relayed from EncryptionService`() = runTest { - val encryptionService = FakeEncryptionService().apply { - // Has device to verify against - emitHasDevicesToVerifyAgainst(false) - // Can enter recovery key - emitRecoveryState(RecoveryState.INCOMPLETE) - } - val presenter = createPresenter(encryptionService = encryptionService) + fun `present - initial state`() = runTest { + val presenter = createPresenter() presenter.test { awaitItem().run { - assertThat(canUseAnotherDevice).isFalse() - assertThat(canEnterRecoveryKey).isTrue() + assertThat(buttonsState.isLoading()).isTrue() assertThat(directLogoutState.logoutAction.isUninitialized()).isTrue() } } } + @Test + fun `present - state is relayed from EncryptionService, order 1`() = runTest { + val encryptionService = FakeEncryptionService() + val presenter = createPresenter(encryptionService = encryptionService) + presenter.test { + assertThat(awaitItem().buttonsState.isLoading()).isTrue() + // Has device to verify against + encryptionService.emitHasDevicesToVerifyAgainst(AsyncData.Success(false)) + // Can enter recovery key + encryptionService.emitRecoveryState(RecoveryState.DISABLED) + assertThat(awaitItem().buttonsState.dataOrNull()).isEqualTo( + ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = false, + canEnterRecoveryKey = false, + ) + ) + } + } + + @Test + fun `present - state is relayed from EncryptionService, order 2`() = runTest { + val encryptionService = FakeEncryptionService() + val presenter = createPresenter(encryptionService = encryptionService) + presenter.test { + assertThat(awaitItem().buttonsState.isLoading()).isTrue() + // Can enter recovery key + encryptionService.emitRecoveryState(RecoveryState.DISABLED) + // Has device to verify against + encryptionService.emitHasDevicesToVerifyAgainst(AsyncData.Success(false)) + assertThat(awaitItem().buttonsState.dataOrNull()).isEqualTo( + ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = false, + canEnterRecoveryKey = false, + ) + ) + } + } + + @Test + fun `present - can use another device`() = runTest { + val encryptionService = FakeEncryptionService() + val presenter = createPresenter(encryptionService = encryptionService) + presenter.test { + assertThat(awaitItem().buttonsState.isLoading()).isTrue() + // Can enter recovery key + encryptionService.emitRecoveryState(RecoveryState.DISABLED) + // Has device to verify against + encryptionService.emitHasDevicesToVerifyAgainst(AsyncData.Success(true)) + assertThat(awaitItem().buttonsState.dataOrNull()).isEqualTo( + ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = true, + canEnterRecoveryKey = false, + ) + ) + } + } + + @Test + fun `present - can enter recovery key`() = runTest { + val encryptionService = FakeEncryptionService() + val presenter = createPresenter(encryptionService = encryptionService) + presenter.test { + assertThat(awaitItem().buttonsState.isLoading()).isTrue() + // Can enter recovery key + encryptionService.emitRecoveryState(RecoveryState.INCOMPLETE) + // Has device to verify against + encryptionService.emitHasDevicesToVerifyAgainst(AsyncData.Success(false)) + assertThat(awaitItem().buttonsState.dataOrNull()).isEqualTo( + ChooseSelfVerificationModeState.ButtonsState( + canUseAnotherDevice = false, + canEnterRecoveryKey = true, + ) + ) + } + } + @Test fun `sing out action triggers a direct logout`() = runTest { val logoutEventRecorder = lambdaRecorder {} @@ -49,8 +119,8 @@ class ChooseSessionVerificationModePresenterTest { presenter.test { val initial = awaitItem() initial.eventSink(ChooseSelfVerificationModeEvent.SignOut) - - logoutEventRecorder.assertions().isCalledOnce().with(value(DirectLogoutEvents.Logout(ignoreSdkError = false))) + logoutEventRecorder.assertions().isCalledOnce() + .with(value(DirectLogoutEvents.Logout(ignoreSdkError = false))) } } diff --git a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModeViewTest.kt b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModeViewTest.kt index ed7d99dd19..3112a7af59 100644 --- a/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModeViewTest.kt +++ b/features/ftue/impl/src/test/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSessionVerificationModeViewTest.kt @@ -12,6 +12,7 @@ import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.test.ext.junit.runners.AndroidJUnit4 import io.element.android.features.ftue.impl.R +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.tests.testutils.EnsureNeverCalled import io.element.android.tests.testutils.clickOn @@ -43,7 +44,7 @@ class ChooseSessionVerificationModeViewTest { fun `clicking on use another device calls the callback`() { ensureCalledOnce { callback -> rule.setChooseSelfVerificationModeView( - aChooseSelfVerificationModeState(canUseAnotherDevice = true), + aChooseSelfVerificationModeState(AsyncData.Success(aButtonsState(canUseAnotherDevice = true))), onUseAnotherDevice = callback, ) rule.clickOn(R.string.screen_identity_use_another_device) @@ -55,7 +56,7 @@ class ChooseSessionVerificationModeViewTest { fun `clicking on enter recovery key calls the callback`() { ensureCalledOnce { callback -> rule.setChooseSelfVerificationModeView( - aChooseSelfVerificationModeState(canEnterRecoveryKey = true), + aChooseSelfVerificationModeState(AsyncData.Success(aButtonsState(canEnterRecoveryKey = true))), onEnterRecoveryKey = callback, ) rule.clickOn(R.string.screen_session_verification_enter_recovery_key) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt index 961178ee3e..22059ad155 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.matrix.api.encryption +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import kotlinx.coroutines.flow.Flow @@ -17,7 +18,7 @@ interface EncryptionService { val recoveryStateStateFlow: StateFlow val enableRecoveryProgressStateFlow: StateFlow val isLastDevice: StateFlow - val hasDevicesToVerifyAgainst: StateFlow + val hasDevicesToVerifyAgainst: StateFlow> suspend fun enableBackups(): Result diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt index 91cafd1df0..8e22827063 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.matrix.impl.encryption +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.flatMap import io.element.android.libraries.core.extensions.mapFailure @@ -42,6 +43,7 @@ import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.EnableRecoveryProgressListener import org.matrix.rustcomponents.sdk.Encryption import org.matrix.rustcomponents.sdk.UserIdentity +import timber.log.Timber import org.matrix.rustcomponents.sdk.BackupUploadState as RustBackupUploadState import org.matrix.rustcomponents.sdk.EnableRecoveryProgress as RustEnableRecoveryProgress import org.matrix.rustcomponents.sdk.RecoveryException as RustRecoveryException @@ -103,14 +105,20 @@ class RustEncryptionService( * TODO This is a temporary workaround, when we will have a way to observe * the sessions, this code will have to be updated. */ - override val hasDevicesToVerifyAgainst: StateFlow = flow { + override val hasDevicesToVerifyAgainst: StateFlow> = flow { while (currentCoroutineContext().isActive) { - val result = hasDevicesToVerifyAgainst().getOrDefault(false) - emit(result) + val result = hasDevicesToVerifyAgainst() + result + .onSuccess { + emit(AsyncData.Success(it)) + } + .onFailure { + Timber.e(it, "Failed to get hasDevicesToVerifyAgainst, retrying in 5s...") + } delay(5_000) } } - .stateIn(sessionCoroutineScope, SharingStarted.Eagerly, false) + .stateIn(sessionCoroutineScope, SharingStarted.Eagerly, AsyncData.Uninitialized) override suspend fun enableBackups(): Result = withContext(dispatchers.io) { runCatchingExceptions { diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt index b4199ff8e4..5b2ead9acf 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt @@ -7,6 +7,7 @@ package io.element.android.libraries.matrix.test.encryption +import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.encryption.BackupState import io.element.android.libraries.matrix.api.encryption.BackupUploadState @@ -34,7 +35,7 @@ class FakeEncryptionService( override val recoveryStateStateFlow: MutableStateFlow = MutableStateFlow(RecoveryState.UNKNOWN) override val enableRecoveryProgressStateFlow: MutableStateFlow = MutableStateFlow(EnableRecoveryProgress.Starting) override val isLastDevice: MutableStateFlow = MutableStateFlow(false) - override val hasDevicesToVerifyAgainst: MutableStateFlow = MutableStateFlow(true) + override val hasDevicesToVerifyAgainst: MutableStateFlow> = MutableStateFlow(AsyncData.Uninitialized) private var waitForBackupUploadSteadyStateFlow: Flow = flowOf() private var recoverFailure: Exception? = null @@ -84,7 +85,7 @@ class FakeEncryptionService( this.isLastDevice.value = isLastDevice } - fun emitHasDevicesToVerifyAgainst(hasDevicesToVerifyAgainst: Boolean) { + fun emitHasDevicesToVerifyAgainst(hasDevicesToVerifyAgainst: AsyncData) { this.hasDevicesToVerifyAgainst.value = hasDevicesToVerifyAgainst } From 90704208601b5afff4f49a5d66b8b7ffdfd06c5a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 15:25:13 +0100 Subject: [PATCH 324/898] Session database: add count query. --- .../android/libraries/sessionstorage/api/SessionStore.kt | 5 +++++ .../sessionstorage/impl/DatabaseSessionStore.kt | 9 +++++++++ .../android/libraries/matrix/session/SessionData.sq | 3 +++ .../sessionstorage/impl/DatabaseSessionStoreTest.kt | 6 ++++++ .../sessionstorage/test/InMemorySessionStore.kt | 4 ++++ 5 files changed, 27 insertions(+) diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt index 7900b4d90d..f3b66d73c0 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionStore.kt @@ -50,6 +50,11 @@ interface SessionStore { */ suspend fun getAllSessions(): List + /** + * Get the number of sessions. + */ + suspend fun numberOfSessions(): Int + /** * Get the latest session, or null if no session exists. */ diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt index 0560d3076a..81353f5305 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt +++ b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStore.kt @@ -161,6 +161,15 @@ class DatabaseSessionStore( } } + override suspend fun numberOfSessions(): Int { + return sessionDataMutex.withLock { + database.sessionDataQueries.count() + .executeAsOneOrNull() + ?.toInt() + ?: 0 + } + } + override fun sessionsFlow(): Flow> { return database.sessionDataQueries.selectAll() .asFlow() diff --git a/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq b/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq index 53d07bfba3..b61c746fb8 100644 --- a/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq +++ b/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq @@ -47,6 +47,9 @@ SELECT * FROM SessionData ORDER BY lastUsageIndex DESC LIMIT 1; selectAll: SELECT * FROM SessionData ORDER BY lastUsageIndex DESC; +count: +SELECT count(*) FROM SessionData; + selectByUserId: SELECT * FROM SessionData WHERE userId = ?; diff --git a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt index d1fef8a39a..f28d9e21df 100644 --- a/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt +++ b/libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTest.kt @@ -52,6 +52,7 @@ class DatabaseSessionStoreTest { assertThat(database.sessionDataQueries.selectLatest().executeAsOneOrNull()).isEqualTo(aSessionData) assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(1) + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1) } @Test @@ -109,6 +110,7 @@ class DatabaseSessionStoreTest { assertThat(foundSession).isEqualTo(aSessionData) assertThat(database.sessionDataQueries.selectAll().executeAsList().size).isEqualTo(2) + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(2) } @Test @@ -196,12 +198,16 @@ class DatabaseSessionStoreTest { position = 1, lastUsageIndex = 1, ) + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1) databaseSessionStore.addSession(secondSessionData.toApiModel()) assertThat(awaitItem().size).isEqualTo(2) + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(2) databaseSessionStore.removeSession(aSessionData.userId) assertThat(awaitItem().size).isEqualTo(1) + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(1) databaseSessionStore.removeSession(secondSessionData.userId) assertThat(awaitItem()).isEmpty() + assertThat(database.sessionDataQueries.count().executeAsOneOrNull()).isEqualTo(0) } } diff --git a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/InMemorySessionStore.kt b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/InMemorySessionStore.kt index c8f3078e7a..00dd9ad9c0 100644 --- a/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/InMemorySessionStore.kt +++ b/libraries/session-storage/test/src/main/kotlin/io/element/android/libraries/sessionstorage/test/InMemorySessionStore.kt @@ -67,6 +67,10 @@ class InMemorySessionStore( return sessionDataListFlow.value } + override suspend fun numberOfSessions(): Int { + return sessionDataListFlow.value.size + } + override suspend fun getLatestSession(): SessionData? { return sessionDataListFlow.value.firstOrNull() } From 604d091dbccb7e727e38fb1fb3bd5213584513cd Mon Sep 17 00:00:00 2001 From: ElementBot Date: Tue, 4 Nov 2025 14:28:16 +0000 Subject: [PATCH 325/898] Update screenshots --- ...tion.choosemode_ChooseSelfVerificationModeView_Day_4_en.png | 3 +++ ...on.choosemode_ChooseSelfVerificationModeView_Night_4_en.png | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_4_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_4_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_4_en.png new file mode 100644 index 0000000000..7bf8eee433 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Day_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd6ddafdb4bf56b2d79958fbff2cc6afb384d612bc3850a0fd4c0f4e9368abea +size 23346 diff --git a/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_4_en.png new file mode 100644 index 0000000000..3ff036987d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.ftue.impl.sessionverification.choosemode_ChooseSelfVerificationModeView_Night_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf3c48bc7e54774134d819053e2e63d7e0a0b053c2364d54a39452d3c77b794 +size 22896 From 0367ae610cfede75081de620802bd66736d844b8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 15:30:29 +0100 Subject: [PATCH 326/898] Session database: use the new count API. --- .../src/main/kotlin/io/element/android/appnav/RootFlowNode.kt | 4 ++-- .../login/impl/screens/onboarding/OnBoardingPresenter.kt | 2 +- .../features/rageshake/impl/reporter/DefaultBugReporter.kt | 2 +- .../android/features/signedout/impl/SignedOutPresenterTest.kt | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index bdad3c2ab0..0332f34306 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -349,7 +349,7 @@ class RootFlowNode( } else { // wait for the current session to be restored val loggedInFlowNode = attachSession(latestSessionId) - if (sessionStore.getAllSessions().size > 1) { + if (sessionStore.numberOfSessions() > 1) { // Several accounts, let the user choose which one to use backstack.push( NavTarget.AccountSelect( @@ -379,7 +379,7 @@ class RootFlowNode( is PermalinkData.FallbackLink -> Unit is PermalinkData.RoomEmailInviteLink -> Unit else -> { - if (sessionStore.getAllSessions().size > 1) { + if (sessionStore.numberOfSessions() > 1) { // Several accounts, let the user choose which one to use backstack.push( NavTarget.AccountSelect( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt index e7e20aa70d..44d8095fa3 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt @@ -90,7 +90,7 @@ class OnBoardingPresenter( } val isAddingAccount by produceState(initialValue = false) { // We are adding an account if there is at least one session already stored - value = sessionStore.getAllSessions().isNotEmpty() + value = sessionStore.numberOfSessions() > 0 } val loginMode by loginHelper.collectLoginMode() diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt index 89bec00ac5..7f173a8fe1 100755 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/reporter/DefaultBugReporter.kt @@ -165,7 +165,7 @@ class DefaultBugReporter( } } val sessionData = sessionStore.getLatestSession() - val numberOfAccounts = sessionStore.getAllSessions().size + val numberOfAccounts = sessionStore.numberOfSessions() val deviceId = sessionData?.deviceId ?: "undefined" val userId = sessionData?.userId?.let { UserId(it) } // build the multi part request diff --git a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/SignedOutPresenterTest.kt b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/SignedOutPresenterTest.kt index e53c0af112..d5a9a910a0 100644 --- a/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/SignedOutPresenterTest.kt +++ b/features/signedout/impl/src/test/kotlin/io/element/android/features/signedout/impl/SignedOutPresenterTest.kt @@ -58,9 +58,11 @@ class SignedOutPresenterTest { val initialState = awaitItem() assertThat(initialState.signedOutSession).isEqualTo(aSessionData) assertThat(sessionStore.getAllSessions()).isNotEmpty() + assertThat(sessionStore.numberOfSessions()).isEqualTo(1) initialState.eventSink(SignedOutEvents.SignInAgain) assertThat(awaitItem().signedOutSession).isNull() assertThat(sessionStore.getAllSessions()).isEmpty() + assertThat(sessionStore.numberOfSessions()).isEqualTo(0) } } } From 015b497d5afd04e9460138f346a54fb51a7d48bf Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Tue, 4 Nov 2025 15:43:00 +0100 Subject: [PATCH 327/898] Use the SDK Client to check whether a homeserver is compatible (#5664) * Use the SDK `Client` to check whether a HS is compatible * Remove usage of unused `WellKnown`, keep `ElementWellKnown` * Make `HomeServerLoginCompatibilityChecker.check` return `true/false` values to distinguish non-valid homeservers from a failed check * Use `inMemoryStore` and `serverNameOrHomeserverUrl` * Do some cleanup of `isValid` and `isWellknownValid` * Make the debounce for starting the search a bit higher, as checking for the homeservers seems more resource-intensive now --- .../impl/accountprovider/AccountProvider.kt | 1 - .../AccountProviderProvider.kt | 4 +- .../login/impl/resolver/HomeserverData.kt | 2 - .../login/impl/resolver/HomeserverResolver.kt | 42 ++---- .../ChangeAccountProviderPresenter.kt | 1 - .../ChooseAccountProviderPresenter.kt | 1 - .../SearchAccountProviderPresenter.kt | 4 +- .../SearchAccountProviderStateProvider.kt | 12 +- .../SearchAccountProviderView.kt | 1 - .../AccountProviderDataSourceTest.kt | 4 - .../ChangeAccountProviderPresenterTest.kt | 4 - .../ChooseAccountProviderPresenterTest.kt | 2 - .../SearchAccountProviderPresenterTest.kt | 111 ++++++-------- .../HomeServerLoginCompatibilityChecker.kt | 19 +++ ...RustHomeServerLoginCompatibilityChecker.kt | 36 +++++ ...HomeserverLoginCompatibilityCheckerTest.kt | 54 +++++++ .../fakes/FakeFfiHomeserverLoginDetails.kt | 6 +- ...FakeHomeServerLoginCompatibilityChecker.kt | 18 +++ .../api/SessionWellknownRetriever.kt | 1 - .../libraries/wellknown/api/WellKnown.kt | 17 --- .../wellknown/api/WellknownRetriever.kt | 1 - .../impl/DefaultSessionWellknownRetriever.kt | 12 -- .../impl/DefaultWellknownRetriever.kt | 22 --- .../libraries/wellknown/impl/Mapper.kt | 11 -- .../DefaultSessionWellknownRetrieverTest.kt | 138 ------------------ .../test/FakeSessionWellknownRetriever.kt | 6 - .../wellknown/test/FakeWellknownRetriever.kt | 6 - 27 files changed, 195 insertions(+), 341 deletions(-) create mode 100644 libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/HomeServerLoginCompatibilityChecker.kt create mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt create mode 100644 libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt create mode 100644 libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeHomeServerLoginCompatibilityChecker.kt delete mode 100644 libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellKnown.kt diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProvider.kt index 0fcef6bedf..2d9c2d2e9c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProvider.kt @@ -13,5 +13,4 @@ data class AccountProvider( val subtitle: String? = null, val isPublic: Boolean = false, val isMatrixOrg: Boolean = false, - val isValid: Boolean = false, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt index a5f0fd7d3b..886f0efb82 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderProvider.kt @@ -15,7 +15,7 @@ open class AccountProviderProvider : PreviewParameterProvider { get() = sequenceOf( anAccountProvider(), anAccountProvider().copy(subtitle = null), - anAccountProvider().copy(subtitle = null, title = "invalid", isValid = false), + anAccountProvider().copy(subtitle = null, title = "invalid"), anAccountProvider().copy(subtitle = null, title = "Other", isPublic = false, isMatrixOrg = false), // Add other state here ) @@ -26,11 +26,9 @@ fun anAccountProvider( subtitle: String? = "Matrix.org is an open network for secure, decentralized communication.", isPublic: Boolean = true, isMatrixOrg: Boolean = true, - isValid: Boolean = true, ) = AccountProvider( url = url, subtitle = subtitle, isPublic = isPublic, isMatrixOrg = isMatrixOrg, - isValid = isValid, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverData.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverData.kt index 0b4b088938..1e219a8a3b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverData.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverData.kt @@ -10,6 +10,4 @@ package io.element.android.features.login.impl.resolver data class HomeserverData( // The computed homeserver url, for which a wellknown file has been retrieved, or just a valid Url val homeserverUrl: String, - // True if a wellknown file has been found and is valid. If false, it means that the [homeserverUrl] is valid - val isWellknownValid: Boolean, ) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt index 7b6f3e4102..c43839517c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt @@ -8,19 +8,16 @@ package io.element.android.features.login.impl.resolver import dev.zacsweers.metro.Inject -import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.parallelMap -import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.core.uri.isValidUrl -import io.element.android.libraries.wellknown.api.WellKnown -import io.element.android.libraries.wellknown.api.WellknownRetriever +import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.withContext -import kotlinx.coroutines.withTimeout +import timber.log.Timber import java.util.Collections /** @@ -29,7 +26,7 @@ import java.util.Collections @Inject class HomeserverResolver( private val dispatchers: CoroutineDispatchers, - private val wellknownRetriever: WellknownRetriever, + private val homeServerLoginCompatibilityChecker: HomeServerLoginCompatibilityChecker, ) { fun resolve(userInput: String): Flow> = flow { val flowContext = currentCoroutineContext() @@ -41,20 +38,14 @@ class HomeserverResolver( // Run all the requests in parallel withContext(dispatchers.io) { list.parallelMap { url -> - val wellKnown = tryOrNull { - withTimeout(5000) { - wellknownRetriever.getWellKnown(url) - } - } - val isValid = wellKnown?.dataOrNull()?.isValid().orFalse() + val isValid = homeServerLoginCompatibilityChecker.check(url) + .onFailure { Timber.w(it, "Failed to check compatibility with homeserver $url") } + .getOrNull() + ?: return@parallelMap + + // Emit the list as soon as possible if (isValid) { - // Emit the list as soon as possible - currentList.add( - HomeserverData( - homeserverUrl = url, - isWellknownValid = true, - ) - ) + currentList.add(HomeserverData(homeserverUrl = url)) withContext(flowContext) { emit(currentList.toList()) } @@ -63,14 +54,7 @@ class HomeserverResolver( } // If list is empty, and the user has entered an URL, do not block the user. if (currentList.isEmpty() && trimmedUserInput.isValidUrl()) { - emit( - listOf( - HomeserverData( - homeserverUrl = trimmedUserInput, - isWellknownValid = false, - ) - ) - ) + emit(listOf(HomeserverData(homeserverUrl = trimmedUserInput))) } } @@ -88,7 +72,3 @@ class HomeserverResolver( } } } - -private fun WellKnown.isValid(): Boolean { - return homeServer?.baseURL?.isNotBlank().orFalse() -} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt index 8e6a3ef0ba..940889728e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt @@ -37,7 +37,6 @@ class ChangeAccountProviderPresenter( subtitle = null, isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, - isValid = true, ) } .toImmutableList() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt index 73f03ba7c8..0c915959cb 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenter.kt @@ -67,7 +67,6 @@ class ChooseAccountProviderPresenter( subtitle = null, isPublic = url == AuthenticationConfig.MATRIX_ORG_URL, isMatrixOrg = url == AuthenticationConfig.MATRIX_ORG_URL, - isValid = true, ) } .toImmutableList() diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt index 0aa06ca632..657a21111c 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt @@ -57,14 +57,14 @@ class SearchAccountProviderPresenter( userInput = userInput, userInputResult = data.value, changeServerState = changeServerState, - eventSink = ::handleEvents + eventSink = ::handleEvents, ) } private fun CoroutineScope.onUserInput(userInput: String, data: MutableState>>) = launch { data.value = AsyncData.Uninitialized // Debounce - delay(300) + delay(500) data.value = AsyncData.Loading() homeserverResolver.resolve(userInput).collect { data.value = AsyncData.Success(it) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt index fb0e0f5c5a..3dd7a3d8c5 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt @@ -34,18 +34,14 @@ fun aSearchAccountProviderState( fun aHomeserverDataList(): List { return listOf( - aHomeserverData(isWellknownValid = true), - aHomeserverData(homeserverUrl = "https://no.sliding.sync", isWellknownValid = true), - aHomeserverData(homeserverUrl = "https://invalid", isWellknownValid = false), + aHomeserverData(homeserverUrl = AuthenticationConfig.MATRIX_ORG_URL), + aHomeserverData(homeserverUrl = "https://no.sliding.sync"), + aHomeserverData(homeserverUrl = "https://invalid"), ) } fun aHomeserverData( homeserverUrl: String = AuthenticationConfig.MATRIX_ORG_URL, - isWellknownValid: Boolean = true, ): HomeserverData { - return HomeserverData( - homeserverUrl = homeserverUrl, - isWellknownValid = isWellknownValid, - ) + return HomeserverData(homeserverUrl = homeserverUrl,) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt index 13bfd9e38e..2b289aa4c1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderView.kt @@ -192,7 +192,6 @@ private fun HomeserverData.toAccountProvider(): AccountProvider { // There is no need to know for other servers right now isPublic = isMatrixOrg, isMatrixOrg = isMatrixOrg, - isValid = isWellknownValid, ) } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt index 3d84a1da41..8a8f6864cf 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderDataSourceTest.kt @@ -33,7 +33,6 @@ class AccountProviderDataSourceTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = false, ) ) } @@ -55,7 +54,6 @@ class AccountProviderDataSourceTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = false, ) ) } @@ -77,7 +75,6 @@ class AccountProviderDataSourceTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = false, ) ) } @@ -98,7 +95,6 @@ class AccountProviderDataSourceTest { subtitle = null, isPublic = false, isMatrixOrg = false, - isValid = false, ) ) sut.reset() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt index 89abc6ddef..f2e933390b 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt @@ -46,7 +46,6 @@ class ChangeAccountProviderPresenterTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = true, ) ) ) @@ -76,7 +75,6 @@ class ChangeAccountProviderPresenterTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = true, ), AccountProvider( url = "https://element.io", @@ -84,7 +82,6 @@ class ChangeAccountProviderPresenterTest { subtitle = null, isPublic = false, isMatrixOrg = false, - isValid = true, ) ) ) @@ -114,7 +111,6 @@ class ChangeAccountProviderPresenterTest { subtitle = null, isPublic = true, isMatrixOrg = true, - isValid = true, ) ) ) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt index 5bad8a3638..2e13b0e555 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt @@ -37,14 +37,12 @@ class ChooseAccountProviderPresenterTest { subtitle = null, isPublic = false, isMatrixOrg = false, - isValid = true, ) val accountProvider2 = AccountProvider( url = ACCOUNT_PROVIDER_FROM_CONFIG_2.ensureProtocol(), subtitle = null, isPublic = false, isMatrixOrg = false, - isValid = true, ) } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index 79cd3c954a..67453119c7 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -13,12 +13,8 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.login.impl.changeserver.aChangeServerState import io.element.android.features.login.impl.resolver.HomeserverResolver -import io.element.android.features.wellknown.test.FakeWellknownRetriever import io.element.android.libraries.architecture.AsyncData -import io.element.android.libraries.matrix.test.A_HOMESERVER_URL -import io.element.android.libraries.wellknown.api.WellKnown -import io.element.android.libraries.wellknown.api.WellKnownBaseConfig -import io.element.android.libraries.wellknown.api.WellknownRetrieverResult +import io.element.android.libraries.matrix.test.auth.FakeHomeServerLoginCompatibilityChecker import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -33,9 +29,9 @@ class SearchAccountProviderPresenterTest { @Test fun `present - initial state`() = runTest { - val fakeWellknownRetriever = FakeWellknownRetriever() + val fakeLoginCompatibilityChecker = FakeHomeServerLoginCompatibilityChecker(checkResult = { Result.success(true) }) val presenter = SearchAccountProviderPresenter( - homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { @@ -47,9 +43,35 @@ class SearchAccountProviderPresenterTest { } } + @Test + fun `present - error while checking login compatibility`() = runTest { + val fakeLoginCompatibilityChecker = FakeHomeServerLoginCompatibilityChecker(checkResult = { Result.failure(IllegalStateException("Oops")) }) + val presenter = SearchAccountProviderPresenter( + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), + changeServerPresenter = { aChangeServerState() } + ) + moleculeFlow(RecompositionMode.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("https://test.org")) + val withInputState = awaitItem() + assertThat(withInputState.userInput).isEqualTo("https://test.org") + assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized) + assertThat(awaitItem().userInputResult).isInstanceOf(AsyncData.Loading::class.java) + assertThat(awaitItem().userInputResult).isEqualTo( + AsyncData.Success( + listOf( + aHomeserverData(homeserverUrl = "https://test.org") + ) + ) + ) + } + } + @Test fun `present - enter text no result`() = runTest { - val fakeWellknownRetriever = FakeWellknownRetriever() + val fakeWellknownRetriever = FakeHomeServerLoginCompatibilityChecker(checkResult = { Result.success(false) }) val presenter = SearchAccountProviderPresenter( homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), changeServerPresenter = { aChangeServerState() } @@ -67,48 +89,20 @@ class SearchAccountProviderPresenterTest { } } - @Test - fun `present - enter valid url no wellknown`() = runTest { - val fakeWellknownRetriever = FakeWellknownRetriever() - val presenter = SearchAccountProviderPresenter( - homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), - changeServerPresenter = { aChangeServerState() } - ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("https://test.org")) - val withInputState = awaitItem() - assertThat(withInputState.userInput).isEqualTo("https://test.org") - assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized) - assertThat(awaitItem().userInputResult).isInstanceOf(AsyncData.Loading::class.java) - assertThat(awaitItem().userInputResult).isEqualTo( - AsyncData.Success( - listOf( - aHomeserverData(homeserverUrl = "https://test.org", isWellknownValid = false) - ) - ) - ) - } - } - @Test fun `present - enter text one result with wellknown`() = runTest { - val getWellKnownResult = lambdaRecorder> { + val checkResult = lambdaRecorder> { when (it) { - "https://test.org" -> WellknownRetrieverResult.NotFound - "https://test.com" -> WellknownRetrieverResult.NotFound - "https://test.io" -> WellknownRetrieverResult.Success(aWellKnown()) - "https://test" -> WellknownRetrieverResult.NotFound + "https://test.org" -> Result.success(false) + "https://test.com" -> Result.success(false) + "https://test.io" -> Result.success(true) + "https://test" -> Result.success(false) else -> error("should not happen") } } - val fakeWellknownRetriever = FakeWellknownRetriever( - getWellKnownResult = getWellKnownResult, - ) + val fakeLoginCompatibilityChecker = FakeHomeServerLoginCompatibilityChecker(checkResult = checkResult) val presenter = SearchAccountProviderPresenter( - homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { @@ -127,7 +121,7 @@ class SearchAccountProviderPresenterTest { ) ) ) - getWellKnownResult.assertions().isCalledExactly(4) + checkResult.assertions().isCalledExactly(4) .withSequence( listOf(value("https://test.org")), listOf(value("https://test.com")), @@ -139,20 +133,18 @@ class SearchAccountProviderPresenterTest { @Test fun `present - enter text two results with wellknown`() = runTest { - val getWellKnownResult = lambdaRecorder> { + val checkResult = lambdaRecorder> { when (it) { - "https://test.org" -> WellknownRetrieverResult.Success(aWellKnown()) - "https://test.com" -> WellknownRetrieverResult.NotFound - "https://test.io" -> WellknownRetrieverResult.Success(aWellKnown()) - "https://test" -> WellknownRetrieverResult.NotFound + "https://test.org" -> Result.success(true) + "https://test.com" -> Result.success(false) + "https://test.io" -> Result.success(true) + "https://test" -> Result.success(false) else -> error("should not happen") } } - val fakeWellknownRetriever = FakeWellknownRetriever( - getWellKnownResult = getWellKnownResult, - ) + val fakeLoginCompatibilityChecker = FakeHomeServerLoginCompatibilityChecker(checkResult = checkResult) val presenter = SearchAccountProviderPresenter( - homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { @@ -179,7 +171,7 @@ class SearchAccountProviderPresenterTest { ) ) ) - getWellKnownResult.assertions().isCalledExactly(4) + checkResult.assertions().isCalledExactly(4) .withSequence( listOf(value("https://test.org")), listOf(value("https://test.com")), @@ -188,15 +180,4 @@ class SearchAccountProviderPresenterTest { ) } } - - private fun aWellKnown(): WellKnown { - return WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = A_HOMESERVER_URL - ), - identityServer = WellKnownBaseConfig( - baseURL = A_HOMESERVER_URL - ), - ) - } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/HomeServerLoginCompatibilityChecker.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/HomeServerLoginCompatibilityChecker.kt new file mode 100644 index 0000000000..aec1665455 --- /dev/null +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/HomeServerLoginCompatibilityChecker.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.api.auth + +/** + * Checks the homeserver's compatibility with Element X. + */ +interface HomeServerLoginCompatibilityChecker { + /** + * Performs the compatibility check given the homeserver's [url]. + * @return a `true` value if the homeserver is compatible, `false` if not, or a failure result if the check unexpectedly failed. + */ + suspend fun check(url: String): Result +} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt new file mode 100644 index 0000000000..8cfaca077b --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.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.libraries.matrix.impl.auth + +import dev.zacsweers.metro.AppScope +import dev.zacsweers.metro.ContributesBinding +import dev.zacsweers.metro.Inject +import io.element.android.libraries.core.extensions.runCatchingExceptions +import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker +import io.element.android.libraries.matrix.impl.ClientBuilderProvider +import timber.log.Timber + +@ContributesBinding(AppScope::class) +@Inject +class RustHomeServerLoginCompatibilityChecker( + private val clientBuilderProvider: ClientBuilderProvider, +) : HomeServerLoginCompatibilityChecker { + override suspend fun check(url: String): Result = runCatchingExceptions { + clientBuilderProvider.provide() + .inMemoryStore() + .serverNameOrHomeserverUrl(url) + .build() + .use { + it.homeserverLoginDetails() + } + .use { + Timber.d("Homeserver $url | OIDC: ${it.supportsOidcLogin()} | Password: ${it.supportsPasswordLogin()} | SSO: ${it.supportsSsoLogin()}") + it.supportsOidcLogin() || it.supportsPasswordLogin() + } + } +} diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt new file mode 100644 index 0000000000..4557d47f5b --- /dev/null +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt @@ -0,0 +1,54 @@ +/* + * 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.impl.auth + +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.impl.FakeClientBuilderProvider +import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClient +import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClientBuilder +import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiHomeserverLoginDetails +import kotlinx.coroutines.test.runTest +import org.junit.Ignore +import org.junit.Test + +@Ignore("JNA direct mapping has broken unit tests with FFI fakes") +class RustHomeserverLoginCompatibilityCheckerTest { + @Test + fun `check - is valid if it supports OIDC login`() = runTest { + val sut = createChecker { FakeFfiHomeserverLoginDetails(supportsOidcLogin = true) } + assertThat(sut.check("https://matrix.host.org").getOrNull()).isTrue() + } + + @Test + fun `check - is valid if it supports password login`() = runTest { + val sut = createChecker { FakeFfiHomeserverLoginDetails(supportsPasswordLogin = true) } + assertThat(sut.check("https://matrix.host.org").getOrNull()).isTrue() + } + + @Test + fun `check - is not valid if it only supports SSO login`() = runTest { + val sut = createChecker { FakeFfiHomeserverLoginDetails(supportsSsoLogin = true) } + assertThat(sut.check("https://matrix.host.org").getOrNull()).isFalse() + } + + @Test + fun `check - is not valid if fetching the data fails`() = runTest { + val sut = createChecker { error("Unexpected error!") } + assertThat(sut.check("https://matrix.host.org").isFailure).isTrue() + } + + private fun createChecker( + result: () -> FakeFfiHomeserverLoginDetails, + ) = RustHomeServerLoginCompatibilityChecker( + clientBuilderProvider = FakeClientBuilderProvider { + FakeFfiClientBuilder { + FakeFfiClient(homeserverLoginDetailsResult = result) + } + } + ) +} diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt index 85328a2d4d..7951309bcd 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiHomeserverLoginDetails.kt @@ -12,10 +12,12 @@ import org.matrix.rustcomponents.sdk.NoHandle class FakeFfiHomeserverLoginDetails( private val url: String = "https://example.org", - private val supportsPasswordLogin: Boolean = true, - private val supportsOidcLogin: Boolean = false + private val supportsPasswordLogin: Boolean = false, + private val supportsOidcLogin: Boolean = false, + private val supportsSsoLogin: Boolean = false, ) : HomeserverLoginDetails(NoHandle) { override fun url(): String = url override fun supportsOidcLogin(): Boolean = supportsOidcLogin override fun supportsPasswordLogin(): Boolean = supportsPasswordLogin + override fun supportsSsoLogin(): Boolean = supportsSsoLogin } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeHomeServerLoginCompatibilityChecker.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeHomeServerLoginCompatibilityChecker.kt new file mode 100644 index 0000000000..934784b684 --- /dev/null +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeHomeServerLoginCompatibilityChecker.kt @@ -0,0 +1,18 @@ +/* + * 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.test.auth + +import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker + +class FakeHomeServerLoginCompatibilityChecker( + private val checkResult: (String) -> Result, +) : HomeServerLoginCompatibilityChecker { + override suspend fun check(url: String): Result { + return checkResult(url) + } +} diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt index 1c5570db94..2a986fcc28 100644 --- a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt +++ b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/SessionWellknownRetriever.kt @@ -8,6 +8,5 @@ package io.element.android.libraries.wellknown.api interface SessionWellknownRetriever { - suspend fun getWellKnown(): WellknownRetrieverResult suspend fun getElementWellKnown(): WellknownRetrieverResult } diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellKnown.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellKnown.kt deleted file mode 100644 index 59f63d1655..0000000000 --- a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellKnown.kt +++ /dev/null @@ -1,17 +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.libraries.wellknown.api - -data class WellKnown( - val homeServer: WellKnownBaseConfig?, - val identityServer: WellKnownBaseConfig?, -) - -data class WellKnownBaseConfig( - val baseURL: String? -) diff --git a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt index 4675a0cb18..5c146fbbad 100644 --- a/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt +++ b/libraries/wellknown/api/src/main/kotlin/io/element/android/libraries/wellknown/api/WellknownRetriever.kt @@ -8,6 +8,5 @@ package io.element.android.libraries.wellknown.api interface WellknownRetriever { - suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult } diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt index ad463bd2d2..a4b394a427 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetriever.kt @@ -15,7 +15,6 @@ import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.exception.ClientException import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.SessionWellknownRetriever -import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import timber.log.Timber @@ -26,17 +25,6 @@ class DefaultSessionWellknownRetriever( ) : SessionWellknownRetriever { private val domain by lazy { matrixClient.userIdServerName() } - override suspend fun getWellKnown(): WellknownRetrieverResult { - val url = "https://$domain/.well-known/matrix/client" - return matrixClient - .getUrl(url) - .mapCatchingExceptions { - val data = String(it) - json().decodeFromString(data).map() - } - .toWellknownRetrieverResult() - } - override suspend fun getElementWellKnown(): WellknownRetrieverResult { val url = "https://$domain/.well-known/element/element.json" return matrixClient diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt index a6014f773c..1312436654 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/DefaultWellknownRetriever.kt @@ -13,7 +13,6 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.network.RetrofitFactory import io.element.android.libraries.wellknown.api.ElementWellKnown -import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import retrofit2.HttpException @@ -24,27 +23,6 @@ import java.net.HttpURLConnection class DefaultWellknownRetriever( private val retrofitFactory: RetrofitFactory, ) : WellknownRetriever { - override suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult { - return buildWellknownApi(baseUrl) - .map { wellknownApi -> - try { - val result = wellknownApi.getWellKnown().map() - WellknownRetrieverResult.Success(result) - } catch (e: Exception) { - Timber.e(e, "Failed to retrieve well-known data for $baseUrl") - if ((e as? HttpException)?.code() == HttpURLConnection.HTTP_NOT_FOUND) { - WellknownRetrieverResult.NotFound - } else { - WellknownRetrieverResult.Error(e) - } - } - } - .fold( - onSuccess = { it }, - onFailure = { WellknownRetrieverResult.Error(it as Exception) } - ) - } - override suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult { return buildWellknownApi(baseUrl) .map { wellknownApi -> diff --git a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/Mapper.kt b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/Mapper.kt index 169757caa9..3b705e09c8 100644 --- a/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/Mapper.kt +++ b/libraries/wellknown/impl/src/main/kotlin/io/element/android/libraries/wellknown/impl/Mapper.kt @@ -8,8 +8,6 @@ package io.element.android.libraries.wellknown.impl import io.element.android.libraries.wellknown.api.ElementWellKnown -import io.element.android.libraries.wellknown.api.WellKnown -import io.element.android.libraries.wellknown.api.WellKnownBaseConfig internal fun InternalElementWellKnown.map() = ElementWellKnown( registrationHelperUrl = registrationHelperUrl, @@ -17,12 +15,3 @@ internal fun InternalElementWellKnown.map() = ElementWellKnown( rageshakeUrl = rageshakeUrl, brandColor = brandColor, ) - -internal fun InternalWellKnown.map() = WellKnown( - homeServer = homeServer?.map(), - identityServer = identityServer?.map(), -) - -internal fun InternalWellKnownBaseConfig.map() = WellKnownBaseConfig( - baseURL = baseURL, -) diff --git a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt index 12b961ff9e..63dca38aac 100644 --- a/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt +++ b/libraries/wellknown/impl/src/test/kotlin/io/element/android/libraries/wellknown/impl/DefaultSessionWellknownRetrieverTest.kt @@ -12,8 +12,6 @@ import io.element.android.libraries.androidutils.json.DefaultJsonProvider import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.wellknown.api.ElementWellKnown -import io.element.android.libraries.wellknown.api.WellKnown -import io.element.android.libraries.wellknown.api.WellKnownBaseConfig import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value @@ -21,142 +19,6 @@ import kotlinx.coroutines.test.runTest import org.junit.Test class DefaultSessionWellknownRetrieverTest { - @Test - fun `get empty wellknown`() = runTest { - val getUrlLambda = lambdaRecorder> { - Result.success("{}".toByteArray()) - } - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = getUrlLambda, - ) - assertThat(sut.getWellKnown()).isEqualTo( - WellknownRetrieverResult.Success( - WellKnown( - homeServer = null, - identityServer = null, - ) - ) - ) - getUrlLambda.assertions().isCalledOnce() - .with(value("https://user.domain.org/.well-known/matrix/client")) - } - - @Test - fun `get wellknown with full content`() = runTest { - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = { - Result.success( - """{ - "m.homeserver": { - "base_url": "https://example.org" - }, - "m.identity_server": { - "base_url": "https://identity.example.org" - } - }""".trimIndent().toByteArray() - ) - } - ) - assertThat(sut.getWellKnown()).isEqualTo( - WellknownRetrieverResult.Success( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = "https://identity.example.org", - ), - ) - ) - ) - } - - @Test - fun `get wellknown with full content empty base_url`() = runTest { - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = { - Result.success( - """{ - "m.homeserver": { - "base_url": "https://example.org" - }, - "m.identity_server": {} - }""".trimIndent().toByteArray() - ) - } - ) - assertThat(sut.getWellKnown()).isEqualTo( - WellknownRetrieverResult.Success( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = null, - ), - ) - ) - ) - } - - @Test - fun `get wellknown with unknown key`() = runTest { - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = { - Result.success( - """{ - "m.homeserver": { - "base_url": "https://example.org" - }, - "m.identity_server": { - "base_url": "https://identity.example.org" - }, - "other": true - }""".trimIndent().toByteArray() - ) - }, - ) - assertThat(sut.getWellKnown()).isEqualTo( - WellknownRetrieverResult.Success( - WellKnown( - homeServer = WellKnownBaseConfig( - baseURL = "https://example.org", - ), - identityServer = WellKnownBaseConfig( - baseURL = "https://identity.example.org", - ), - ) - ) - ) - } - - @Test - fun `get wellknown json error`() = runTest { - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = { - Result.success( - """{ - "m.homeserver": { - "base_url": "https://example.org" - }, - error - }""".trimIndent().toByteArray() - ) - } - ) - assertThat(sut.getWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) - } - - @Test - fun `get wellknown network error`() = runTest { - val sut = createDefaultSessionWellknownRetriever( - getUrlLambda = { - Result.failure(AN_EXCEPTION) - } - ) - assertThat(sut.getWellKnown()).isInstanceOf(WellknownRetrieverResult.Error::class.java) - } - @Test fun `get empty element wellknown`() = runTest { val getUrlLambda = lambdaRecorder> { diff --git a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt index d90a02ac96..5ab66701be 100644 --- a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt +++ b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeSessionWellknownRetriever.kt @@ -9,18 +9,12 @@ package io.element.android.features.wellknown.test import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.SessionWellknownRetriever -import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.simulateLongTask class FakeSessionWellknownRetriever( - private val getWellKnownResult: () -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, private val getElementWellKnownResult: () -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, ) : SessionWellknownRetriever { - override suspend fun getWellKnown(): WellknownRetrieverResult = simulateLongTask { - getWellKnownResult() - } - override suspend fun getElementWellKnown(): WellknownRetrieverResult = simulateLongTask { getElementWellKnownResult() } diff --git a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt index 52bb1cfa4c..4c4a31a572 100644 --- a/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt +++ b/libraries/wellknown/test/src/main/kotlin/io/element/android/features/wellknown/test/FakeWellknownRetriever.kt @@ -8,19 +8,13 @@ package io.element.android.features.wellknown.test import io.element.android.libraries.wellknown.api.ElementWellKnown -import io.element.android.libraries.wellknown.api.WellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever import io.element.android.libraries.wellknown.api.WellknownRetrieverResult import io.element.android.tests.testutils.simulateLongTask class FakeWellknownRetriever( - private val getWellKnownResult: (String) -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, private val getElementWellKnownResult: (String) -> WellknownRetrieverResult = { WellknownRetrieverResult.NotFound }, ) : WellknownRetriever { - override suspend fun getWellKnown(baseUrl: String): WellknownRetrieverResult = simulateLongTask { - getWellKnownResult(baseUrl) - } - override suspend fun getElementWellKnown(baseUrl: String): WellknownRetrieverResult = simulateLongTask { getElementWellKnownResult(baseUrl) } From fb4114adad513789ffc74c01483b6eb65c3ff365 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 15:43:23 +0100 Subject: [PATCH 328/898] Revert "NotificationDataFactory: improve API" This reverts commit b0e5e6cc616a1561aa4e256821f67cc206ada6df. # Conflicts: # libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt --- .../notifications/NotificationDataFactory.kt | 32 ++++++++++++------- .../notifications/NotificationRenderer.kt | 16 +++------- .../NotificationDataFactoryTest.kt | 15 ++++++--- .../fake/FakeNotificationDataFactory.kt | 20 +++++++----- 4 files changed, 46 insertions(+), 37 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt index ab8406f1af..33b2df410c 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactory.kt @@ -28,26 +28,30 @@ import io.element.android.libraries.push.impl.notifications.model.SimpleNotifiab import io.element.android.services.toolbox.api.strings.StringProvider interface NotificationDataFactory { - suspend fun List.toNotifications( + suspend fun toNotifications( + messages: List, imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - fun List.toNotifications( + fun toNotifications( + invites: List, notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun List.toNotifications( + fun toNotifications( + simpleEvents: List, notificationAccountParams: NotificationAccountParams, ): List @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - fun List.toNotifications( + fun toNotifications( + fallback: List, notificationAccountParams: NotificationAccountParams, ): List @@ -68,11 +72,12 @@ class DefaultNotificationDataFactory( private val activeNotificationsProvider: ActiveNotificationsProvider, private val stringProvider: StringProvider, ) : NotificationDataFactory { - override suspend fun List.toNotifications( + override suspend fun toNotifications( + messages: List, imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List { - val messagesToDisplay = filterNot { it.canNotBeDisplayed() } + val messagesToDisplay = messages.filterNot { it.canNotBeDisplayed() } .groupBy { it.roomId } return messagesToDisplay.flatMap { (roomId, events) -> val roomName = events.lastOrNull()?.roomName ?: roomId.value @@ -109,10 +114,11 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + invites: List, notificationAccountParams: NotificationAccountParams, ): List { - return map { event -> + return invites.map { event -> OneShotNotification( tag = event.roomId.value, notification = notificationCreator.createRoomInvitationNotification(notificationAccountParams, event), @@ -125,10 +131,11 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + simpleEvents: List, notificationAccountParams: NotificationAccountParams, ): List { - return map { event -> + return simpleEvents.map { event -> OneShotNotification( tag = event.eventId.value, notification = notificationCreator.createSimpleEventNotification(notificationAccountParams, event), @@ -141,10 +148,11 @@ class DefaultNotificationDataFactory( @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + fallback: List, notificationAccountParams: NotificationAccountParams, ): List { - return map { event -> + return fallback.map { event -> OneShotNotification( tag = event.eventId.value, notification = notificationCreator.createFallbackNotification(notificationAccountParams, event), diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 9f24ccecb0..0cfe083caf 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -51,18 +51,10 @@ class NotificationRenderer( showSessionId = numberOfAccounts > 1, ) val groupedEvents = eventsToProcess.groupByType() - val roomNotifications = with(notificationDataFactory) { - groupedEvents.roomEvents.toNotifications(imageLoader, notificationAccountParams) - } - val invitationNotifications = with(notificationDataFactory) { - groupedEvents.invitationEvents.toNotifications(notificationAccountParams) - } - val simpleNotifications = with(notificationDataFactory) { - groupedEvents.simpleEvents.toNotifications(notificationAccountParams) - } - val fallbackNotifications = with(notificationDataFactory) { - groupedEvents.fallbackEvents.toNotifications(notificationAccountParams) - } + val roomNotifications = notificationDataFactory.toNotifications(groupedEvents.roomEvents, imageLoader, notificationAccountParams) + val invitationNotifications = notificationDataFactory.toNotifications(groupedEvents.invitationEvents, notificationAccountParams) + val simpleNotifications = notificationDataFactory.toNotifications(groupedEvents.simpleEvents, notificationAccountParams) + val fallbackNotifications = notificationDataFactory.toNotifications(groupedEvents.fallbackEvents, notificationAccountParams) val summaryNotification = notificationDataFactory.createSummaryNotification( roomNotifications = roomNotifications, invitationNotifications = invitationNotifications, diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt index 50e0b5dfb8..6971fcbc41 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotificationDataFactoryTest.kt @@ -55,7 +55,9 @@ class NotificationDataFactoryTest { aNotificationAccountParams(), AN_INVITATION_EVENT, ) - val result = listOf(AN_INVITATION_EVENT).toNotifications(aNotificationAccountParams()) + val roomInvitation = listOf(AN_INVITATION_EVENT) + val result = toNotifications(roomInvitation, aNotificationAccountParams()) + assertThat(result).isEqualTo( listOf( OneShotNotification( @@ -75,7 +77,7 @@ class NotificationDataFactoryTest { aNotificationAccountParams(), AN_INVITATION_EVENT, ) - val result = listOf(A_SIMPLE_EVENT).toNotifications(aNotificationAccountParams()) + val result = toNotifications(listOf(A_SIMPLE_EVENT), aNotificationAccountParams()) assertThat(result).containsExactly( OneShotNotification( notification = expectedNotification, @@ -109,7 +111,8 @@ class NotificationDataFactoryTest { threadId = null, ) val fakeImageLoader = FakeImageLoader() - val result = listOf(A_MESSAGE_EVENT).toNotifications( + val result = toNotifications( + messages = listOf(A_MESSAGE_EVENT), notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), @@ -125,7 +128,8 @@ class NotificationDataFactoryTest { fun `given a room with only redacted events when mapping to notification then is Empty`() = testWith(notificationDataFactory) { val redactedRoom = A_MESSAGE_EVENT.copy(isRedacted = true) val fakeImageLoader = FakeImageLoader() - val result = listOf(redactedRoom).toNotifications( + val result = toNotifications( + messages = listOf(redactedRoom), notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), @@ -164,7 +168,8 @@ class NotificationDataFactoryTest { ) val fakeImageLoader = FakeImageLoader() - val result = roomWithRedactedMessage.toNotifications( + val result = toNotifications( + messages = roomWithRedactedMessage, notificationAccountParams = aNotificationAccountParams( user = MatrixUser(A_SESSION_ID, A_SESSION_ID.value, MY_AVATAR_URL), ), diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt index 89326f5ad9..a897dbfc09 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/fake/FakeNotificationDataFactory.kt @@ -40,35 +40,39 @@ class FakeNotificationDataFactory( var fallbackEventToNotificationsResult: LambdaOneParamRecorder, List> = lambdaRecorder { _ -> emptyList() }, ) : NotificationDataFactory { - override suspend fun List.toNotifications( + override suspend fun toNotifications( + messages: List, imageLoader: ImageLoader, notificationAccountParams: NotificationAccountParams, ): List { - return messageEventToNotificationsResult(this, imageLoader, notificationAccountParams) + return messageEventToNotificationsResult(messages, imageLoader, notificationAccountParams) } @JvmName("toNotificationInvites") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + invites: List, notificationAccountParams: NotificationAccountParams, ): List { - return inviteToNotificationsResult(this) + return inviteToNotificationsResult(invites) } @JvmName("toNotificationSimpleEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + simpleEvents: List, notificationAccountParams: NotificationAccountParams, ): List { - return simpleEventToNotificationsResult(this) + return simpleEventToNotificationsResult(simpleEvents) } @JvmName("toNotificationFallbackEvents") @Suppress("INAPPLICABLE_JVM_NAME") - override fun List.toNotifications( + override fun toNotifications( + fallback: List, notificationAccountParams: NotificationAccountParams, ): List { - return fallbackEventToNotificationsResult(this) + return fallbackEventToNotificationsResult(fallback) } override fun createSummaryNotification( From 16fcc12e93e84915bf0eb85e7e7bbee847f957ac Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 15:45:08 +0100 Subject: [PATCH 329/898] Remove unused property --- .../impl/notifications/DefaultNotificationDrawerManager.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt index 1677072399..6d52cbfe13 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManager.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.push.impl.notifications import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.SingleIn -import io.element.android.libraries.core.log.logger.LoggerTag import io.element.android.libraries.di.annotations.AppCoroutineScope import io.element.android.libraries.matrix.api.MatrixClientProvider import io.element.android.libraries.matrix.api.core.EventId @@ -30,8 +29,6 @@ import io.element.android.services.appnavstate.api.currentSessionId import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -private val loggerTag = LoggerTag("DefaultNotificationDrawerManager", LoggerTag.NotificationLoggerTag) - /** * This class receives notification events as they arrive from the PushHandler calling [onNotifiableEventReceived] and * organise them in order to display them in the notification drawer. From bfc13c37a9fc044562137fa352dcf1668df8f193 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Apr 2025 14:04:21 +0200 Subject: [PATCH 330/898] Extract SaveChangesDialog to its own file --- .../impl/ChangeRolesView.kt | 5 +-- .../components/dialogs/SaveChangesDialog.kt | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt diff --git a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt index f9ebd75ca2..7468fd81a3 100644 --- a/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt +++ b/features/changeroommemberroles/impl/src/main/kotlin/io/element/android/features/changeroommemberroles/impl/ChangeRolesView.kt @@ -50,6 +50,7 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog +import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.components.Checkbox @@ -182,9 +183,7 @@ fun ChangeRolesView( confirmationDialog = { confirming -> when (confirming) { is AsyncAction.ConfirmingCancellation -> { - ConfirmationDialog( - title = stringResource(CommonStrings.dialog_unsaved_changes_title), - content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), + SaveChangesDialog( onSubmitClick = { state.eventSink(ChangeRolesEvent.Exit) }, onDismiss = { state.eventSink(ChangeRolesEvent.CloseDialog) } ) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt new file mode 100644 index 0000000000..e630636894 --- /dev/null +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt @@ -0,0 +1,39 @@ +/* + * 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.designsystem.components.dialogs + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.ui.strings.CommonStrings + +@Composable +fun SaveChangesDialog( + onSubmitClick: () -> Unit, + onDismiss: () -> Unit, + modifier: Modifier = Modifier, + title: String = stringResource(CommonStrings.dialog_unsaved_changes_title), + content: String = stringResource(CommonStrings.dialog_unsaved_changes_description_android), +) = ConfirmationDialog( + modifier = modifier, + title = title, + content = content, + onSubmitClick = onSubmitClick, + onDismiss = onDismiss, +) + +@PreviewsDayNight +@Composable +internal fun SaveChangeDialogPreview() = ElementPreview { + SaveChangesDialog( + onSubmitClick = {}, + onDismiss = {} + ) +} From 57f3182e7de4a5729933b41940be742d38a11fbc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Apr 2025 14:06:10 +0200 Subject: [PATCH 331/898] Use SaveChangesDialog --- .../android/features/poll/impl/create/CreatePollView.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollView.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollView.kt index ce6a8682b6..3bb8c459e9 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollView.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollView.kt @@ -35,6 +35,7 @@ import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.poll.impl.R import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog +import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -63,8 +64,7 @@ fun CreatePollView( val navBack = { state.eventSink(CreatePollEvents.ConfirmNavBack) } BackHandler(onBack = navBack) if (state.showBackConfirmation) { - ConfirmationDialog( - content = stringResource(id = R.string.screen_create_poll_cancel_confirmation_content_android), + SaveChangesDialog( onSubmitClick = { state.eventSink(CreatePollEvents.NavBack) }, onDismiss = { state.eventSink(CreatePollEvents.HideConfirmation) } ) From fad10f57565197bf678860750d5747ceb03e1528 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Apr 2025 14:45:09 +0200 Subject: [PATCH 332/898] Use SaveChangesDialog --- .../features/roomdetails/impl/edit/RoomDetailsEditView.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt index 89b7812cb2..b1e39508bd 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt @@ -37,7 +37,7 @@ import io.element.android.libraries.designsystem.components.async.AsyncActionVie import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarType import io.element.android.libraries.designsystem.components.button.BackButton -import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog +import io.element.android.libraries.designsystem.components.dialogs.SaveChangesDialog import io.element.android.libraries.designsystem.modifiers.clearFocusOnTap import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -152,9 +152,7 @@ fun RoomDetailsEditView( }, confirmationDialog = { if (state.saveAction == AsyncAction.ConfirmingCancellation) { - ConfirmationDialog( - title = stringResource(CommonStrings.dialog_unsaved_changes_title), - content = stringResource(CommonStrings.dialog_unsaved_changes_description_android), + SaveChangesDialog( onSubmitClick = { state.eventSink(RoomDetailsEditEvents.OnBackPress) }, onDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) } ) From dd328c5a0801c79234cefb9b81e35f3dbfb604cb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 4 Nov 2025 16:22:16 +0100 Subject: [PATCH 333/898] Use new SessionStore API --- .../libraries/push/impl/notifications/NotificationRenderer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt index 0cfe083caf..5da7389125 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationRenderer.kt @@ -44,7 +44,7 @@ class NotificationRenderer( ) { val color = enterpriseService.brandColorsFlow(currentUser.userId).first()?.toArgb() ?: NotificationConfig.NOTIFICATION_ACCENT_COLOR - val numberOfAccounts = sessionStore.getAllSessions().size + val numberOfAccounts = sessionStore.numberOfSessions() val notificationAccountParams = NotificationAccountParams( user = currentUser, color = color, From 0d055c3cd9438b58c9fef7442c9682dbb62a94b3 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Tue, 4 Nov 2025 15:31:36 +0000 Subject: [PATCH 334/898] Update screenshots --- .../features.poll.impl.create_CreatePollView_Day_2_en.png | 4 ++-- .../features.poll.impl.create_CreatePollView_Night_2_en.png | 4 ++-- ...ignsystem.components.dialogs_SaveChangeDialog_Day_0_en.png | 3 +++ ...nsystem.components.dialogs_SaveChangeDialog_Night_0_en.png | 3 +++ 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png index 4a2a7a2a97..12e42e376c 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:550ea0bbefea8fc1af9aed6bf9b8238547aba6d9bd670035b22c42e5e1788812 -size 39281 +oid sha256:657d1e0eff5254eb3d36a64212cca38ec129c240cbd61b8cfdeb8399a00a5251 +size 39103 diff --git a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png index f1cbbadd81..5d4488f53a 100644 --- a/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.poll.impl.create_CreatePollView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b511e657048cf668b48a135119ffce4449c99ea4c90065744d61a34502e75508 -size 36703 +oid sha256:3407623ce83d0c3f710ea45d693823d6125b1bc625c34e2922916110d8a2a442 +size 36717 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png new file mode 100644 index 0000000000..090d6dce7d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d89a6c9a49b2b0e4fa37e219cec8e0dbe90ed8ca6e71f0ec5e8788076f91526 +size 23679 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png new file mode 100644 index 0000000000..3963c95375 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e496c8d67a678a7d4c729a3368c145afa080252dd68708b1ba95d98706cd614c +size 22265 From cf011795bf8ec497ffdb6462cecfec3a9a932ac5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 20:25:56 +0000 Subject: [PATCH 335/898] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.11.4 (#5681) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d17795bcca..e8a0b2bea8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -177,7 +177,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.10.31" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.11.4" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } From 09aaab89d004a3fffb9665e6b71a42c993c3ba06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 02:42:27 +0000 Subject: [PATCH 336/898] fix(deps): update metro to v0.7.4 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8a0b2bea8..5cfc639d67 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ haze = "1.6.10" dependencyAnalysis = "3.4.1" # DI -metro = "0.7.3" +metro = "0.7.4" # Auto service autoservice = "1.1.1" From fb1e83fdf919350a04dbb8e66bba0237f8f0acbd Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 10:16:51 +0100 Subject: [PATCH 337/898] design: update DropdownMenu to better match figma --- .../theme/components/DropdownMenu.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DropdownMenu.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DropdownMenu.kt index 6dc681b0e1..77a8c514a5 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DropdownMenu.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DropdownMenu.kt @@ -10,8 +10,10 @@ package io.element.android.libraries.designsystem.theme.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.PopupProperties @@ -24,22 +26,24 @@ fun DropdownMenu( expanded: Boolean, onDismissRequest: () -> Unit, modifier: Modifier = Modifier, - // By default add a 16.dp offset to the menu - offset: DpOffset = DpOffset(x = 16.dp, y = 0.dp), + offset: DpOffset = DpOffset(x = 0.dp, y = 0.dp), properties: PopupProperties = PopupProperties(focusable = true), + minWidth: Dp = DropdownMenuDefaults.minWidth, content: @Composable ColumnScope.() -> Unit ) { - // Note: the internal shape corner radius should be 8dp, but there is a 4p value hardcoded in the internal Surface component androidx.compose.material3.DropdownMenu( expanded = expanded, onDismissRequest = onDismissRequest, modifier = modifier - .background(color = ElementTheme.colors.bgCanvasDefault) - .widthIn(min = minMenuWidth), + .background(color = ElementTheme.colors.bgCanvasDefaultLevel1) + .widthIn(min = minWidth), + shape = RoundedCornerShape(8.dp), offset = offset, properties = properties, content = content ) } -private val minMenuWidth = 200.dp +object DropdownMenuDefaults { + val minWidth = 200.dp +} From 849dfa4a5e376f11b5072e6f70c3af31a6cb62f1 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 10:21:09 +0100 Subject: [PATCH 338/898] design: PreferenceDropdown now uses DropdownMenu --- .../preferences/PreferenceDropdown.kt | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt index ebac860c7e..84b108aa7f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt @@ -10,14 +10,10 @@ package io.element.android.libraries.designsystem.components.preferences import androidx.annotation.DrawableRes -import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ExposedDropdownMenuBox -import androidx.compose.material3.ExposedDropdownMenuDefaults import androidx.compose.material3.MenuAnchorType import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -35,6 +31,7 @@ import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.preferences.components.preferenceIcon import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup +import io.element.android.libraries.designsystem.theme.components.DropdownMenu import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.ListItem @@ -118,27 +115,25 @@ private fun DropdownTrailingContent( onSelectOption: (T) -> Unit, modifier: Modifier = Modifier, ) { - ExposedDropdownMenuBox( - expanded = expanded, - onExpandedChange = onExpandedChange, + Row( modifier = modifier, + verticalAlignment = Alignment.CenterVertically, ) { - Row( - modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryNotEditable), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = selectedOption?.getText().orEmpty(), - maxLines = 1, - style = ElementTheme.typography.fontBodyMdRegular, - color = ElementTheme.colors.textSecondary, - ) - ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) - } - ExposedDropdownMenu( + Text( + text = selectedOption?.getText().orEmpty(), + maxLines = 1, + style = ElementTheme.typography.fontBodyMdRegular, + color = ElementTheme.colors.textSecondary, + ) + Icon( + imageVector = CompoundIcons.ChevronDown(), + contentDescription = null, + tint = ElementTheme.colors.iconSecondary, + ) + DropdownMenu( expanded = expanded, + minWidth = 0.dp, onDismissRequest = { onExpandedChange(false) }, - matchTextFieldWidth = false, ) { options.forEach { option -> DropdownMenuItem( @@ -149,11 +144,11 @@ private fun DropdownTrailingContent( ) }, trailingIcon = { - if(option == selectedOption){ + if (option == selectedOption) { Icon( imageVector = CompoundIcons.Check(), contentDescription = null, - tint = ElementTheme.colors.iconSuccessPrimary, + tint = ElementTheme.colors.iconAccentPrimary, ) } }, From f9f056bf85989e15d5164231183010be3a5c8168 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:00:13 +0100 Subject: [PATCH 339/898] Do not use the bastDescription but the cation for image/video/sticker because else the filename will be rendered in the notification and for media we do not want that. Also fixes the issue when images is not rendered on some system and so they can be empty notification. Closes #3945 --- .../DefaultNotifiableEventResolver.kt | 58 +++++++++++++++---- .../factories/NotificationCreator.kt | 50 +++++++++------- 2 files changed, 76 insertions(+), 32 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt index 481d354e8d..5e397c94d9 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotifiableEventResolver.kt @@ -8,7 +8,10 @@ package io.element.android.libraries.push.impl.notifications import android.content.Context +import android.graphics.ImageDecoder import android.net.Uri +import android.os.Build +import androidx.core.app.NotificationCompat import androidx.core.content.FileProvider import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.ContributesBinding @@ -138,7 +141,13 @@ class DefaultNotifiableEventResolver( is NotificationContent.MessageLike.RoomMessage -> { val showMediaPreview = client.mediaPreviewService.getMediaPreviewValue() == MediaPreviewValue.On val senderDisambiguatedDisplayName = getDisambiguatedDisplayName(content.senderId) - val messageBody = descriptionFromMessageContent(content, senderDisambiguatedDisplayName) + val imageMimeType = if (showMediaPreview) content.getImageMimetype() else null + val imageUriString = imageMimeType?.let { content.fetchImageIfPresent(client, imageMimeType)?.toString() } + val messageBody = descriptionFromMessageContent( + content = content, + senderDisambiguatedDisplayName = senderDisambiguatedDisplayName, + hasImageUri = imageUriString != null, + ) val notifiableMessageEvent = buildNotifiableMessageEvent( sessionId = userId, senderId = content.senderId, @@ -149,8 +158,8 @@ class DefaultNotifiableEventResolver( timestamp = this.timestamp, senderDisambiguatedDisplayName = senderDisambiguatedDisplayName, body = messageBody, - imageUriString = if (showMediaPreview) content.fetchImageIfPresent(client)?.toString() else null, - imageMimeType = if (showMediaPreview) content.getImageMimetype() else null, + imageUriString = imageUriString, + imageMimeType = imageMimeType.takeIf { imageUriString != null }, roomName = roomDisplayName, roomIsDm = isDm, roomAvatarPath = roomAvatarUrl, @@ -299,13 +308,18 @@ class DefaultNotifiableEventResolver( private fun descriptionFromMessageContent( content: NotificationContent.MessageLike.RoomMessage, senderDisambiguatedDisplayName: String, - ): String { + hasImageUri: Boolean, + ): String? { return when (val messageType = content.messageType) { is AudioMessageType -> messageType.bestDescription is VoiceMessageType -> stringProvider.getString(CommonStrings.common_voice_message) is EmoteMessageType -> "* $senderDisambiguatedDisplayName ${messageType.body}" is FileMessageType -> messageType.bestDescription - is ImageMessageType -> messageType.bestDescription + is ImageMessageType -> if (hasImageUri) { + messageType.caption + } else { + messageType.bestDescription + } is StickerMessageType -> messageType.bestDescription is NoticeMessageType -> messageType.body is TextMessageType -> messageType.toPlainText(permalinkParser = permalinkParser) @@ -326,14 +340,34 @@ class DefaultNotifiableEventResolver( } } - private suspend fun NotificationContent.MessageLike.RoomMessage.fetchImageIfPresent(client: MatrixClient): Uri? { + /** + * Fetch the image for message type, only if the mime type is supported, as recommended + * per [NotificationCompat.MessagingStyle.Message.setData] documentation. + * Then convert to a [Uri] accessible to the Notification Service. + */ + private suspend fun NotificationContent.MessageLike.RoomMessage.fetchImageIfPresent( + client: MatrixClient, + mimeType: String, + ): Uri? { val fileResult = when (val messageType = messageType) { - is ImageMessageType -> notificationMediaRepoFactory.create(client) - .getMediaFile( - mediaSource = messageType.source, - mimeType = messageType.info?.mimetype, - filename = messageType.filename, - ) + is ImageMessageType -> { + val isMimeTypeSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + ImageDecoder.isMimeTypeSupported(mimeType) + } else { + // Assume it's supported on old systems... + true + } + if (isMimeTypeSupported) { + notificationMediaRepoFactory.create(client).getMediaFile( + mediaSource = messageType.source, + mimeType = messageType.info?.mimetype, + filename = messageType.filename, + ) + } else { + Timber.tag(loggerTag.value).d("Mime type $mimeType not supported by the system") + null + } + } is VideoMessageType -> null // Use the thumbnail here? else -> null } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index efe54bd3d9..0dccdb46c2 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -431,27 +431,37 @@ class DefaultNotificationCreator( senderPerson ) else -> { - val message = MessagingStyle.Message( - event.body?.annotateForDebug(71), - event.timestamp, - senderPerson - ).also { message -> - event.imageUri?.let { - message.setData(event.imageMimeType ?: "image/", it) - } - message.extras.putString(MESSAGE_EVENT_ID, event.eventId.value) - } - addMessage(message) - - // Add additional message for captions - if (event.imageUri != null && event.body != null) { - addMessage( - MessagingStyle.Message( - event.body, - event.timestamp, - senderPerson, - ) + if (event.imageMimeType != null && event.imageUri != null) { + // Image case + val message = MessagingStyle.Message( + // This text will not be rendered, but some systems does not render the image + // if the text is null + stringProvider.getString(CommonStrings.common_image), + event.timestamp, + senderPerson, ) + .setData(event.imageMimeType, event.imageUri) + message.extras.putString(MESSAGE_EVENT_ID, event.eventId.value) + addMessage(message) + // Add additional message for captions + if (event.body != null) { + addMessage( + MessagingStyle.Message( + event.body.annotateForDebug(72), + event.timestamp, + senderPerson, + ) + ) + } + } else { + // Text case + val message = MessagingStyle.Message( + event.body?.annotateForDebug(71), + event.timestamp, + senderPerson + ) + message.extras.putString(MESSAGE_EVENT_ID, event.eventId.value) + addMessage(message) } } } From baa6dbd0c45648402414e3f62605f1d8a1ed1db4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:47:51 +0100 Subject: [PATCH 340/898] Fix test. --- .../DefaultNotificationDrawerManagerTest.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt index ff484df96f..0489b72dd3 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultNotificationDrawerManagerTest.kt @@ -12,7 +12,6 @@ import androidx.compose.ui.graphics.Color import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService -import io.element.android.libraries.matrix.test.AN_AVATAR_URL import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_SESSION_ID @@ -118,8 +117,11 @@ class DefaultNotificationDrawerManagerTest { } @Test - fun `when MatrixClient has no cached user name a fallback one is used to render the notification`() = runTest { - val matrixClient = FakeMatrixClient(userDisplayName = null) + fun `when MatrixClient has no cached user name and avatar, the profile is loaded to render the notification`() = runTest { + val matrixClient = FakeMatrixClient( + userDisplayName = null, + userAvatarUrl = null, + ) val matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) }) val messageCreator = FakeRoomGroupMessageCreator() val defaultNotificationDrawerManager = createDefaultNotificationDrawerManager( @@ -153,7 +155,7 @@ class DefaultNotificationDrawerManagerTest { any(), ), listOf( - value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value))), + value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = ""))), any(), any(), any(), @@ -161,7 +163,7 @@ class DefaultNotificationDrawerManagerTest { any(), ), listOf( - value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = A_SESSION_ID.value, avatarUrl = AN_AVATAR_URL))), + value(aNotificationAccountParams(user = aMatrixUser(id = A_SESSION_ID.value, displayName = null, avatarUrl = null))), any(), any(), any(), From 1675648be4ba1278f4ee523ebfe5753cd161efdc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:53:18 +0100 Subject: [PATCH 341/898] Setting version for the release 25.11.2 --- plugins/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt index 819554ae55..d82e203e9b 100644 --- a/plugins/src/main/kotlin/Versions.kt +++ b/plugins/src/main/kotlin/Versions.kt @@ -44,7 +44,7 @@ private const val versionMonth = 11 * Release number in the month. Value must be in [0,99]. * Do not update this value. it is updated by the release script. */ -private const val versionReleaseNumber = 1 +private const val versionReleaseNumber = 2 object Versions { /** From 8652eb6e831a15f582f85a823402b8a6e31c850d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:53:37 +0100 Subject: [PATCH 342/898] Adding fastlane file for version 25.11.2 --- fastlane/metadata/android/en-US/changelogs/202511020.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/202511020.txt diff --git a/fastlane/metadata/android/en-US/changelogs/202511020.txt b/fastlane/metadata/android/en-US/changelogs/202511020.txt new file mode 100644 index 0000000000..a4b397f1bb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/202511020.txt @@ -0,0 +1,2 @@ +Main changes in this version: bug fixes and improvements. +Full changelog: https://github.com/element-hq/element-x-android/releases \ No newline at end of file From 36a2ecff6676b23e6f095c6152e3db4c1e865d4a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:53:18 +0100 Subject: [PATCH 343/898] Setting version for the release 25.11.2 --- plugins/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt index 819554ae55..d82e203e9b 100644 --- a/plugins/src/main/kotlin/Versions.kt +++ b/plugins/src/main/kotlin/Versions.kt @@ -44,7 +44,7 @@ private const val versionMonth = 11 * Release number in the month. Value must be in [0,99]. * Do not update this value. it is updated by the release script. */ -private const val versionReleaseNumber = 1 +private const val versionReleaseNumber = 2 object Versions { /** From fb79421f4d8ebd3646bed8bb0b244def1941f23a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 11:53:37 +0100 Subject: [PATCH 344/898] Adding fastlane file for version 25.11.2 --- fastlane/metadata/android/en-US/changelogs/202511020.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/202511020.txt diff --git a/fastlane/metadata/android/en-US/changelogs/202511020.txt b/fastlane/metadata/android/en-US/changelogs/202511020.txt new file mode 100644 index 0000000000..a4b397f1bb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/202511020.txt @@ -0,0 +1,2 @@ +Main changes in this version: bug fixes and improvements. +Full changelog: https://github.com/element-hq/element-x-android/releases \ No newline at end of file From cdd6744135a87210ba48975fec9cd2febd408f2a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 12:48:47 +0100 Subject: [PATCH 345/898] Changelog for version 25.11.2 --- CHANGES.md | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 1ac0cd1124..28e774a8ff 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,86 @@ +Changes in Element X v25.11.2 +============================= + + + +## What's Changed +### ✨ Features +* Enable access to security and privacy by @bmarty in https://github.com/element-hq/element-x-android/pull/5566 +* Add ability to forward a media from the media viewer and the gallery by @bmarty in https://github.com/element-hq/element-x-android/pull/5622 +* Split notifications for messages in threads by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5595 +### 🙌 Improvements +* Enable `SyncNotificationsWithWorkManager` in nightly and debug builds by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5573 +* Confirm exit without saving change in room details edit screen by @bmarty in https://github.com/element-hq/element-x-android/pull/5618 +* Space : add view members entry by @ganfra in https://github.com/element-hq/element-x-android/pull/5619 +* Update notification sound by @bmarty in https://github.com/element-hq/element-x-android/pull/5667 +* Use the new notification sound only on debug and nightly build by @bmarty in https://github.com/element-hq/element-x-android/pull/5673 +* Make sure we know the session verification state before showing the options to verify the session by @bmarty in https://github.com/element-hq/element-x-android/pull/5677 +### 🐛 Bugfixes +* Improve how brand color is applied. by @bmarty in https://github.com/element-hq/element-x-android/pull/5584 +* Improve wellknown retrieval API by @bmarty in https://github.com/element-hq/element-x-android/pull/5587 +* Clearing the room list search clears the search term too by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5603 +* Delete pin code only when the last session is deleted by @bmarty in https://github.com/element-hq/element-x-android/pull/5600 +* Fix issues with WorkManager on Android 12 and below by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5606 +* Fix marking a room as read re-instantiates its timeline by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5628 +* Display only valid emojis in recent emoji list by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5612 +* Fix navigation issue. by @bmarty in https://github.com/element-hq/element-x-android/pull/5666 +* Fix forward events from media viewer from pinned media timeline by @bmarty in https://github.com/element-hq/element-x-android/pull/5669 +* Try fixing 'Timeline Event object has already been destroyed' by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5675 +* Use the SDK Client to check whether a homeserver is compatible by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5664 +### 🗣 Translations +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5610 +* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/5662 +### 🧱 Build +* Remove `@Inject`, not necessary anymore when class is annotated with `@ContributesBinding` by @bmarty in https://github.com/element-hq/element-x-android/pull/5589 +* Upgrade ktlint to 1.7.1 and ensure Renovate will upgrade the version by @bmarty in https://github.com/element-hq/element-x-android/pull/5638 +* Improve architecture around Nodes by @bmarty in https://github.com/element-hq/element-x-android/pull/5641 +* Move dependencies block out of the android block. by @bmarty in https://github.com/element-hq/element-x-android/pull/5674 +* Always use the handleEvent(s) function the same way. by @bmarty in https://github.com/element-hq/element-x-android/pull/5672 +### Dependency upgrades +* fix(deps): update metro to v0.7.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5576 +* fix(deps): update dependencyanalysis to v3.2.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5577 +* fix(deps): update dependency io.sentry:sentry-android to v8.24.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5586 +* fix(deps): update dependency androidx.work:work-runtime-ktx to v2.11.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5590 +* fix(deps): update dependency com.posthog:posthog-android to v3.25.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5594 +* fix(deps): update dependency com.google.crypto.tink:tink-android to v1.19.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5572 +* Update plugin sonarqube to v7.0.1.6134 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5605 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.28 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5620 +* fix(deps): update dependencyanalysis to v3.3.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5602 +* fix(deps): update dependency com.github.matrix-org:matrix-analytics-events to v0.29.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5621 +* fix(deps): update dependencyanalysis to v3.4.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5624 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.29 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5625 +* fix(deps): update dependency io.sentry:sentry-android to v8.25.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5629 +* fix(deps): update dependencyanalysis to v3.4.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5642 +* fix(deps): update dependency com.squareup.okhttp3:okhttp-bom to v5.3.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5644 +* chore(deps): update danger/danger-js action to v13.0.5 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5652 +* fix(deps): update dependency com.google.firebase:firebase-bom to v34.5.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5643 +* fix(deps): update firebaseappdistribution to v5.2.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5640 +* fix(deps): update metro to v0.7.3 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5663 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.10.31 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5657 +* Update GitHub Artifact Actions (major) by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5609 +* Update dependency io.element.android:element-call-embedded to v0.16.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5598 +* Update roborazzi to v1.51.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5676 +* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.11.4 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5681 +* fix(deps): update metro to v0.7.4 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/5683 +### Others +* Improve code around Element .well-known configuration by @bmarty in https://github.com/element-hq/element-x-android/pull/5565 +* misc: display offline banner for all LoggedIn screens by @ganfra in https://github.com/element-hq/element-x-android/pull/5574 +* Remove icon preview duplicate by @bmarty in https://github.com/element-hq/element-x-android/pull/5588 +* Remove application navigation state usage in the push module by @bmarty in https://github.com/element-hq/element-x-android/pull/5596 +* Design : update Home TopBar and RoomList Filters by @ganfra in https://github.com/element-hq/element-x-android/pull/5599 +* Add missing tests on the analytic modules by @bmarty in https://github.com/element-hq/element-x-android/pull/5604 +* design(space): let SpaceRoomItemView divider be full width by @ganfra in https://github.com/element-hq/element-x-android/pull/5597 +* Update notification style by @bmarty in https://github.com/element-hq/element-x-android/pull/5607 +* Improve how data is handled for the WorkManager. by @bmarty in https://github.com/element-hq/element-x-android/pull/5592 +* Revert "Make sure declining a call stops observing the ringing call state" by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5615 +* Misc : space flow inject room by @ganfra in https://github.com/element-hq/element-x-android/pull/5614 +* Enable `SyncNotificationsWithWorkManager` by default in release mode apps too by @jmartinesp in https://github.com/element-hq/element-x-android/pull/5646 +* Revert "Update notification sound" by @bmarty in https://github.com/element-hq/element-x-android/pull/5671 +* Introduce new query to count accounts by @bmarty in https://github.com/element-hq/element-x-android/pull/5678 + + +**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v25.11.0...v25.11.2 + Changes in Element X v25.11.0 ============================= From 288171ba902b8deab3ce69aff5ff52d443c6febd Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 14:42:34 +0100 Subject: [PATCH 346/898] change(roles and permissions): improve the flow --- .../features/home/impl/HomeFlowNode.kt | 7 +- .../api/ChangeRoomMemberRolesEntryPoint.kt | 4 +- .../impl/RolesAndPermissionsFlowNode.kt | 77 +++++++++++-------- .../permissions/ChangeRoomPermissionsNode.kt | 9 ++- .../permissions/ChangeRoomPermissionsView.kt | 20 ++--- .../impl/roles/ChangeRolesNode.kt | 9 ++- .../impl/roles/ChangeRolesPresenter.kt | 11 ++- .../impl/roles/ChangeRolesView.kt | 19 +---- .../roles/ChangeRoomMemberRolesRootNode.kt | 5 +- .../impl/roles/ChangeRolesViewTest.kt | 3 - .../FakeChangeRoomMemberRolesEntryPoint.kt | 6 +- .../roomdetails/impl/RoomDetailsFlowNode.kt | 6 +- .../impl/DefaultRoomDetailsEntryPointTest.kt | 2 +- 13 files changed, 93 insertions(+), 85 deletions(-) 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 cf1d9e829d..037204bac6 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 @@ -40,7 +40,6 @@ import io.element.android.features.logout.api.direct.DirectLogoutView import io.element.android.features.reportroom.api.ReportRoomEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType -import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.libraries.architecture.BackstackView import io.element.android.libraries.architecture.BaseFlowNode import io.element.android.libraries.architecture.appyx.launchMolecule @@ -94,10 +93,12 @@ class HomeFlowNode( changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy, -> commonLifecycle.coroutineScope.launch { - changeRoomMemberRolesNode.waitForRoleChanged() + val isNewOwnerSelected = changeRoomMemberRolesNode.waitForCompletion() withContext(NonCancellable) { backstack.pop() - onNewOwnersSelected(changeRoomMemberRolesNode.roomId) + if(isNewOwnerSelected) { + onNewOwnersSelected(changeRoomMemberRolesNode.roomId) + } } } } diff --git a/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt index 0d93632699..52f0c7a7ba 100644 --- a/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt @@ -24,11 +24,11 @@ fun interface ChangeRoomMemberRolesEntryPoint : FeatureEntryPoint { interface NodeProxy { val roomId: RoomId - suspend fun waitForRoleChanged() + suspend fun waitForCompletion(): Boolean } } -enum class ChangeRoomMemberRolesListType : NodeInputs { +enum class ChangeRoomMemberRolesListType { SelectNewOwnersWhenLeaving, Admins, Moderators diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt index 81ef3b3b1e..0c18a3c7a5 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt @@ -8,8 +8,11 @@ package io.element.android.features.rolesandpermissions.impl import android.os.Parcelable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.lifecycle.coroutineScope import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node @@ -20,15 +23,18 @@ import com.bumble.appyx.navmodel.backstack.operation.push import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode -import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.features.rolesandpermissions.impl.permissions.ChangeRoomPermissionsNode +import io.element.android.features.rolesandpermissions.impl.roles.ChangeRolesNode import io.element.android.features.rolesandpermissions.impl.root.RolesAndPermissionsNode 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.designsystem.components.async.AsyncIndicator +import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost +import io.element.android.libraries.designsystem.components.async.AsyncIndicatorState import io.element.android.libraries.di.RoomScope -import io.element.android.libraries.matrix.api.room.JoinedRoom +import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize @@ -37,11 +43,9 @@ import kotlinx.parcelize.Parcelize class RolesAndPermissionsFlowNode( @Assisted buildContext: BuildContext, @Assisted plugins: List, - private val joinedRoom: JoinedRoom, - private val changeRoomMemberRolesEntryPoint: ChangeRoomMemberRolesEntryPoint, ) : BaseFlowNode( backstack = BackStack( - initialElement = NavTarget.AdminSettings, + initialElement = NavTarget.Root, savedStateMap = buildContext.savedStateMap, ), buildContext = buildContext, @@ -49,38 +53,49 @@ class RolesAndPermissionsFlowNode( ) { sealed interface NavTarget : Parcelable { @Parcelize - data object AdminSettings : NavTarget + data object Root : NavTarget @Parcelize - data object AdminList : NavTarget + data object ChangeAdmins : NavTarget @Parcelize - data object ModeratorList : NavTarget + data object ChangeModerators : NavTarget @Parcelize data object ChangeRoomPermissions: NavTarget } + private val asyncIndicatorState = AsyncIndicatorState() + override fun onBuilt() { super.onBuilt() - whenChildAttached { lifecycle, node: ChangeRoomMemberRolesEntryPoint.NodeProxy -> + whenChildAttached { lifecycle, node: ChangeRolesNode -> lifecycle.coroutineScope.launch { - node.waitForRoleChanged() - backstack.pop() + val changesSaved = node.waitForCompletion() + onChangeComplete(changesSaved) + } + } + } + + private fun onChangeComplete(changesSaved: Boolean) { + backstack.pop() + if (changesSaved) { + asyncIndicatorState.enqueue(durationMs = AsyncIndicator.DURATION_SHORT) { + AsyncIndicator.Custom(text = stringResource(CommonStrings.common_saved_changes)) } } } override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { return when (navTarget) { - is NavTarget.AdminSettings -> { + is NavTarget.Root -> { val callback = object : RolesAndPermissionsNode.Callback { override fun openAdminList() { - backstack.push(NavTarget.AdminList) + backstack.push(NavTarget.ChangeAdmins) } override fun openModeratorList() { - backstack.push(NavTarget.ModeratorList) + backstack.push(NavTarget.ChangeModerators) } override fun openEditPermissions() { @@ -93,30 +108,32 @@ class RolesAndPermissionsFlowNode( plugins = listOf(callback), ) } - is NavTarget.AdminList -> { - changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, - buildContext = buildContext, - room = joinedRoom, - listType = ChangeRoomMemberRolesListType.Admins, - ) + is NavTarget.ChangeAdmins -> { + val inputs = ChangeRolesNode.Inputs(ChangeRoomMemberRolesListType.Admins) + createNode(buildContext = buildContext, plugins = listOf(inputs)) } - is NavTarget.ModeratorList -> { - changeRoomMemberRolesEntryPoint.createNode( - parentNode = this, - buildContext = buildContext, - room = joinedRoom, - listType = ChangeRoomMemberRolesListType.Moderators, - ) + is NavTarget.ChangeModerators -> { + val inputs = ChangeRolesNode.Inputs(ChangeRoomMemberRolesListType.Moderators) + createNode(buildContext = buildContext, plugins = listOf(inputs)) } is NavTarget.ChangeRoomPermissions -> { - createNode(buildContext = buildContext) + val callback = object : ChangeRoomPermissionsNode.Callback { + override fun onComplete(changesSaved: Boolean) { + onChangeComplete(changesSaved) + } + } + createNode(buildContext = buildContext, plugins = listOf(callback)) } } } + + @Composable override fun View(modifier: Modifier) { - BackstackView() + Box(modifier = modifier) { + BackstackView() + AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState) + } } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt index b8261abd89..b53938914d 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt @@ -15,6 +15,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.RoomScope @ContributesNode(RoomScope::class) @@ -25,13 +26,19 @@ class ChangeRoomPermissionsNode( private val presenter: ChangeRoomPermissionsPresenter, ) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun onComplete(changesSaved: Boolean) + } + + private val callback: Callback = callback() + @Composable override fun View(modifier: Modifier) { val state = presenter.present() ChangeRoomPermissionsView( modifier = modifier, state = state, - onBackClick = this::navigateUp, + onComplete = callback::onComplete, ) } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index 85a75f9f35..0fc022e979 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -16,26 +16,17 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.PreviewParameter -import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.rolesandpermissions.impl.R -import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.components.async.AsyncActionView import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.components.dialogs.ConfirmationDialog -import io.element.android.libraries.designsystem.components.list.ListItemContent import io.element.android.libraries.designsystem.components.preferences.PreferenceDropdown import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight -import io.element.android.libraries.designsystem.theme.components.IconSource -import io.element.android.libraries.designsystem.theme.components.ListItem -import io.element.android.libraries.designsystem.theme.components.ListItemStyle import io.element.android.libraries.designsystem.theme.components.ListSectionHeader import io.element.android.libraries.designsystem.theme.components.Scaffold -import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.designsystem.theme.components.TopAppBar -import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.toImmutableList @@ -43,7 +34,7 @@ import kotlinx.collections.immutable.toImmutableList @Composable fun ChangeRoomPermissionsView( state: ChangeRoomPermissionsState, - onBackClick: () -> Unit, + onComplete: (Boolean) -> Unit, modifier: Modifier = Modifier, ) { BackHandler { @@ -74,7 +65,7 @@ fun ChangeRoomPermissionsView( ) { state.itemsBySection.onEachIndexed { index, (section, items) -> item { - ListSectionHeader(titleForSection(section), hasDivider = index>0) + ListSectionHeader(titleForSection(section), hasDivider = index > 0) } for (permissionType in items) { item { @@ -99,13 +90,13 @@ fun ChangeRoomPermissionsView( AsyncActionView( async = state.saveAction, - onSuccess = { onBackClick() }, + onSuccess = { onComplete(true) }, onErrorDismiss = { state.eventSink(ChangeRoomPermissionsEvent.ResetPendingActions) } ) AsyncActionView( async = state.confirmExitAction, - onSuccess = { onBackClick() }, + onSuccess = { onComplete(false) }, confirmationDialog = { ConfirmationDialog( title = stringResource(R.string.screen_room_change_role_unsaved_changes_title), @@ -119,6 +110,7 @@ fun ChangeRoomPermissionsView( onErrorDismiss = {}, ) } + @Composable private fun titleForSection(section: RoomPermissionsSection): String = when (section) { RoomPermissionsSection.RoomDetails -> stringResource(R.string.screen_room_change_permissions_room_details) @@ -144,7 +136,7 @@ internal fun ChangeRoomPermissionsViewPreview(@PreviewParameter(ChangeRoomPermis ElementPreview { ChangeRoomPermissionsView( state = state, - onBackClick = {}, + onComplete = {}, ) } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt index 915b129c84..01eb423fb7 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesNode.kt @@ -21,6 +21,7 @@ import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRoles 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.core.bool.orFalse import io.element.android.libraries.di.RoomScope import io.element.android.libraries.matrix.api.room.RoomMember import kotlinx.coroutines.flow.first @@ -40,17 +41,17 @@ class ChangeRolesNode( private val presenter = presenterFactory.create(inputs.listType.toRoomMemberRole()) private val stateFlow = launchMolecule { presenter.present() } - suspend fun waitForRoleChanged() { - stateFlow.first { it.savingState.isSuccess() } + suspend fun waitForCompletion(): Boolean { + val successState = stateFlow.first { it.savingState.isSuccess() } + return successState.savingState.dataOrNull().orFalse() } @Composable override fun View(modifier: Modifier) { val state by stateFlow.collectAsState() ChangeRolesView( - modifier = modifier, state = state, - navigateUp = this::navigateUp, + modifier = modifier, ) } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt index 07a0c5a873..fb97080221 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt @@ -27,6 +27,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.designsystem.theme.components.SearchBarResultState +import io.element.android.libraries.di.annotations.SessionCoroutineScope import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.RoomMember @@ -41,10 +42,12 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext @AssistedInject class ChangeRolesPresenter( @@ -214,9 +217,13 @@ class ChangeRolesPresenter( saveState.value = AsyncAction.Failure(it) } .onSuccess { - saveState.value = AsyncAction.Success(true) // Asynchronously reload the room members - launch { room.updateMembers() } + launch { + withContext(NonCancellable) { + room.updateMembers() + } + } + saveState.value = AsyncAction.Success(true) } } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt index 16c6965f18..b74f7e2067 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -42,7 +40,6 @@ import io.element.android.compound.theme.ElementTheme import io.element.android.features.rolesandpermissions.impl.R import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.designsystem.components.async.AsyncActionView -import io.element.android.libraries.designsystem.components.async.AsyncIndicator import io.element.android.libraries.designsystem.components.async.AsyncIndicatorHost import io.element.android.libraries.designsystem.components.async.rememberAsyncIndicatorState import io.element.android.libraries.designsystem.components.avatar.Avatar @@ -77,10 +74,8 @@ import kotlinx.collections.immutable.ImmutableList @Composable fun ChangeRolesView( state: ChangeRolesState, - navigateUp: () -> Unit, modifier: Modifier = Modifier, ) { - val latestNavigateUp by rememberUpdatedState(newValue = navigateUp) BackHandler(enabled = !state.isSearchActive) { state.eventSink(ChangeRolesEvent.Exit) } @@ -168,18 +163,9 @@ fun ChangeRolesView( val asyncIndicatorState = rememberAsyncIndicatorState() AsyncIndicatorHost(modifier = Modifier.statusBarsPadding(), asyncIndicatorState) - AsyncActionView( async = state.savingState, - onSuccess = { changeSaved -> - if (changeSaved) { - asyncIndicatorState.enqueue(durationMs = AsyncIndicator.DURATION_SHORT) { - AsyncIndicator.Custom(text = stringResource(CommonStrings.common_saved_changes)) - } - } else { - latestNavigateUp() - } - }, + onSuccess = {}, confirmationDialog = { confirming -> when (confirming) { is AsyncAction.ConfirmingCancellation -> { @@ -416,8 +402,7 @@ private fun MemberRow( internal fun ChangeRolesViewPreview(@PreviewParameter(ChangeRolesStateProvider::class) state: ChangeRolesState) { ElementPreview { ChangeRolesView( - state = state, - navigateUp = {}, + state = state ) } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt index 0f588667c6..aad691809f 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRoomMemberRolesRootNode.kt @@ -21,7 +21,6 @@ import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.appnav.di.RoomGraphFactory import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint -import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.architecture.NodeInputs import io.element.android.libraries.architecture.createNode @@ -71,7 +70,7 @@ class ChangeRoomMemberRolesRootNode( override val roomId: RoomId = inputs.joinedRoom.roomId - override suspend fun waitForRoleChanged() { - waitForChildAttached().waitForRoleChanged() + override suspend fun waitForCompletion(): Boolean { + return waitForChildAttached().waitForCompletion() } } diff --git a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt index dc26741587..d0e6d120bd 100644 --- a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesViewTest.kt @@ -23,7 +23,6 @@ import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.toMatrixUser import io.element.android.libraries.matrix.ui.components.aMatrixUserList import io.element.android.libraries.ui.strings.CommonStrings -import io.element.android.tests.testutils.EnsureNeverCalled import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn @@ -306,12 +305,10 @@ class ChangeRolesViewTest { private fun AndroidComposeTestRule.setChangeRolesContent( state: ChangeRolesState, - onBackClick: () -> Unit = EnsureNeverCalled(), ) { setContent { ChangeRolesView( state = state, - navigateUp = onBackClick, ) } } diff --git a/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt index a2f9ac0253..de447cef3c 100644 --- a/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeChangeRoomMemberRolesEntryPoint.kt @@ -5,16 +5,16 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.rolesandpermissions.test +package io.element.android.features.changeroommemberroles.test import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node -import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint +import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesEntryPoint import io.element.android.features.rolesandpermissions.api.ChangeRoomMemberRolesListType import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.tests.testutils.lambda.lambdaError -class FakeChangeRoomMemberRolesEntryPoint : RolesAndPermissionsEntryPoint { +class FakeChangeRoomMemberRolesEntryPoint : ChangeRoomMemberRolesEntryPoint { override fun createNode( parentNode: Node, buildContext: BuildContext, 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 20e783fb6b..39c555be20 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 @@ -157,10 +157,12 @@ class RoomDetailsFlowNode( changeRoomMemberRolesNode: ChangeRoomMemberRolesEntryPoint.NodeProxy, -> commonLifecycle.coroutineScope.launch { - changeRoomMemberRolesNode.waitForRoleChanged() + val isNewOwnerSelected = changeRoomMemberRolesNode.waitForCompletion() withContext(NonCancellable) { backstack.pop() - roomDetailsNode.onNewOwnersSelected() + if (isNewOwnerSelected) { + roomDetailsNode.onNewOwnersSelected() + } } } } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index ad939734df..ebe92332e8 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -12,7 +12,7 @@ import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.call.test.FakeElementCallEntryPoint -import io.element.android.features.rolesandpermissions.test.FakeChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.test.FakeChangeRoomMemberRolesEntryPoint import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint import io.element.android.features.messages.test.FakeMessagesEntryPoint import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint From fca62a333efa2beabae404d892da360ece332ebd Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 15:31:48 +0100 Subject: [PATCH 347/898] change(roles and permissions): clean code --- .../features/home/impl/HomeFlowNode.kt | 2 +- .../api/ChangeRoomMemberRolesEntryPoint.kt | 1 - .../impl/RolesAndPermissionsFlowNode.kt | 5 +--- .../permissions/ChangeRoomPermissionsNode.kt | 1 - .../ChangeRoomPermissionsPresenter.kt | 24 ++++++++++++------- .../permissions/ChangeRoomPermissionsState.kt | 10 ++++---- .../impl/roles/ChangeRolesPresenter.kt | 1 - .../preferences/PreferenceDropdown.kt | 1 - 8 files changed, 22 insertions(+), 23 deletions(-) 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 037204bac6..553a60a185 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 @@ -96,7 +96,7 @@ class HomeFlowNode( val isNewOwnerSelected = changeRoomMemberRolesNode.waitForCompletion() withContext(NonCancellable) { backstack.pop() - if(isNewOwnerSelected) { + if (isNewOwnerSelected) { onNewOwnersSelected(changeRoomMemberRolesNode.roomId) } } diff --git a/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt index 52f0c7a7ba..5bc4bbfbdd 100644 --- a/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt +++ b/features/rolesandpermissions/api/src/main/kotlin/io/element/android/features/rolesandpermissions/api/ChangeRoomMemberRolesEntryPoint.kt @@ -10,7 +10,6 @@ package io.element.android.features.rolesandpermissions.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 diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt index 0c18a3c7a5..17453e4451 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/RolesAndPermissionsFlowNode.kt @@ -62,7 +62,7 @@ class RolesAndPermissionsFlowNode( data object ChangeModerators : NavTarget @Parcelize - data object ChangeRoomPermissions: NavTarget + data object ChangeRoomPermissions : NavTarget } private val asyncIndicatorState = AsyncIndicatorState() @@ -101,7 +101,6 @@ class RolesAndPermissionsFlowNode( override fun openEditPermissions() { backstack.push(NavTarget.ChangeRoomPermissions) } - } createNode( buildContext = buildContext, @@ -127,8 +126,6 @@ class RolesAndPermissionsFlowNode( } } - - @Composable override fun View(modifier: Modifier) { Box(modifier = modifier) { diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt index b53938914d..81716ab8c4 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsNode.kt @@ -25,7 +25,6 @@ class ChangeRoomPermissionsNode( @Assisted plugins: List, private val presenter: ChangeRoomPermissionsPresenter, ) : Node(buildContext, plugins = plugins) { - interface Callback : Plugin { fun onComplete(changesSaved: Boolean) } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt index e073a48171..a6d4eeefd4 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt @@ -24,7 +24,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.services.analytics.api.AnalyticsService import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -51,14 +51,22 @@ class ChangeRoomPermissionsPresenter( ) } - internal fun buildItems(forSpace: Boolean) = persistentMapOf( - RoomPermissionsSection.RoomDetails to itemsForSection(RoomPermissionsSection.RoomDetails), - RoomPermissionsSection.MessagesAndContent to itemsForSection(RoomPermissionsSection.MessagesAndContent), - RoomPermissionsSection.MembershipModeration to itemsForSection(RoomPermissionsSection.MembershipModeration), - ) + private fun RoomPermissionsSection.shouldShow(isSpace: Boolean): Boolean { + return when (this) { + RoomPermissionsSection.RoomDetails -> true + RoomPermissionsSection.MembershipModeration -> true + RoomPermissionsSection.MessagesAndContent -> !isSpace + } + } + + internal fun buildItems(isSpace: Boolean) = + RoomPermissionsSection.entries + .filter { section -> section.shouldShow(isSpace) } + .associateWith { itemsForSection(it) } + .toImmutableMap() } - private val items = buildItems(forSpace = room.info().isSpace) + private val itemsBySection = buildItems(isSpace = room.info().isSpace) private var initialPermissions by mutableStateOf(null) private var currentPermissions by mutableStateOf(null) @@ -112,7 +120,7 @@ class ChangeRoomPermissionsPresenter( } return ChangeRoomPermissionsState( currentPermissions = currentPermissions, - itemsBySection = items, + itemsBySection = itemsBySection, hasChanges = hasChanges, saveAction = saveAction, confirmExitAction = confirmExitAction, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt index e91dd9fcb6..b1032e5fac 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt @@ -25,9 +25,9 @@ data class ChangeRoomPermissionsState( val saveAction: AsyncAction, val confirmExitAction: AsyncAction, val eventSink: (ChangeRoomPermissionsEvent) -> Unit, -){ +) { fun selectedRoleForType(type: RoomPermissionType): SelectableRole? { - if(currentPermissions == null) return null + if (currentPermissions == null) return null val role = when (type) { RoomPermissionType.BAN -> RoomMember.Role.forPowerLevel(currentPermissions.ban) RoomPermissionType.INVITE -> RoomMember.Role.forPowerLevel(currentPermissions.invite) @@ -38,14 +38,13 @@ data class ChangeRoomPermissionsState( RoomPermissionType.ROOM_AVATAR -> RoomMember.Role.forPowerLevel(currentPermissions.roomAvatar) RoomPermissionType.ROOM_TOPIC -> RoomMember.Role.forPowerLevel(currentPermissions.roomTopic) } - return when(role){ + return when (role) { is RoomMember.Role.Owner, RoomMember.Role.Admin -> SelectableRole.Admin RoomMember.Role.Moderator -> SelectableRole.Moderator RoomMember.Role.User -> SelectableRole.Everyone } } - } enum class RoomPermissionsSection { @@ -54,7 +53,7 @@ enum class RoomPermissionsSection { MembershipModeration, } -enum class SelectableRole: DropdownOption { +enum class SelectableRole : DropdownOption { Admin { @Composable @ReadOnlyComposable @@ -72,7 +71,6 @@ enum class SelectableRole: DropdownOption { } } - enum class RoomPermissionType { BAN, INVITE, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt index fb97080221..e2049336a2 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt @@ -27,7 +27,6 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.designsystem.theme.components.SearchBarResultState -import io.element.android.libraries.di.annotations.SessionCoroutineScope import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.RoomMember diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt index 84b108aa7f..389dc6c15b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.MenuAnchorType import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf From f4ef9a0545b2f113e3b7f8d5dc277ae3ab084734 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 15:42:59 +0100 Subject: [PATCH 348/898] quality: use callback() method in nodes --- .../android/features/space/impl/leave/LeaveSpaceNode.kt | 4 ++-- .../android/features/space/impl/settings/SpaceSettingsNode.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt index 6ba86481fe..6eaa5d4e4a 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceNode.kt @@ -13,11 +13,11 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.space.impl.di.SpaceFlowScope +import io.element.android.libraries.architecture.callback import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.room.JoinedRoom @@ -38,7 +38,7 @@ class LeaveSpaceNode( private val leaveSpaceHandle = matrixClient.spaceService.getLeaveSpaceHandle(room.roomId) private val presenter: LeaveSpacePresenter = presenterFactory.create(leaveSpaceHandle) - private val callback = plugins().single() + private val callback: Callback = callback() override fun onBuilt() { super.onBuilt() diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt index 9b81272153..ea2e07db77 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/settings/SpaceSettingsNode.kt @@ -14,12 +14,12 @@ import androidx.compose.ui.Modifier import com.bumble.appyx.core.modality.BuildContext import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.plugin.Plugin -import com.bumble.appyx.core.plugin.plugins import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode import io.element.android.features.space.impl.di.SpaceFlowScope import io.element.android.libraries.architecture.appyx.launchMolecule +import io.element.android.libraries.architecture.callback @ContributesNode(SpaceFlowScope::class) @AssistedInject @@ -38,7 +38,7 @@ class SpaceSettingsNode( fun startLeaveSpaceFlow() } - private val callback = plugins().single() + private val callback: Callback = callback() private val stateFlow = launchMolecule { presenter.present() } @Composable From 5f007fd50c2d9309036cfad91b48e695a1da763f Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 17:54:02 +0100 Subject: [PATCH 349/898] quality(roles and permissions): fix tests --- .../permissions/ChangeRoomPermissionsView.kt | 1 + .../ChangeRoomPermissionsPresenterTest.kt} | 87 +++++++------------ .../ChangeRoomPermissionsViewTest.kt} | 73 +++++++--------- .../root}/RolesAndPermissionPresenterTest.kt | 2 +- .../impl/root}/RolesAndPermissionsViewTest.kt | 20 ++--- 5 files changed, 70 insertions(+), 113 deletions(-) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenterTest.kt} (79%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsViewTest.kt => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsViewTest.kt} (66%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionPresenterTest.kt (98%) rename features/{roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions => rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root}/RolesAndPermissionsViewTest.kt (89%) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index 0fc022e979..babe682717 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -74,6 +74,7 @@ fun ChangeRoomPermissionsView( selectedOption = state.selectedRoleForType(permissionType), options = SelectableRole.entries.toImmutableList(), onSelectOption = { role -> + println("Selected $role for $permissionType") state.eventSink( ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction( action = permissionType, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenterTest.kt similarity index 79% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenterTest.kt index c59931140a..e19291cd2b 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow @@ -17,7 +17,6 @@ import im.vector.app.features.analytics.plan.RoomModeration import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember.Role.Admin import io.element.android.libraries.matrix.api.room.RoomMember.Role.Moderator -import io.element.android.libraries.matrix.api.room.RoomMember.Role.User import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom @@ -26,19 +25,17 @@ import io.element.android.services.analytics.test.FakeAnalyticsService import kotlinx.coroutines.test.runTest import org.junit.Test -class ChangeBaseRoomPermissionsPresenterTest { +class ChangeRoomPermissionsPresenterTest { @Test fun `present - initial state`() = runTest { - val section = ChangeRoomPermissionsSection.RoomDetails - val presenter = createChangeRoomPermissionsPresenter(section = section) + val presenter = createChangeRoomPermissionsPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { // Initial state, no permissions loaded awaitItem().run { - assertThat(this.section).isEqualTo(section) assertThat(this.currentPermissions).isNull() - assertThat(this.items).isNotEmpty() + assertThat(this.itemsBySection).isNotEmpty() assertThat(this.hasChanges).isFalse() assertThat(this.saveAction).isEqualTo(AsyncAction.Uninitialized) assertThat(this.confirmExitAction).isEqualTo(AsyncAction.Uninitialized) @@ -50,42 +47,22 @@ class ChangeBaseRoomPermissionsPresenterTest { } @Test - fun `present - RoomDetails section contains the right items`() = runTest { - val section = ChangeRoomPermissionsSection.RoomDetails - val presenter = createChangeRoomPermissionsPresenter(section = section) + fun `present - items by section are correct for room`() = runTest { + val presenter = createChangeRoomPermissionsPresenter() moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - assertThat(awaitUpdatedItem().items).containsExactly( + val itemsBySection = awaitUpdatedItem().itemsBySection + assertThat(itemsBySection[RoomPermissionsSection.RoomDetails]).containsExactly( RoomPermissionType.ROOM_NAME, RoomPermissionType.ROOM_AVATAR, RoomPermissionType.ROOM_TOPIC, ) - } - } - - @Test - fun `present - MessagesAndContent section contains the right items`() = runTest { - val section = ChangeRoomPermissionsSection.MessagesAndContent - val presenter = createChangeRoomPermissionsPresenter(section = section) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - assertThat(awaitUpdatedItem().items).containsExactly( + assertThat(itemsBySection[RoomPermissionsSection.MessagesAndContent]).containsExactly( RoomPermissionType.SEND_EVENTS, RoomPermissionType.REDACT_EVENTS, ) - } - } - - @Test - fun `present - MembershipModeration section contains the right items`() = runTest { - val section = ChangeRoomPermissionsSection.MembershipModeration - val presenter = createChangeRoomPermissionsPresenter(section = section) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - assertThat(awaitUpdatedItem().items).containsExactly( + assertThat(itemsBySection[RoomPermissionsSection.MembershipModeration]).containsExactly( RoomPermissionType.INVITE, RoomPermissionType.KICK, RoomPermissionType.BAN, @@ -103,7 +80,7 @@ class ChangeBaseRoomPermissionsPresenterTest { assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.hasChanges).isFalse() - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) awaitItem().run { assertThat(currentPermissions?.roomName).isEqualTo(Moderator.powerLevel) @@ -120,18 +97,18 @@ class ChangeBaseRoomPermissionsPresenterTest { }.test { val state = awaitUpdatedItem() - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, SelectableRole.Moderator)) - val items = cancelAndConsumeRemainingEvents() + val itemsBySection = cancelAndConsumeRemainingEvents() - (items.last() as? Event.Item)?.value?.run { + (itemsBySection.last() as? Event.Item)?.value?.run { assertThat(currentPermissions).isEqualTo( RoomPowerLevelsValues( invite = Moderator.powerLevel, @@ -165,14 +142,14 @@ class ChangeBaseRoomPermissionsPresenterTest { assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.hasChanges).isFalse() - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, Moderator)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, User)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, Admin)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, Admin)) - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, Admin)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_AVATAR, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_TOPIC, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.SEND_EVENTS, SelectableRole.Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.REDACT_EVENTS, SelectableRole.Everyone)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.KICK, SelectableRole.Admin)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.BAN, SelectableRole.Admin)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.INVITE, SelectableRole.Admin)) skipItems(7) assertThat(awaitItem().hasChanges).isTrue() @@ -230,7 +207,7 @@ class ChangeBaseRoomPermissionsPresenterTest { assertThat(state.currentPermissions?.roomName).isEqualTo(Admin.powerLevel) assertThat(state.hasChanges).isFalse() - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) assertThat(awaitItem().hasChanges).isTrue() state.eventSink(ChangeRoomPermissionsEvent.Save) @@ -259,7 +236,7 @@ class ChangeBaseRoomPermissionsPresenterTest { presenter.present() }.test { val state = awaitUpdatedItem() - state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, Moderator)) + state.eventSink(ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Moderator)) assertThat(awaitItem().hasChanges).isTrue() state.eventSink(ChangeRoomPermissionsEvent.Exit) @@ -285,13 +262,11 @@ class ChangeBaseRoomPermissionsPresenterTest { } private fun createChangeRoomPermissionsPresenter( - section: ChangeRoomPermissionsSection = ChangeRoomPermissionsSection.RoomDetails, room: FakeJoinedRoom = FakeJoinedRoom( baseRoom = FakeBaseRoom(powerLevelsResult = { Result.success(defaultPermissions()) }), ), analyticsService: FakeAnalyticsService = FakeAnalyticsService(), ) = ChangeRoomPermissionsPresenter( - section = section, room = room, analyticsService = analyticsService, ) diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsViewTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsViewTest.kt similarity index 66% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsViewTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsViewTest.kt index f4ab1ef1a9..9627d03b7c 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsViewTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsViewTest.kt @@ -5,40 +5,40 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions +package io.element.android.features.rolesandpermissions.impl.permissions import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onAllNodesWithText -import androidx.compose.ui.test.onFirst -import androidx.compose.ui.test.performClick import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.rolesandpermissions.impl.R import io.element.android.libraries.architecture.AsyncAction -import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.ui.strings.CommonStrings -import io.element.android.tests.testutils.EnsureNeverCalled +import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EventsRecorder import io.element.android.tests.testutils.clickOn import io.element.android.tests.testutils.clickOnFirst -import io.element.android.tests.testutils.ensureCalledOnce +import io.element.android.tests.testutils.ensureCalledOnceWithParam import io.element.android.tests.testutils.pressBack import io.element.android.tests.testutils.pressBackKey +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.persistentMapOf import org.junit.Rule import org.junit.Test import org.junit.rules.TestRule import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) -class ChangeBaseRoomPermissionsViewTest { +class ChangeRoomPermissionsViewTest { @get:Rule val rule = createAndroidComposeRule() @Test fun `click on back icon invokes Exit`() { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( - eventsRecorder = recorder, + state = aChangeRoomPermissionsState( + eventSink = recorder + ) ) rule.pressBack() recorder.assertSingle(ChangeRoomPermissionsEvent.Exit) @@ -48,7 +48,9 @@ class ChangeBaseRoomPermissionsViewTest { fun `click on back key invokes Exit`() { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( - eventsRecorder = recorder, + state = aChangeRoomPermissionsState( + eventSink = recorder + ) ) rule.pressBackKey() recorder.assertSingle(ChangeRoomPermissionsEvent.Exit) @@ -59,11 +61,9 @@ class ChangeBaseRoomPermissionsViewTest { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, eventSink = recorder, ), - eventsRecorder = recorder, ) rule.pressBackKey() recorder.assertSingle(ChangeRoomPermissionsEvent.Exit) @@ -74,12 +74,10 @@ class ChangeBaseRoomPermissionsViewTest { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, confirmExitAction = AsyncAction.ConfirmingNoParams, eventSink = recorder, ), - eventsRecorder = recorder, ) rule.clickOn(CommonStrings.action_discard) recorder.assertSingle(ChangeRoomPermissionsEvent.Exit) @@ -90,12 +88,10 @@ class ChangeBaseRoomPermissionsViewTest { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, confirmExitAction = AsyncAction.ConfirmingNoParams, eventSink = recorder, ), - eventsRecorder = recorder, ) rule.clickOnFirst(CommonStrings.action_save) recorder.assertSingle(ChangeRoomPermissionsEvent.Save) @@ -105,21 +101,19 @@ class ChangeBaseRoomPermissionsViewTest { fun `click on a role item triggers ChangeRole event`() { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( - eventsRecorder = recorder, - ) - val admins = rule.activity.getText(R.string.screen_room_change_permissions_administrators).toString() - val moderators = rule.activity.getText(R.string.screen_room_change_permissions_moderators).toString() - val users = rule.activity.getText(R.string.screen_room_change_permissions_everyone).toString() - rule.onAllNodesWithText(admins).onFirst().performClick() - rule.onAllNodesWithText(moderators).onFirst().performClick() - rule.onAllNodesWithText(users).onFirst().performClick() - recorder.assertList( - listOf( - ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, RoomMember.Role.Admin), - ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, RoomMember.Role.Moderator), - ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, RoomMember.Role.User), + state = aChangeRoomPermissionsState( + itemsBySection = persistentMapOf( + // Makes sure there is only one item to click on + RoomPermissionsSection.RoomDetails to persistentListOf(RoomPermissionType.ROOM_NAME) + ), + eventSink = recorder, ) ) + rule.clickOn(R.string.screen_room_change_permissions_room_name) + rule.clickOn(R.string.screen_room_change_permissions_everyone) + recorder.assertSingle( + ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction(RoomPermissionType.ROOM_NAME, SelectableRole.Everyone), + ) } @Test @@ -127,11 +121,9 @@ class ChangeBaseRoomPermissionsViewTest { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, eventSink = recorder, ), - eventsRecorder = recorder, ) rule.clickOn(CommonStrings.action_save) recorder.assertSingle(ChangeRoomPermissionsEvent.Save) @@ -139,14 +131,13 @@ class ChangeBaseRoomPermissionsViewTest { @Test fun `a successful save exits the screen`() { - ensureCalledOnce { callback -> + ensureCalledOnceWithParam(true) { callback -> rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, saveAction = AsyncAction.Success(Unit), ), - onBackClick = callback + onComplete = callback ) rule.clickOn(CommonStrings.action_save) } @@ -157,12 +148,10 @@ class ChangeBaseRoomPermissionsViewTest { val recorder = EventsRecorder() rule.setChangeRoomPermissionsRule( state = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, saveAction = AsyncAction.Failure(IllegalStateException("Failed to set room power levels")), eventSink = recorder, ), - eventsRecorder = recorder, ) rule.clickOn(CommonStrings.action_ok) recorder.assertSingle(ChangeRoomPermissionsEvent.ResetPendingActions) @@ -170,17 +159,13 @@ class ChangeBaseRoomPermissionsViewTest { } private fun AndroidComposeTestRule.setChangeRoomPermissionsRule( - eventsRecorder: EventsRecorder = EventsRecorder(expectEvents = false), - state: ChangeRoomPermissionsState = aChangeRoomPermissionsState( - section = ChangeRoomPermissionsSection.RoomDetails, - eventSink = eventsRecorder, - ), - onBackClick: () -> Unit = EnsureNeverCalled(), + state: ChangeRoomPermissionsState = aChangeRoomPermissionsState(), + onComplete: (Boolean) -> Unit = EnsureNeverCalledWithParam(), ) { setContent { ChangeRoomPermissionsView( state = state, - onBackClick = onBackClick, + onComplete = onComplete, ) } } diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt similarity index 98% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt index 734cf4696a..d5350b05f4 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt similarity index 89% rename from features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt rename to features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt index 4aa68bc047..c9355d64d5 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsViewTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt @@ -5,13 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.roomdetails.impl.rolesandpermissions +package io.element.android.features.rolesandpermissions.impl.root import androidx.activity.ComponentActivity import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.element.android.features.roomdetails.impl.R +import io.element.android.features.rolesandpermissions.impl.R import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.ui.strings.CommonStrings @@ -83,14 +83,12 @@ class RolesAndPermissionsViewTest { @Test @Config(qualifiers = "h640dp") - fun `tapping on any of the permission items open the change permissions screen`() { - ensureCalledTimes(3) { callback -> + fun `tapping permission item open the change permissions screen`() { + ensureCalledTimes(1) { callback -> rule.setRolesAndPermissionsView( - openPermissionScreens = callback, + openEditPermissions = callback, ) - rule.clickOn(R.string.screen_room_roles_and_permissions_room_details) - rule.clickOn(R.string.screen_room_roles_and_permissions_messages_and_content) - rule.clickOn(R.string.screen_room_roles_and_permissions_member_moderation) + rule.clickOn(R.string.screen_room_roles_and_permissions_permissions_header) } } @@ -184,7 +182,7 @@ private fun AndroidComposeTestRule.setRoles goBack: () -> Unit = EnsureNeverCalled(), openAdminList: () -> Unit = EnsureNeverCalled(), openModeratorList: () -> Unit = EnsureNeverCalled(), - openPermissionScreens: () -> Unit = EnsureNeverCalled(), + openEditPermissions: () -> Unit = EnsureNeverCalled(), ) { setSafeContent { RolesAndPermissionsView( @@ -193,9 +191,7 @@ private fun AndroidComposeTestRule.setRoles override fun onBackClick() = goBack() override fun openAdminList() = openAdminList() override fun openModeratorList() = openModeratorList() - override fun openEditRoomDetailsPermissions() = openPermissionScreens() - override fun openModerationPermissions() = openPermissionScreens() - override fun openMessagesAndContentPermissions() = openPermissionScreens() + override fun openEditPermissions() = openEditPermissions() } ) } From 89afa3ba472ab9101f8685b4afbd794784b8c1f1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Nov 2025 18:05:11 +0100 Subject: [PATCH 350/898] Add the user certificate if any when creating Matrix Client. --- .../impl/auth/RustHomeServerLoginCompatibilityChecker.kt | 3 +++ .../impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt index 8cfaca077b..19d1572be5 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeServerLoginCompatibilityChecker.kt @@ -13,17 +13,20 @@ import dev.zacsweers.metro.Inject import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.matrix.api.auth.HomeServerLoginCompatibilityChecker import io.element.android.libraries.matrix.impl.ClientBuilderProvider +import io.element.android.libraries.matrix.impl.certificates.UserCertificatesProvider import timber.log.Timber @ContributesBinding(AppScope::class) @Inject class RustHomeServerLoginCompatibilityChecker( private val clientBuilderProvider: ClientBuilderProvider, + private val userCertificatesProvider: UserCertificatesProvider, ) : HomeServerLoginCompatibilityChecker { override suspend fun check(url: String): Result = runCatchingExceptions { clientBuilderProvider.provide() .inMemoryStore() .serverNameOrHomeserverUrl(url) + .addRootCertificates(userCertificatesProvider.provides()) .build() .use { it.homeserverLoginDetails() diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt index 4557d47f5b..f24a4bc958 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustHomeserverLoginCompatibilityCheckerTest.kt @@ -49,6 +49,7 @@ class RustHomeserverLoginCompatibilityCheckerTest { FakeFfiClientBuilder { FakeFfiClient(homeserverLoginDetailsResult = result) } - } + }, + userCertificatesProvider = FakeUserCertificatesProvider(), ) } From 602c32fb9a3c42d1c26a9a1229e40bad44dc5209 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Nov 2025 21:42:51 +0100 Subject: [PATCH 351/898] change(roles and permissions): change title for space --- .../impl/permissions/ChangeRoomPermissionsPresenter.kt | 4 +++- .../impl/permissions/ChangeRoomPermissionsState.kt | 1 + .../impl/permissions/ChangeRoomPermissionsView.kt | 8 ++++---- .../impl/src/main/res/values/localazy.xml | 7 ++++--- .../roomdetails/impl/src/main/res/values/localazy.xml | 6 +++--- tools/localazy/config.json | 1 + 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt index 02966c79a3..b36d1c0bc9 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsPresenter.kt @@ -35,6 +35,7 @@ class ChangeRoomPermissionsPresenter( ) : Presenter { companion object { private fun itemsForSection(section: RoomPermissionsSection) = when (section) { + RoomPermissionsSection.SpaceDetails, RoomPermissionsSection.RoomDetails -> persistentListOf( RoomPermissionType.ROOM_NAME, RoomPermissionType.ROOM_AVATAR, @@ -53,9 +54,10 @@ class ChangeRoomPermissionsPresenter( private fun RoomPermissionsSection.shouldShow(isSpace: Boolean): Boolean { return when (this) { - RoomPermissionsSection.RoomDetails -> true + RoomPermissionsSection.RoomDetails -> !isSpace RoomPermissionsSection.MembershipModeration -> true RoomPermissionsSection.MessagesAndContent -> !isSpace + RoomPermissionsSection.SpaceDetails -> isSpace } } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt index b1032e5fac..c609b4a135 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsState.kt @@ -48,6 +48,7 @@ data class ChangeRoomPermissionsState( } enum class RoomPermissionsSection { + SpaceDetails, RoomDetails, MessagesAndContent, MembershipModeration, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt index babe682717..165ebd0528 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/permissions/ChangeRoomPermissionsView.kt @@ -74,7 +74,6 @@ fun ChangeRoomPermissionsView( selectedOption = state.selectedRoleForType(permissionType), options = SelectableRole.entries.toImmutableList(), onSelectOption = { role -> - println("Selected $role for $permissionType") state.eventSink( ChangeRoomPermissionsEvent.ChangeMinimumRoleForAction( action = permissionType, @@ -114,9 +113,10 @@ fun ChangeRoomPermissionsView( @Composable private fun titleForSection(section: RoomPermissionsSection): String = when (section) { - RoomPermissionsSection.RoomDetails -> stringResource(R.string.screen_room_change_permissions_room_details) - RoomPermissionsSection.MessagesAndContent -> stringResource(R.string.screen_room_change_permissions_messages_and_content) - RoomPermissionsSection.MembershipModeration -> stringResource(R.string.screen_room_change_permissions_member_moderation) + RoomPermissionsSection.SpaceDetails -> stringResource(R.string.screen_room_roles_and_permissions_space_details) + RoomPermissionsSection.RoomDetails -> stringResource(R.string.screen_room_roles_and_permissions_room_details) + RoomPermissionsSection.MessagesAndContent -> stringResource(R.string.screen_room_roles_and_permissions_messages_and_content) + RoomPermissionsSection.MembershipModeration -> stringResource(R.string.screen_room_roles_and_permissions_member_moderation) } @Composable diff --git a/features/rolesandpermissions/impl/src/main/res/values/localazy.xml b/features/rolesandpermissions/impl/src/main/res/values/localazy.xml index 43f6dc10f8..56c335f1c1 100644 --- a/features/rolesandpermissions/impl/src/main/res/values/localazy.xml +++ b/features/rolesandpermissions/impl/src/main/res/values/localazy.xml @@ -9,10 +9,10 @@ "Messages and content" "Admins and moderators" "Remove people and decline requests to join" - "Change room avatar" + "Change avatar" "Room details" - "Change room name" - "Change room topic" + "Change name" + "Change 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." @@ -66,5 +66,6 @@ "Reset permissions?" "Roles" "Room details" + "Space details" "Roles and permissions" diff --git a/features/roomdetails/impl/src/main/res/values/localazy.xml b/features/roomdetails/impl/src/main/res/values/localazy.xml index 814f352abd..38f3be744f 100644 --- a/features/roomdetails/impl/src/main/res/values/localazy.xml +++ b/features/roomdetails/impl/src/main/res/values/localazy.xml @@ -14,10 +14,10 @@ "Messages and content" "Admins and moderators" "Remove people and decline requests to join" - "Change room avatar" + "Change avatar" "Room details" - "Change room name" - "Change room topic" + "Change name" + "Change 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." diff --git a/tools/localazy/config.json b/tools/localazy/config.json index 4f57a9a822..39d63484a9 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -371,6 +371,7 @@ "includeRegex" : [ "screen_room_change_.*", "screen_room_roles_.*", + "screen\\.room_roles_and_permissions\\..*", "screen_room_member_list.*" ] } From 462d596177499a2f4066be6be404ed2198d9fb79 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Wed, 5 Nov 2025 20:58:34 +0000 Subject: [PATCH 352/898] Update screenshots --- ...es.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png | 3 --- ....changeroommemberroles.impl_ChangeRolesView_Night_9_en.png | 3 --- ...references.impl.advanced_AdvancedSettingsViewDark_0_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_1_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_2_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_3_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_4_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_5_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_6_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_7_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_8_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_0_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_1_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_2_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_3_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_4_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_5_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_6_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_7_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_8_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png | 3 +++ ...ns.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png | 3 +++ ...ns.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png | 3 +++ ...ns.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png | 3 +++ ...ns.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png | 3 +++ ....impl.permissions_ChangeRoomPermissionsView_Night_0_en.png | 3 +++ ....impl.permissions_ChangeRoomPermissionsView_Night_1_en.png | 3 +++ ....impl.permissions_ChangeRoomPermissionsView_Night_2_en.png | 3 +++ ....impl.permissions_ChangeRoomPermissionsView_Night_3_en.png | 3 +++ ....impl.permissions_ChangeRoomPermissionsView_Night_4_en.png | 3 +++ ...lesandpermissions.impl.roles_ChangeRolesView_Day_0_en.png} | 0 ...esandpermissions.impl.roles_ChangeRolesView_Day_10_en.png} | 0 ...esandpermissions.impl.roles_ChangeRolesView_Day_11_en.png} | 0 ...esandpermissions.impl.roles_ChangeRolesView_Day_12_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_1_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_2_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_3_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_4_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_5_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_6_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_7_en.png} | 0 ...lesandpermissions.impl.roles_ChangeRolesView_Day_8_en.png} | 0 ...olesandpermissions.impl.roles_ChangeRolesView_Day_9_en.png | 3 +++ ...sandpermissions.impl.roles_ChangeRolesView_Night_0_en.png} | 0 ...andpermissions.impl.roles_ChangeRolesView_Night_10_en.png} | 0 ...andpermissions.impl.roles_ChangeRolesView_Night_11_en.png} | 0 ...andpermissions.impl.roles_ChangeRolesView_Night_12_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_1_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_2_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_3_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_4_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_5_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_6_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_7_en.png} | 0 ...sandpermissions.impl.roles_ChangeRolesView_Night_8_en.png} | 0 ...esandpermissions.impl.roles_ChangeRolesView_Night_9_en.png | 3 +++ ...ions.impl.roles_PendingMemberRowWithLongName_Day_0_en.png} | 0 ...ns.impl.roles_PendingMemberRowWithLongName_Night_0_en.png} | 0 ...permissions.impl.root_RolesAndPermissionsView_Day_0_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_1_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_2_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_3_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_4_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_5_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_6_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_7_en.png | 3 +++ ...permissions.impl.root_RolesAndPermissionsView_Day_8_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_0_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_1_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_2_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_3_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_4_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_5_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_6_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_7_en.png | 3 +++ ...rmissions.impl.root_RolesAndPermissionsView_Night_8_en.png | 3 +++ ...issions.permissions_ChangeRoomPermissionsView_Day_0_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_1_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_2_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_3_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_4_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_5_en.png | 3 --- ...issions.permissions_ChangeRoomPermissionsView_Day_6_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_0_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_1_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_2_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_3_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_4_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_5_en.png | 3 --- ...sions.permissions_ChangeRoomPermissionsView_Night_6_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png | 3 --- ...l.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_0_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_1_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_2_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_3_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_4_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_5_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_6_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_7_en.png | 3 --- ...rolesandpermissions_RolesAndPermissionsView_Night_8_en.png | 3 --- ...mponents.preferences_PreferenceDropdown_Preferences_en.png | 4 ++-- 109 files changed, 128 insertions(+), 140 deletions(-) delete mode 100644 tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_10_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_11_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_12_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_12_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_1_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_2_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_3_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_4_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_5_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_6_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_7_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Day_8_en.png} (100%) create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_9_en.png rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_10_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_11_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_12_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_12_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_1_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_2_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_3_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_4_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_5_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_6_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_7_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png => features.rolesandpermissions.impl.roles_ChangeRolesView_Night_8_en.png} (100%) create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_9_en.png rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en.png => features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Day_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en.png => features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Night_0_en.png} (100%) create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_4_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_5_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_6_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_7_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_8_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_0_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_1_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_2_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_3_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_4_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_5_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_6_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_7_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_8_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png delete mode 100644 tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png deleted file mode 100644 index 9be427d4b6..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_9_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4885040583de68748dc10cf85e0f395f7ae8a0ef08d8aeed14826fafec22990 -size 65024 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png deleted file mode 100644 index ccb2d31d48..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_9_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac14dd774fca2924f599bd831d4fcad9931011174108bae5da1bcf8a5db6c4cf -size 64688 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png index 7bfb23035b..b4caf353fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d20f0962fb92b64b0e8a507f2c30428d0349c176d1453ed423a6c447d350459e -size 47267 +oid sha256:5116af838229fd1d17eb6d63ffdde82e90b75ff01000f8bf6f83edb982555443 +size 47358 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png index d76c93c920..d14d977afe 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d39dbdbed4a1260170fc1a148860533320413efb367a5d31bc4111086378529c -size 47157 +oid sha256:4d2f0f54ecb417dcc7ebb2e125b61e9e01f682dd7fea0eabb729c243387b6004 +size 47247 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png index 9915cd5435..7791c3dada 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed87edce4fc8ea22a2ba6d666bbaf21b14a359e2a3eec828e2edede23d5d1b1e -size 47146 +oid sha256:5ef498d98d519dfe496622ec3ec7289ef5e636bb4c8ce4512cde1997fba3247d +size 47237 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png index 49d0d774af..d0b1a44c01 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d446944a0408921659ef954036211fe341e8b0529b6e0c7ecc315998e14b8f43 -size 47136 +oid sha256:665aa1c40622f38b0abe12d763c260a07011f7c32e47442d44477d2fead32e6c +size 47224 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png index 1f32e3cb20..3abb98e008 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61706045ca364252d30d9a36d276b83aeee5e4be2552fbd7a97be9378ebc3a37 -size 46979 +oid sha256:6df36eb76909634d7ef59d9fa44edc1aa1f87412b8524ec2a9f3c26554e89065 +size 47069 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png index 6a6f712306..a45ca7d865 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23a53698059b50b46bcbb6cedd9434aaffa77db460d7495b9306c809d90d2126 -size 47270 +oid sha256:64e6997a02c70f17866e90f19cea2878844738748ce9ad60f85fbf04a3f35d8a +size 47360 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png index 0f40386837..dee1f01854 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:779879fc4b976584305eca916e42bd3cf1b6c08bf9e857bf842ec4cd537d7c3a -size 46924 +oid sha256:eae7e14242722e0b65e6bfe02f0d8c54e4581113c19888acfdbfd84b260ba53a +size 47013 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png index a1b6e813b0..6e7bf498c1 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ec601dec7eb57e457ddb351fbe8f966b8f51e3dde12f3e7130e8229f4ed3079 -size 46559 +oid sha256:56d937d008aa6fea8b4dadc12eb313f217b15b2d7458d5d3b4b0af77918988fc +size 46648 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png index 8934c11f27..a293d0038e 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c647eb273c63b6e28f91a87d9e85f00c83d7f0cb6748965cd0c1391cac7fe918 -size 52991 +oid sha256:b1c44eb7d614c5db5c48a75cf483ee9364aa2113dffd79faf116835a21519b79 +size 53087 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png index f7d1a84a24..2de7d822fa 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ec2983e926cff79f13fa0851c4c7dd6c4fd0433f19c774136cef5cdd0ea8b52 -size 48932 +oid sha256:cd31762cef1c2d84318d3fcb63f08c3b544368c59643d6ea54174e9ca6e7191b +size 48985 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png index d742e90a11..167e63caf4 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c382988ddf0643e1c6e78aee175fed9232302a4bd6d10e078c3fdd74d471904b -size 48813 +oid sha256:7789e460d69fa17b7a412a456930f2383c0ebb84a7a603c7443f0e7b66f2be0e +size 48866 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png index eb2d20f165..96a27a4fc8 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b68b299ef3917fb201712817b056a3c328d9f0c4cee5e0216de49d1ee962ebe5 -size 48830 +oid sha256:2fddfcdd50bf43eec8b0c5739067609aede15b6541de75282274803464d5ffc4 +size 48885 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png index dc166a004a..056e1a8e21 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26ef88a68a260fa9096651badadd93c4ce69d150add269cbdfd303b3289de629 -size 48814 +oid sha256:85c09edfa3db27e686dceb7aa21e427a25cdc4860669cb716a820b8ebf8a255e +size 48868 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png index 319eb1d0b0..fdfaa42df9 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c56cbb0fbc5aadecac6cdd23fee7ee93e18843c7923b0d73dbc90468c29a217 -size 48735 +oid sha256:d694ba80e6faeb81a195064e59d3febe4630df718124e7ee842ba1aad2634117 +size 48789 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png index 19460ca25f..2e3b8e8deb 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:76c25bf891f2d649c3822448d288cc77a1f50626d58fe381268df89b346dee6a -size 48932 +oid sha256:4b556d0d99e4e93a736e25f79df51bd02f465192496463d0480081105de1077c +size 48987 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png index e992029a8b..5c4df596af 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3314c594d699f376b5f06fd7da21ce318b5fee331c2e104ce04bbee59b5ba4fc -size 48753 +oid sha256:8e285f7f4435053db05f95dee11bf3c46f4649c1f6a2f6e18ad91e652f0725ac +size 48809 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png index 5e995f6e3f..1bddc35de9 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97111fd3e96fc9007b271a9ecbb3571034ea79fc7998b12bc854fcc43b6d31b4 -size 48438 +oid sha256:607061d3f293b5d575b236cd24f8d13b3d2db6dbd76e21710b698ccdee38541b +size 48492 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png index 6a161b9137..859e412c51 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:704dba07bf3c49e8ba0f2cf62368c2ead4f27e6708572b4c38b5fffc89b89c26 -size 55181 +oid sha256:adfc7ec5289fbd2bcdc3b6be31b1644165f24bd422957bb038b381b57d309e98 +size 55242 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png new file mode 100644 index 0000000000..abe319f714 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9043007191252fac22ab58a635e0c59d96edcba741fccf9bb9812889eb15ca24 +size 60259 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png new file mode 100644 index 0000000000..282b3fc89e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cadaea0794b81e28b03c84b4331d2dd11df6cff63344e1e2561de9e3a1450c23 +size 60178 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png new file mode 100644 index 0000000000..5823a4adec --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f55bfa9823ab3480ed846e137ed7e1fa1f3a0011ef8034458ac2baa4261cd7e8 +size 52084 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png new file mode 100644 index 0000000000..ca5dd4e9c0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ce4f5ac003767c68a89465e1eb396f7d5fb67f2157a4e00a56591820666644 +size 49522 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png new file mode 100644 index 0000000000..a14ec8aad7 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c5692d76f33a622452727fc4b1d1438cb608038f1cb0b6ba86a7b8e98f143db +size 56335 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png new file mode 100644 index 0000000000..c5b0cafa86 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:644b0d4d7c9ac619fa277086071a35d08f24408816a73b5293acde325d06373b +size 58568 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png new file mode 100644 index 0000000000..70aa7e518e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a62487bdcd023634fbb7a81642821dbca4b813798aae1dfaa4d5b852d7e03fca +size 58470 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png new file mode 100644 index 0000000000..8f56a177e4 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08d28320336e02d0db2d4eb5b20793879d54e52f3dbb287f6399efcad5dbc47e +size 50565 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png new file mode 100644 index 0000000000..a0a2e1a701 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64bc6edeffdcec9381c9049383d72ed4f5fe785de3f0b24d9f7a32466a26f24b +size 47347 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png new file mode 100644 index 0000000000..b4dd57cfa6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45da36f66abead151d7634c2c554862db03948eede77adf1f397fead1429e67e +size 54151 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_0_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_10_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_10_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_10_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_11_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_11_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_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.rolesandpermissions.impl.roles_ChangeRolesView_Day_12_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_12_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_12_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_1_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_1_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_1_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_2_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_2_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_2_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_3_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_3_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_3_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_4_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_4_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_4_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_5_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_5_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_5_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_6_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_6_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_6_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_7_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_7_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_7_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_8_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Day_8_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_8_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_9_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_9_en.png new file mode 100644 index 0000000000..d1b21ebee2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Day_9_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:393bf3509a833f7af78a57e546ce6d35ca3bef4d4523ff12af657d1c573b87c5 +size 61190 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_0_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_10_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_10_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_10_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_11_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_11_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_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.rolesandpermissions.impl.roles_ChangeRolesView_Night_12_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_12_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_12_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_1_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_1_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_1_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_2_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_2_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_2_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_3_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_3_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_3_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_4_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_4_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_4_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_5_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_5_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_5_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_6_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_6_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_6_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_7_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_7_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_7_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_8_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_ChangeRolesView_Night_8_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_8_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_9_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_9_en.png new file mode 100644 index 0000000000..f55e0ac7a6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_ChangeRolesView_Night_9_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37a79b2f5d6aedaef2dec74defd0f2a17af49239058a606f0785e82e56d833ec +size 61887 diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Day_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Day_0_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Day_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Night_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/features.changeroommemberroles.impl_PendingMemberRowWithLongName_Night_0_en.png rename to tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.roles_PendingMemberRowWithLongName_Night_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_0_en.png new file mode 100644 index 0000000000..7ba2742dab --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b64f4c2c68338cd9acc6e2644b41eb3d30463e6ee5da2eba0d93b1ff2340a563 +size 28791 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_1_en.png new file mode 100644 index 0000000000..56f241f10c --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6be26ff8ed8f9907fbab1778a0b112c649e8bd8059f0ae407b52634f9fe4b136 +size 30630 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_2_en.png new file mode 100644 index 0000000000..83a633fc78 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d57be3aa2c919a957f99a6b8da269fae5791dd5ffea4dd2113e91ee82796c35 +size 59091 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_3_en.png new file mode 100644 index 0000000000..fe7577ec55 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f55f5714eb073ad4649ff9b5d2924239db6063701cdca61941a970a5f7f78197 +size 28038 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_4_en.png new file mode 100644 index 0000000000..29e8c35dfe --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dcb28cfda314fa41d86ae47c6e9e7275798515b735cf4ebfb51c26d4412b4ad +size 27047 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_5_en.png new file mode 100644 index 0000000000..d581dc2637 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7e2b3d4d2aa0349db9641afd230cf3c532f11bd05c2fd821657a5665190324f +size 37175 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_6_en.png new file mode 100644 index 0000000000..fe7577ec55 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_6_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f55f5714eb073ad4649ff9b5d2924239db6063701cdca61941a970a5f7f78197 +size 28038 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_7_en.png new file mode 100644 index 0000000000..cba28447f4 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_7_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0b069df8c405ef8556a0cbe9a68fae9788ba55eaf940a11c1b20b1732d79114 +size 27344 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_8_en.png new file mode 100644 index 0000000000..16aae512d1 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Day_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc46b428fcd6950911089d1f09a7cb6f6aa5009d2ce39f4b00ce706a3a41fb3 +size 27175 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_0_en.png new file mode 100644 index 0000000000..58c89081f0 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_0_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:320d0da30157930114f60d10a1da565780f9869340dc9f0b71b70552e9b8bd0c +size 27990 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_1_en.png new file mode 100644 index 0000000000..d69a5bfb78 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_1_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0c78fbc29259d21b5f66d86bb943153d4a1f35409785629306a672234493dfd +size 29741 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_2_en.png new file mode 100644 index 0000000000..ceff3d7f25 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_2_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e8141af3945e72cbdedd38062d9606c4a1646fd75ce169cf5aec9369968404d +size 56721 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_3_en.png new file mode 100644 index 0000000000..367f6cbce4 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_3_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af38118f74d11e03a7cc6776aa64d9955b9d494a38f21396393eea0b7e133f83 +size 26464 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_4_en.png new file mode 100644 index 0000000000..2fc5472b0d --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_4_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c42bb6f9615803253f395759dc6d86c940131fec23f6c6f1d83cef9375452cd9 +size 25071 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_5_en.png new file mode 100644 index 0000000000..e0a8bfadda --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75747b889fd518a514c5058b86676c89c68ff9557505b39ee9ea04b62a83b8ab +size 34616 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_6_en.png new file mode 100644 index 0000000000..367f6cbce4 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_6_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af38118f74d11e03a7cc6776aa64d9955b9d494a38f21396393eea0b7e133f83 +size 26464 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_7_en.png new file mode 100644 index 0000000000..dec47a2fcb --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_7_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c82ffeae6eb17e27996357e1538ade2b962ecb6b6ccda8a6e5535a8b98f991c +size 25386 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_8_en.png new file mode 100644 index 0000000000..9e823c8497 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.root_RolesAndPermissionsView_Night_8_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a653512dc37cbe52f5623278358b643e9c8e6c706a1a3f6999a579b6d8ceecc +size 26423 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png deleted file mode 100644 index de3f3a93b9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80f4f24de2db8c0b1462a6dd77cb138132dc37aa1cc000508d0cf66129fa486f -size 39962 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png deleted file mode 100644 index 9762549b31..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80b6d0cef1f4709ab0f519c3168d9e0f9b7a7ffff8f7d4a8fbc5b10653b33042 -size 36279 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png deleted file mode 100644 index 863e6bdf1c..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13095117980b3b3dde8df1b2404bad43187d17cdcaf51805cf45baa684bb5086 -size 46677 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png deleted file mode 100644 index d07b5f214e..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e32a7a1ec92aa005734e877ff995bc40420710e80eea350ffbc1530095ad48c -size 39857 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png deleted file mode 100644 index 42da0d9e8c..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e89506e845b0a9d80831b1f65fa3793aee784d5a02ab69241a26384d9d43251 -size 36292 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png deleted file mode 100644 index df10b8c6e2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79b02cbdef9a555911ba7e775642b08473f271a92e045d4f7c141ccfe63170ca -size 37204 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png deleted file mode 100644 index 6107455bd9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Day_6_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:785820fd67e137c5347060cf4d07dda5dc24e2349c8bb2a418895fc6ce9069b1 -size 44079 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png deleted file mode 100644 index f2691ad84f..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61e3c25edb23657021113a1201408200f85f0b2dcba9e96208a7125027cf642f -size 38699 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png deleted file mode 100644 index 5e779061e0..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11738c6de6751b37430db66d377478d38b7ac241c14d7bb2ab8b48206908fbda -size 35175 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png deleted file mode 100644 index 58226e7852..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8a15405c5998265da00876bac43ab2d70fca74fab916d2014207b46997b0fed5 -size 45030 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png deleted file mode 100644 index 2d15a73061..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f524740b14ffe3b5a70983b42c308cdcd1d7bfe7dbd0738aed3e79dba4673bbe -size 38559 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png deleted file mode 100644 index 2fc07b3421..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c25628ffa6457a573b8678ab95ee7bb80315ba8a43d20a16e3d7c03baab7ea9f -size 35201 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png deleted file mode 100644 index 56520adc2a..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab0970def368ef59ecfbc1b7cec7e0dcdd8156a6f642701acf9dd54527080568 -size 35440 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png deleted file mode 100644 index 7faaed8c07..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions.permissions_ChangeRoomPermissionsView_Night_6_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:742d98c87eaff31e460614f15ec4a5f03797669378099b5be3e0785320d0a0d1 -size 42171 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png deleted file mode 100644 index 1acc4da150..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1129fe5ebc6cebbba907ca15e92b33d5ee645c431d0022758bfc5d6e28bf69e -size 41003 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png deleted file mode 100644 index e906d843c7..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fe1c01cc7c9ea9f50a0413505b516a86831416416c82488a9339785c89b3e0d3 -size 42769 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png deleted file mode 100644 index cf46f94231..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d08941b66dd884cb3eb73fea0ccbf535ab2b42a46fb1ac83d220832e42b486a6 -size 59083 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png deleted file mode 100644 index dccc6a1f32..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:09ca684dc0f03aa68e658c4f1c780dde6d8c1739255899936f320595098c2c80 -size 39542 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png deleted file mode 100644 index 97b5326743..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e71878e1dd445a58b3d79db5863ec4449729bf0bb1549c09848923fb9bf052d9 -size 38390 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png deleted file mode 100644 index d25877daf2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:558ba83131a9d79e32e0c5566a170e1c62b5bccbb4ad23f9bc58e271ea3f89e9 -size 48462 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png deleted file mode 100644 index dccc6a1f32..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_6_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:09ca684dc0f03aa68e658c4f1c780dde6d8c1739255899936f320595098c2c80 -size 39542 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png deleted file mode 100644 index b1912920cb..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_7_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77f4b8e6ec426104ebe81308b2cf0ad111e3fbfa07c2086a2199ab8e9e952e8a -size 38719 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png deleted file mode 100644 index 4793c85c21..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Day_8_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9000726c2e4e6115bb18f09193d84d4ab1948e70e35f27d0bfa514be96584510 -size 39123 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png deleted file mode 100644 index aee278ece4..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d009d8ede606e8cd4bc150a292aac5c58c38195b188412a55df686ef74738e08 -size 39747 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png deleted file mode 100644 index 62e2a03cf7..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_1_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa618f575a11ed7c8521d754f54f41745ede3f2f9f95b242d9f04f641446c581 -size 41500 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png deleted file mode 100644 index e6fe537947..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_2_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0063c4f776093e3c53beb164bd21d5ca0c32a865b10e848826a6f7859267f00 -size 56716 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png deleted file mode 100644 index 147635d0f9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_3_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e47c40c3173a80230c88f7e242f0236e6de3ed255552eed2d54a71fb136aa842 -size 37809 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png deleted file mode 100644 index 98e04f83fe..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_4_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ae08d2f3f6bc8b5364d3b9ea3584c21efe3180001d0babf209c6ef3fbf41e9a -size 35871 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png deleted file mode 100644 index 5a7c8850fd..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:01fe728028fd86ccaf8ff7b08eb0b1b1e21ad336da97f39d818304e769cd65aa -size 45374 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png deleted file mode 100644 index 147635d0f9..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_6_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e47c40c3173a80230c88f7e242f0236e6de3ed255552eed2d54a71fb136aa842 -size 37809 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png deleted file mode 100644 index c2c1b2c9f2..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_7_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7ae5371560ae6a92f0fb6537d8359c1bc40a6c43e3f12fd365019cbb2debe72 -size 36210 diff --git a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png b/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png deleted file mode 100644 index 1d42c39f20..0000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomdetails.impl.rolesandpermissions_RolesAndPermissionsView_Night_8_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5c945af810f3bde63d99284b97b127a10b7ec222a560a406284b4dac2b0e3f9 -size 38022 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png index be32cb24a3..9e7bb7a63e 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f02ee83a49656553dd59648442bf4d558f6257fff3b30b768673d531cbe10150 -size 30928 +oid sha256:9af7f91767070914af81742b8f9d9a85c68e5aa818d19b7981527eb7e4360ec4 +size 31366 From 28514e88ff0407ac6a5c23f10bda4f3e84f98200 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:02:28 +0100 Subject: [PATCH 353/898] fix(deps): update dependency androidx.core:core-splashscreen to v1.2.0 (#5687) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5cfc639d67..a3f6eed13c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -103,7 +103,7 @@ androidx_recyclerview = "androidx.recyclerview:recyclerview:1.4.0" androidx_browser = "androidx.browser:browser:1.9.0" androidx_lifecycle_runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" } androidx_lifecycle_process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" } -androidx_splash = "androidx.core:core-splashscreen:1.0.1" +androidx_splash = "androidx.core:core-splashscreen:1.2.0" androidx_media3_exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" } androidx_media3_ui = { module = "androidx.media3:media3-ui", version.ref = "media3" } androidx_media3_transformer = { module = "androidx.media3:media3-transformer", version.ref = "media3" } From f8d8830194d2e424f4b4555246355c7626e13606 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 09:33:43 +0100 Subject: [PATCH 354/898] Rename preview. --- .../designsystem/components/dialogs/SaveChangesDialog.kt | 2 +- ...ignsystem.components.dialogs_SaveChangesDialog_Day_0_en.png} | 0 ...nsystem.components.dialogs_SaveChangesDialog_Night_0_en.png} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename tests/uitests/src/test/snapshots/images/{libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png => libraries.designsystem.components.dialogs_SaveChangesDialog_Day_0_en.png} (100%) rename tests/uitests/src/test/snapshots/images/{libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png => libraries.designsystem.components.dialogs_SaveChangesDialog_Night_0_en.png} (100%) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt index e630636894..f970904cc0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/dialogs/SaveChangesDialog.kt @@ -31,7 +31,7 @@ fun SaveChangesDialog( @PreviewsDayNight @Composable -internal fun SaveChangeDialogPreview() = ElementPreview { +internal fun SaveChangesDialogPreview() = ElementPreview { SaveChangesDialog( onSubmitClick = {}, onDismiss = {} diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangesDialog_Day_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Day_0_en.png rename to tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangesDialog_Day_0_en.png diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangesDialog_Night_0_en.png similarity index 100% rename from tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangeDialog_Night_0_en.png rename to tests/uitests/src/test/snapshots/images/libraries.designsystem.components.dialogs_SaveChangesDialog_Night_0_en.png From de4f0e7ce34b91324278c0dde85f933ede70bd91 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 10:50:46 +0100 Subject: [PATCH 355/898] design: improve PreferenceDropdown --- .../components/preferences/PreferenceDropdown.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt index 389dc6c15b..fd76ef4c28 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/preferences/PreferenceDropdown.kt @@ -10,8 +10,10 @@ package io.element.android.libraries.designsystem.components.preferences import androidx.annotation.DrawableRes +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable @@ -22,6 +24,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme @@ -87,6 +91,7 @@ fun PreferenceDropdown( onSelectOption = onSelectOption, expanded = isDropdownExpanded, onExpandedChange = { isDropdownExpanded = it }, + modifier = Modifier.fillMaxSize(0.3f) ) } ), @@ -117,12 +122,16 @@ private fun DropdownTrailingContent( Row( modifier = modifier, verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End, ) { Text( text = selectedOption?.getText().orEmpty(), maxLines = 1, style = ElementTheme.typography.fontBodyMdRegular, color = ElementTheme.colors.textSecondary, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.End, + modifier = Modifier.weight(1f), ) Icon( imageVector = CompoundIcons.ChevronDown(), From ca1f799983802d5d9b7788455df13f125e28b668 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 10:58:51 +0100 Subject: [PATCH 356/898] misc: introduce @RoomCoroutineScope --- .../di/annotations/RoomCoroutineScope.kt | 18 +++++++++++++ .../libraries/matrix/impl/di/RoomModule.kt | 26 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 libraries/di/src/main/kotlin/io/element/android/libraries/di/annotations/RoomCoroutineScope.kt create mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/RoomModule.kt diff --git a/libraries/di/src/main/kotlin/io/element/android/libraries/di/annotations/RoomCoroutineScope.kt b/libraries/di/src/main/kotlin/io/element/android/libraries/di/annotations/RoomCoroutineScope.kt new file mode 100644 index 0000000000..eee5115df9 --- /dev/null +++ b/libraries/di/src/main/kotlin/io/element/android/libraries/di/annotations/RoomCoroutineScope.kt @@ -0,0 +1,18 @@ +/* + * 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.di.annotations + +import dev.zacsweers.metro.Qualifier + +/** + * Qualifies a [CoroutineScope] object which represents the base coroutine scope to use for an active room. + */ +@Retention(AnnotationRetention.RUNTIME) +@MustBeDocumented +@Qualifier +annotation class RoomCoroutineScope diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/RoomModule.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/RoomModule.kt new file mode 100644 index 0000000000..9fd9f7eade --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/RoomModule.kt @@ -0,0 +1,26 @@ +/* + * 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.matrix.impl.di + +import dev.zacsweers.metro.BindingContainer +import dev.zacsweers.metro.ContributesTo +import dev.zacsweers.metro.Provides +import io.element.android.libraries.di.RoomScope +import io.element.android.libraries.di.annotations.RoomCoroutineScope +import io.element.android.libraries.matrix.api.room.BaseRoom +import kotlinx.coroutines.CoroutineScope + +@BindingContainer +@ContributesTo(RoomScope::class) +object RoomModule { + @RoomCoroutineScope + @Provides + fun providesSessionCoroutineScope(room: BaseRoom): CoroutineScope { + return room.roomCoroutineScope + } +} From 5097ac15718dd5669a7ec0a5903a1216da90cd2d Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 10:59:24 +0100 Subject: [PATCH 357/898] change(roles and permissions): use @RoomCoroutineScope instead of local scope --- .../impl/roles/ChangeRolesPresenter.kt | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt index e2049336a2..87a659f7ce 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import dev.zacsweers.metro.Assisted @@ -27,6 +26,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.designsystem.theme.components.SearchBarResultState +import io.element.android.libraries.di.annotations.RoomCoroutineScope import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.RoomMember @@ -41,12 +41,10 @@ import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext @AssistedInject class ChangeRolesPresenter( @@ -54,6 +52,7 @@ class ChangeRolesPresenter( private val room: JoinedRoom, private val dispatchers: CoroutineDispatchers, private val analyticsService: AnalyticsService, + @RoomCoroutineScope private val roomCoroutineScope: CoroutineScope, ) : Presenter { @AssistedFactory fun interface Factory { @@ -62,7 +61,6 @@ class ChangeRolesPresenter( @Composable override fun present(): ChangeRolesState { - val coroutineScope = rememberCoroutineScope() val dataSource = remember { RoomMemberListDataSource(room, dispatchers) } var query by rememberSaveable { mutableStateOf(null) } var searchActive by rememberSaveable { mutableStateOf(false) } @@ -145,7 +143,7 @@ class ChangeRolesPresenter( saveState.value = AsyncAction.ConfirmingNoParams } !saveState.value.isLoading() -> { - coroutineScope.save(usersWithRole.value, selectedUsers, saveState) + roomCoroutineScope.save(usersWithRole.value, selectedUsers, saveState) } } } @@ -217,11 +215,7 @@ class ChangeRolesPresenter( } .onSuccess { // Asynchronously reload the room members - launch { - withContext(NonCancellable) { - room.updateMembers() - } - } + launch { room.updateMembers() } saveState.value = AsyncAction.Success(true) } } From d83b2f615a6932b9b62c0227ef22a760e00cdf50 Mon Sep 17 00:00:00 2001 From: Ben Banfield-Zanin Date: Thu, 6 Nov 2025 10:23:07 +0000 Subject: [PATCH 358/898] Use the dedicated (element.io !!) subdomain for the bug report URL by default. --- appconfig/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appconfig/build.gradle.kts b/appconfig/build.gradle.kts index 15b8bd51ba..166aafe2ff 100644 --- a/appconfig/build.gradle.kts +++ b/appconfig/build.gradle.kts @@ -32,7 +32,7 @@ android { value = if (isEnterpriseBuild) { BuildTimeConfig.BUG_REPORT_URL ?: "" } else { - "https://riot.im/bugreports/submit" + "https://rageshakes.element.io/api/submit" }, ) buildConfigFieldStr( From 6d252c0b2044ef2c694e139cc71239f2f66ffc57 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 12:22:48 +0100 Subject: [PATCH 359/898] MatrixAuthenticationService: remove `fun getHomeserverDetails(): StateFlow`. The MatrixHomeServerDetails are now return by `setHomeserver` --- .../login/impl/changeserver/ChangeServerPresenter.kt | 8 +++----- .../android/features/login/impl/login/LoginHelper.kt | 3 +-- .../matrix/api/auth/MatrixAuthenticationService.kt | 9 ++++++--- .../matrix/impl/auth/RustMatrixAuthenticationService.kt | 7 ++----- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index 4df9eb12d5..d3db7496c5 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -60,11 +60,9 @@ class ChangeServerPresenter( title = data.title, accountProviderUrl = data.url, ) - authenticationService.setHomeserver(data.url).map { - authenticationService.getHomeserverDetails().value!! - // Valid, remember user choice - accountProviderDataSource.userSelection(data) - }.getOrThrow() + authenticationService.setHomeserver(data.url).getOrThrow() + // Homeserver is valid, remember user choice + accountProviderDataSource.userSelection(data) }.runCatchingUpdatingState(changeServerAction, errorTransform = ChangeServerError::from) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt index 82ee87c372..8dbd2a4df3 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginHelper.kt @@ -65,8 +65,7 @@ class LoginHelper( loginHint: String?, ) = coroutineScope.launch { suspend { - authenticationService.setHomeserver(homeserverUrl).map { - val matrixHomeServerDetails = authenticationService.getHomeserverDetails().value!! + authenticationService.setHomeserver(homeserverUrl).map { matrixHomeServerDetails -> if (matrixHomeServerDetails.supportsOidcLogin) { // Retrieve the details right now val oidcPrompt = if (isAccountCreation) OidcPrompt.Create else OidcPrompt.Login diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixAuthenticationService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixAuthenticationService.kt index 38777944ee..1255e40a14 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixAuthenticationService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixAuthenticationService.kt @@ -13,7 +13,6 @@ import io.element.android.libraries.matrix.api.auth.external.ExternalSession import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginData import io.element.android.libraries.matrix.api.auth.qrlogin.QrCodeLoginStep import io.element.android.libraries.matrix.api.core.SessionId -import kotlinx.coroutines.flow.StateFlow interface MatrixAuthenticationService { /** @@ -22,8 +21,12 @@ interface MatrixAuthenticationService { * Generally this method should not be used directly, prefer using [MatrixClientProvider.getOrRestore] instead. */ suspend fun restoreSession(sessionId: SessionId): Result - fun getHomeserverDetails(): StateFlow - suspend fun setHomeserver(homeserver: String): Result + + /** + * Set the homeserver to use for authentication, and return its details. + */ + suspend fun setHomeserver(homeserver: String): Result + suspend fun login(username: String, password: String): Result /** diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 9859358ae6..7ed523812f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -37,7 +37,6 @@ import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionStore import kotlinx.coroutines.CancellationException import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder @@ -111,9 +110,7 @@ class RustMatrixAuthenticationService( return passphrase } - override fun getHomeserverDetails(): StateFlow = currentHomeserver - - override suspend fun setHomeserver(homeserver: String): Result = + override suspend fun setHomeserver(homeserver: String): Result = withContext(coroutineDispatchers.io) { val emptySessionPath = rotateSessionPath() runCatchingExceptions { @@ -123,7 +120,7 @@ class RustMatrixAuthenticationService( currentClient = client val homeServerDetails = client.homeserverLoginDetails().map() - currentHomeserver.value = homeServerDetails.copy(url = homeserver) + homeServerDetails.copy(url = homeserver) }.onFailure { clear() }.mapFailure { failure -> From 786d6f5642bd3878c2a5d24db9397f0754a2049c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 12:29:08 +0100 Subject: [PATCH 360/898] Do not override the value of url returned by the SDK --- .../matrix/impl/auth/RustMatrixAuthenticationService.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 7ed523812f..dc93b9aaf5 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -36,7 +36,6 @@ import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionStore import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder @@ -66,7 +65,6 @@ class RustMatrixAuthenticationService( // Ideally it would be possible to get the sessionPath from the Client to avoid doing this. private var sessionPaths: SessionPaths? = null private var currentClient: Client? = null - private var currentHomeserver = MutableStateFlow(null) private val newMatrixClientObservers = mutableListOf<(MatrixClient) -> Unit>() override fun listenToNewMatrixClients(lambda: (MatrixClient) -> Unit) { @@ -119,8 +117,7 @@ class RustMatrixAuthenticationService( } currentClient = client - val homeServerDetails = client.homeserverLoginDetails().map() - homeServerDetails.copy(url = homeserver) + client.homeserverLoginDetails().map() }.onFailure { clear() }.mapFailure { failure -> From 87ef2179a1d46fe709b99f072fa717bf99d42457 Mon Sep 17 00:00:00 2001 From: Skye Elliot Date: Wed, 5 Nov 2025 17:04:19 +0000 Subject: [PATCH 361/898] feat: Convert `ComposerAlertMolecule` to use alert levels. --- .../features/messages/impl/MessagesView.kt | 1 - .../identity/IdentityChangeStateView.kt | 3 +- .../virtual/TimelineItemRoomBeginningView.kt | 1 - .../atomic/molecules/ComposerAlertMolecule.kt | 88 ++++++++++++++++--- 4 files changed, 78 insertions(+), 15 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index 0221bf2c94..23dca9467f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -522,7 +522,6 @@ private fun SuccessorRoomBanner( content = stringResource(R.string.screen_room_timeline_tombstoned_room_message).toAnnotatedString(), onSubmitClick = { onRoomSuccessorClick(roomSuccessor.roomId) }, modifier = modifier, - isCritical = false, submitText = stringResource(R.string.screen_room_timeline_tombstoned_room_action) ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateView.kt index 0f55985740..f5f81a3b64 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/identity/IdentityChangeStateView.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.appconfig.LearnMoreConfig import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.atomic.molecules.ComposerAlertLevel import io.element.android.libraries.designsystem.atomic.molecules.ComposerAlertMolecule import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -113,7 +114,7 @@ private fun ViolationAlert( }, submitText = stringResource(submitTextId), onSubmitClick = onSubmitClick, - isCritical = isCritical, + level = if (isCritical) ComposerAlertLevel.Critical else ComposerAlertLevel.Default, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt index a3cab8610f..65667041c3 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/virtual/TimelineItemRoomBeginningView.kt @@ -45,7 +45,6 @@ fun TimelineItemRoomBeginningView( avatar = null, content = stringResource(R.string.screen_room_timeline_upgraded_room_message).toAnnotatedString(), onSubmitClick = { onPredecessorRoomClick(predecessorRoom.roomId) }, - isCritical = false, submitText = stringResource(R.string.screen_room_timeline_upgraded_room_action) ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ComposerAlertMolecule.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ComposerAlertMolecule.kt index 07e2454dbc..b898871a6b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ComposerAlertMolecule.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/molecules/ComposerAlertMolecule.kt @@ -18,12 +18,15 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme +import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarSize @@ -34,8 +37,8 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.text.toAnnotatedString import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.ButtonSize +import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text -import io.element.android.libraries.designsystem.utils.BooleanProvider import io.element.android.libraries.ui.strings.CommonStrings @Composable @@ -44,20 +47,37 @@ fun ComposerAlertMolecule( content: AnnotatedString, onSubmitClick: () -> Unit, modifier: Modifier = Modifier, - isCritical: Boolean = false, + level: ComposerAlertLevel = ComposerAlertLevel.Default, + showIcon: Boolean = false, submitText: String = stringResource(CommonStrings.action_ok), ) { Column( modifier.fillMaxWidth() ) { - val lineColor = if (isCritical) ElementTheme.colors.borderCriticalSubtle else ElementTheme.colors.borderInfoSubtle + val lineColor = when (level) { + ComposerAlertLevel.Default -> ElementTheme.colors.borderInfoSubtle + ComposerAlertLevel.Info -> ElementTheme.colors.borderInfoSubtle + ComposerAlertLevel.Critical -> ElementTheme.colors.borderCriticalSubtle + } + + val startColor = when (level) { + ComposerAlertLevel.Default -> ElementTheme.colors.bgInfoSubtle + ComposerAlertLevel.Info -> ElementTheme.colors.bgInfoSubtle + ComposerAlertLevel.Critical -> ElementTheme.colors.bgCriticalSubtle + } + + val textColor = when (level) { + ComposerAlertLevel.Default -> ElementTheme.colors.textPrimary + ComposerAlertLevel.Info -> ElementTheme.colors.textInfoPrimary + ComposerAlertLevel.Critical -> ElementTheme.colors.textCriticalPrimary + } + Box( modifier = Modifier .fillMaxWidth() .height(1.dp) .background(lineColor) ) - val startColor = if (isCritical) ElementTheme.colors.bgCriticalSubtle else ElementTheme.colors.bgInfoSubtle val brush = Brush.verticalGradient( listOf(startColor, ElementTheme.colors.bgCanvasDefault), ) @@ -77,16 +97,28 @@ fun ComposerAlertMolecule( avatarData = avatar, avatarType = AvatarType.User, ) + } else if (showIcon) { + val icon = when (level) { + ComposerAlertLevel.Default -> CompoundIcons.Info() + ComposerAlertLevel.Info -> CompoundIcons.Info() + ComposerAlertLevel.Critical -> CompoundIcons.Error() + } + val iconTint = when (level) { + ComposerAlertLevel.Default -> ElementTheme.colors.iconPrimary + ComposerAlertLevel.Info -> ElementTheme.colors.iconInfoPrimary + ComposerAlertLevel.Critical -> ElementTheme.colors.iconCriticalPrimary + } + Icon( + painter = rememberVectorPainter(icon), + tint = iconTint, + contentDescription = null, + ) } Text( text = content, modifier = Modifier.weight(1f), style = ElementTheme.typography.fontBodyMdRegular, - color = if (isCritical) { - ElementTheme.colors.textCriticalPrimary - } else { - ElementTheme.colors.textPrimary - }, + color = textColor, textAlign = TextAlign.Start, ) } @@ -101,13 +133,45 @@ fun ComposerAlertMolecule( } } +enum class ComposerAlertLevel { + Default, + Info, + Critical +} + +internal data class ComposerAlertMoleculeParams( + val level: ComposerAlertLevel, + val avatar: AvatarData? = null, + val showIcon: Boolean = false, +) + +internal class ComposerAlertMoleculeParamsProvider : PreviewParameterProvider { + private val allLevels = sequenceOf( + ComposerAlertLevel.Default, + ComposerAlertLevel.Info, + ComposerAlertLevel.Critical + ) + + override val values: Sequence + get() = allLevels.flatMap { level -> + sequenceOf( + ComposerAlertMoleculeParams(level = level), + ComposerAlertMoleculeParams(level = level, avatar = anAvatarData(size = AvatarSize.ComposerAlert)), + ComposerAlertMoleculeParams(level = level, showIcon = true), + ) + } +} + @PreviewsDayNight @Composable -internal fun ComposerAlertMoleculePreview(@PreviewParameter(BooleanProvider::class) isCritical: Boolean) = ElementPreview { +internal fun ComposerAlertMoleculePreview( + @PreviewParameter(ComposerAlertMoleculeParamsProvider::class) params: ComposerAlertMoleculeParams, +) = ElementPreview { ComposerAlertMolecule( - avatar = anAvatarData(size = AvatarSize.ComposerAlert), + avatar = params.avatar, content = "Alice’s verified identity has changed. Learn more".toAnnotatedString(), - isCritical = isCritical, + level = params.level, + showIcon = params.showIcon, onSubmitClick = {}, ) } From 155d10668a0f33c0dcb87c1df8a8aec5ece4c4a9 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 13:47:52 +0100 Subject: [PATCH 362/898] quality: fix more tests --- .../impl/roles/ChangeRolesPresenter.kt | 1 - .../impl/roles/ChangeRolesPresenterTest.kt | 28 +++++-------------- .../test/FakeRolesAndPermissionsEntryPoint.kt | 19 +++++++++++++ .../impl/DefaultRoomDetailsEntryPointTest.kt | 2 ++ 4 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeRolesAndPermissionsEntryPoint.kt diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt index 87a659f7ce..719fdee2c2 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenter.kt @@ -104,7 +104,6 @@ class ChangeRolesPresenter( val roomInfo by room.roomInfoFlow.collectAsState() fun canChangeMemberRole(userId: UserId): Boolean { - // This is used to group the val currentUserRole = roomInfo.roleOf(room.sessionId) val otherUserRole = roomInfo.roleOf(userId) return currentUserRole.powerLevel > otherUserRole.powerLevel diff --git a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt index 6bcad2c4cc..4b3ed237cd 100644 --- a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesPresenterTest.kt @@ -351,21 +351,15 @@ class ChangeRolesPresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - skipItems(1) + skipItems(2) val initialState = awaitItem() assertThat(initialState.selectedUsers).hasSize(1) - initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2))) awaitItem().eventSink(ChangeRolesEvent.Save) val confirmingState = awaitItem() assertThat(confirmingState.savingState).isEqualTo(AsyncAction.ConfirmingNoParams) - confirmingState.eventSink(ChangeRolesEvent.Save) - - val loadingState = awaitItem() - assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) - skipItems(1) - + assertThat(awaitItem().savingState).isInstanceOf(AsyncAction.Loading::class.java) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) } } @@ -413,18 +407,12 @@ class ChangeRolesPresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - skipItems(1) + skipItems(2) val initialState = awaitItem() assertThat(initialState.selectedUsers).hasSize(1) - initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2))) - awaitItem().eventSink(ChangeRolesEvent.Save) - - val loadingState = awaitItem() - assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) - skipItems(1) - + assertThat(awaitItem().savingState).isInstanceOf(AsyncAction.Loading::class.java) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) assertThat(analyticsService.capturedEvents.last()).isEqualTo(RoomModeration(RoomModeration.Action.ChangeMemberRole, RoomModeration.Role.Moderator)) } @@ -491,7 +479,7 @@ class ChangeRolesPresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - skipItems(1) + skipItems(2) val initialState = awaitItem() assertThat(initialState.selectedUsers).hasSize(1) @@ -501,8 +489,6 @@ class ChangeRolesPresenterTest { val loadingState = awaitItem() assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) - skipItems(1) - assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(true)) assertThat(analyticsService.capturedEvents.last()).isEqualTo(RoomModeration(RoomModeration.Action.ChangeMemberRole, RoomModeration.Role.User)) } @@ -520,7 +506,7 @@ class ChangeRolesPresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - skipItems(1) + skipItems(2) val initialState = awaitItem() assertThat(initialState.selectedUsers).hasSize(1) @@ -529,7 +515,6 @@ class ChangeRolesPresenterTest { awaitItem().eventSink(ChangeRolesEvent.Save) val loadingState = awaitItem() assertThat(loadingState.savingState).isInstanceOf(AsyncAction.Loading::class.java) - skipItems(1) val failedState = awaitItem() assertThat(failedState.savingState).isInstanceOf(AsyncAction.Failure::class.java) @@ -567,5 +552,6 @@ internal fun TestScope.createChangeRolesPresenter( room = room, dispatchers = dispatchers, analyticsService = analyticsService, + roomCoroutineScope = this, ) } diff --git a/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeRolesAndPermissionsEntryPoint.kt b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeRolesAndPermissionsEntryPoint.kt new file mode 100644 index 0000000000..489f1ad3b0 --- /dev/null +++ b/features/rolesandpermissions/test/src/main/kotlin/io/element/android/features/changeroommemberroles/test/FakeRolesAndPermissionsEntryPoint.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2025 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.changeroommemberroles.test + +import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.node.Node +import io.element.android.features.rolesandpermissions.api.RolesAndPermissionsEntryPoint +import io.element.android.tests.testutils.lambda.lambdaError + +class FakeRolesAndPermissionsEntryPoint : RolesAndPermissionsEntryPoint { + override fun createNode(parentNode: Node, buildContext: BuildContext): Node { + lambdaError() + } +} diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt index f9bc40b711..52de9aa8f1 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/DefaultRoomDetailsEntryPointTest.kt @@ -13,6 +13,7 @@ import com.bumble.appyx.testing.junit4.util.MainDispatcherRule import com.google.common.truth.Truth.assertThat import io.element.android.features.call.test.FakeElementCallEntryPoint import io.element.android.features.changeroommemberroles.test.FakeChangeRoomMemberRolesEntryPoint +import io.element.android.features.changeroommemberroles.test.FakeRolesAndPermissionsEntryPoint import io.element.android.features.knockrequests.test.FakeKnockRequestsListEntryPoint import io.element.android.features.messages.test.FakeMessagesEntryPoint import io.element.android.features.poll.test.history.FakePollHistoryEntryPoint @@ -58,6 +59,7 @@ class DefaultRoomDetailsEntryPointTest { outgoingVerificationEntryPoint = FakeOutgoingVerificationEntryPoint(), reportRoomEntryPoint = FakeReportRoomEntryPoint(), changeRoomMemberRolesEntryPoint = FakeChangeRoomMemberRolesEntryPoint(), + rolesAndPermissionsEntryPoint = FakeRolesAndPermissionsEntryPoint(), ) } val callback = object : RoomDetailsEntryPoint.Callback { From 04584412f92072d66f10141d21f917c9259a8eb2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 14:23:41 +0100 Subject: [PATCH 363/898] Fix test --- .../changeserver/ChangeServerPresenterTest.kt | 14 ++- .../ChooseAccountProviderPresenterTest.kt | 7 +- .../ConfirmAccountProviderPresenterTest.kt | 91 +++++++++++++------ .../LoginPasswordPresenterTest.kt | 28 ++++-- .../onboarding/OnBoardingPresenterTest.kt | 7 +- .../auth/FakeMatrixAuthenticationService.kt | 23 +---- 6 files changed, 111 insertions(+), 59 deletions(-) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index 3b88ab03c0..47f9fee728 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -18,6 +18,7 @@ import io.element.android.features.wellknown.test.FakeWellknownRetriever import io.element.android.features.wellknown.test.anElementWellKnown import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.uri.ensureProtocol +import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_HOMESERVER import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService @@ -46,7 +47,11 @@ class ChangeServerPresenterTest { @Test fun `present - change server ok`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) createPresenter( authenticationService = authenticationService, enterpriseService = FakeEnterpriseService( @@ -55,7 +60,6 @@ class ChangeServerPresenterTest { ).test { val initialState = awaitItem() assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) - authenticationService.givenHomeserver(A_HOMESERVER) initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL))) val loadingState = awaitItem() assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java) @@ -66,10 +70,16 @@ class ChangeServerPresenterTest { @Test fun `present - change server error`() = runTest { + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.failure(AN_EXCEPTION) + }, + ) createPresenter( enterpriseService = FakeEnterpriseService( isAllowedToConnectToHomeserverResult = { true }, ), + authenticationService = authenticationService, ).test { val initialState = awaitItem() assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt index 2e13b0e555..96dc5b87ff 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/chooseaccountprovider/ChooseAccountProviderPresenterTest.kt @@ -95,7 +95,11 @@ class ChooseAccountProviderPresenterTest { @Test fun `present - select account provider and continue - error then clear error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.failure(AN_EXCEPTION) + }, + ) val presenter = createPresenter( enterpriseService = FakeEnterpriseService( defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) }, @@ -111,7 +115,6 @@ class ChooseAccountProviderPresenterTest { } awaitItem().also { assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1) - authenticationService.givenChangeServerError(AN_EXCEPTION) it.eventSink(ChooseAccountProviderEvents.Continue) skipItems(1) // Loading diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index 3978d3be6e..82c2caff61 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -53,11 +53,14 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - continue password login`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - authenticationService.givenHomeserver(A_HOMESERVER) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -75,11 +78,14 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - continue oidc`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -97,13 +103,16 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - cancel with failure`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -125,13 +134,16 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - cancel with success`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -152,13 +164,16 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - cancel to unblock`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -175,13 +190,16 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - success with failure`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -205,13 +223,16 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - oidc - success with success`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val defaultOidcActionFlow = FakeOidcActionFlow() val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -232,7 +253,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - submit fails`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.failure(AN_EXCEPTION) + }, + ) val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) @@ -240,7 +265,6 @@ class ConfirmAccountProviderPresenterTest { presenter.present() }.test { val initialState = awaitItem() - authenticationService.givenChangeServerError(RuntimeException()) initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading val failureState = awaitItem() @@ -251,7 +275,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - clear error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.failure(AN_EXCEPTION) + }, + ) val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) @@ -261,7 +289,6 @@ class ConfirmAccountProviderPresenterTest { val initialState = awaitItem() // Submit will return an error - authenticationService.givenChangeServerError(AN_EXCEPTION) initialState.eventSink(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading @@ -279,8 +306,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - confirm account creation without oidc and without url generates an error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) val presenter = createConfirmAccountProviderPresenter( params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true), matrixAuthenticationService = authenticationService, @@ -306,8 +336,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - confirm account creation with oidc is successful`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val presenter = createConfirmAccountProviderPresenter( params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true), matrixAuthenticationService = authenticationService, @@ -327,8 +360,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - confirm account creation with oidc and url continues with oidc`() = runTest { val aUrl = "aUrl" - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER_OIDC) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER_OIDC) + }, + ) val presenter = createConfirmAccountProviderPresenter( params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true), matrixAuthenticationService = authenticationService, @@ -349,8 +385,11 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - confirm account creation without oidc and with url continuing with url`() = runTest { val aUrl = "aUrl" - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) val presenter = createConfirmAccountProviderPresenter( params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true), matrixAuthenticationService = authenticationService, diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt index af158ec0da..fd048d1db0 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt @@ -42,8 +42,11 @@ class LoginPasswordPresenterTest { @Test fun `present - enter login and password`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) createLoginPasswordPresenter( authenticationService = authenticationService, ).test { @@ -61,8 +64,11 @@ class LoginPasswordPresenterTest { @Test fun `present - submit`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) createLoginPasswordPresenter( authenticationService = authenticationService, ).test { @@ -81,8 +87,11 @@ class LoginPasswordPresenterTest { @Test fun `present - submit with error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) createLoginPasswordPresenter( authenticationService = authenticationService, ).test { @@ -102,8 +111,11 @@ class LoginPasswordPresenterTest { @Test fun `present - clear error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() - authenticationService.givenHomeserver(A_HOMESERVER) + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(A_HOMESERVER) + }, + ) createLoginPasswordPresenter( authenticationService = authenticationService, ).test { diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt index 16f6c649fa..1cbbda450b 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt @@ -214,7 +214,11 @@ class OnBoardingPresenterTest { @Test fun `present - default account provider - login and clear error`() = runTest { - val authenticationService = FakeMatrixAuthenticationService() + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.failure(AN_EXCEPTION) + }, + ) val presenter = createPresenter( params = OnBoardingNode.Params( accountProvider = A_HOMESERVER_URL, @@ -231,7 +235,6 @@ class OnBoardingPresenterTest { skipItems(3) awaitItem().also { assertThat(it.defaultAccountProvider).isEqualTo(A_HOMESERVER_URL) - authenticationService.givenChangeServerError(AN_EXCEPTION) it.eventSink(OnBoardingEvents.OnSignIn(A_HOMESERVER_URL)) skipItems(1) // Loading diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeMatrixAuthenticationService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeMatrixAuthenticationService.kt index f1554df1d0..7901eafeea 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeMatrixAuthenticationService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeMatrixAuthenticationService.kt @@ -22,8 +22,6 @@ import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.simulateLongTask -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow val A_OIDC_DATA = OidcDetails(url = "a-url") @@ -31,13 +29,12 @@ class FakeMatrixAuthenticationService( var matrixClientResult: ((SessionId) -> Result)? = null, var loginWithQrCodeResult: (qrCodeData: MatrixQrCodeLoginData, progress: (QrCodeLoginStep) -> Unit) -> Result = lambdaRecorder Unit, Result> { _, _ -> Result.success(A_SESSION_ID) }, - private val importCreatedSessionLambda: (ExternalSession) -> Result = { lambdaError() } + private val importCreatedSessionLambda: (ExternalSession) -> Result = { lambdaError() }, + private val setHomeserverResult: (String) -> Result = { lambdaError() }, ) : MatrixAuthenticationService { - private val homeserver = MutableStateFlow(null) private var oidcError: Throwable? = null private var oidcCancelError: Throwable? = null private var loginError: Throwable? = null - private var changeServerError: Throwable? = null private var matrixClient: MatrixClient? = null private var onAuthenticationListener: ((MatrixClient) -> Unit)? = null @@ -53,16 +50,8 @@ class FakeMatrixAuthenticationService( } } - override fun getHomeserverDetails(): StateFlow { - return homeserver - } - - fun givenHomeserver(homeserver: MatrixHomeServerDetails) { - this.homeserver.value = homeserver - } - - override suspend fun setHomeserver(homeserver: String): Result = simulateLongTask { - changeServerError?.let { Result.failure(it) } ?: Result.success(Unit) + override suspend fun setHomeserver(homeserver: String): Result = simulateLongTask { + setHomeserverResult(homeserver) } override suspend fun login(username: String, password: String): Result = simulateLongTask { @@ -115,10 +104,6 @@ class FakeMatrixAuthenticationService( loginError = throwable } - fun givenChangeServerError(throwable: Throwable?) { - changeServerError = throwable - } - fun givenMatrixClient(matrixClient: MatrixClient) { this.matrixClient = matrixClient } From 47f7eeff07b0ae865e2e62abb4120694eee2f8f8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 14:32:00 +0100 Subject: [PATCH 364/898] MatrixHomeServerDetails does not need to be Parcelable --- .../libraries/matrix/api/auth/MatrixHomeServerDetails.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt index c2f0741571..ce3af70121 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt @@ -7,12 +7,8 @@ package io.element.android.libraries.matrix.api.auth -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize data class MatrixHomeServerDetails( val url: String, val supportsPasswordLogin: Boolean, val supportsOidcLogin: Boolean, -) : Parcelable +) From 6006537bdce313e77329e581bf2264b8ef41a731 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 14:39:59 +0100 Subject: [PATCH 365/898] Remove A_HOMESERVER and A_HOMESERVER_OIDC from TestData and replace by local `fun aMatrixHomeServerDetails()`. --- .../login/impl/MatrixHomeServerDetails.kt | 21 ++++++++++++++++ .../changeserver/ChangeServerPresenterTest.kt | 4 +-- .../ConfirmAccountProviderPresenterTest.kt | 25 +++++++++---------- .../LoginPasswordPresenterTest.kt | 10 ++++---- .../android/libraries/matrix/test/TestData.kt | 3 --- 5 files changed, 40 insertions(+), 23 deletions(-) create mode 100644 features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt new file mode 100644 index 0000000000..1bf32d20e2 --- /dev/null +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.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.login.impl + +import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails +import io.element.android.libraries.matrix.test.A_HOMESERVER_URL + +fun aMatrixHomeServerDetails( + url: String = A_HOMESERVER_URL, + supportsPasswordLogin: Boolean = false, + supportsOidcLogin: Boolean = false, +) = MatrixHomeServerDetails( + url = url, + supportsPasswordLogin = supportsPasswordLogin, + supportsOidcLogin = supportsOidcLogin, +) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index 47f9fee728..d723796265 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -10,6 +10,7 @@ package io.element.android.features.login.impl.changeserver import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource @@ -19,7 +20,6 @@ import io.element.android.features.wellknown.test.anElementWellKnown import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.matrix.test.AN_EXCEPTION -import io.element.android.libraries.matrix.test.A_HOMESERVER import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.wellknown.api.ElementWellKnown @@ -49,7 +49,7 @@ class ChangeServerPresenterTest { fun `present - change server ok`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) createPresenter( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index 82c2caff61..792abdf1a4 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -13,6 +13,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.features.login.impl.login.LoginMode import io.element.android.features.login.impl.screens.createaccount.AccountCreationNotSupported @@ -22,8 +23,6 @@ import io.element.android.features.login.impl.web.WebClientUrlForAuthenticationR import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.test.AN_EXCEPTION -import io.element.android.libraries.matrix.test.A_HOMESERVER -import io.element.android.libraries.matrix.test.A_HOMESERVER_OIDC import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow @@ -55,7 +54,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - continue password login`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails(supportsPasswordLogin = true)) }, ) val presenter = createConfirmAccountProviderPresenter( @@ -80,7 +79,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - continue oidc`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val presenter = createConfirmAccountProviderPresenter( @@ -105,7 +104,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - oidc - cancel with failure`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val defaultOidcActionFlow = FakeOidcActionFlow() @@ -136,7 +135,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - oidc - cancel with success`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val defaultOidcActionFlow = FakeOidcActionFlow() @@ -166,7 +165,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - oidc - cancel to unblock`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val defaultOidcActionFlow = FakeOidcActionFlow() @@ -192,7 +191,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - oidc - success with failure`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val defaultOidcActionFlow = FakeOidcActionFlow() @@ -225,7 +224,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - oidc - success with success`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val defaultOidcActionFlow = FakeOidcActionFlow() @@ -308,7 +307,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - confirm account creation without oidc and without url generates an error`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) val presenter = createConfirmAccountProviderPresenter( @@ -338,7 +337,7 @@ class ConfirmAccountProviderPresenterTest { fun `present - confirm account creation with oidc is successful`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val presenter = createConfirmAccountProviderPresenter( @@ -362,7 +361,7 @@ class ConfirmAccountProviderPresenterTest { val aUrl = "aUrl" val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER_OIDC) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) val presenter = createConfirmAccountProviderPresenter( @@ -387,7 +386,7 @@ class ConfirmAccountProviderPresenterTest { val aUrl = "aUrl" val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) val presenter = createConfirmAccountProviderPresenter( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt index fd048d1db0..bfdc0a6785 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt @@ -10,11 +10,11 @@ package io.element.android.features.login.impl.screens.loginpassword import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.test.AN_EXCEPTION -import io.element.android.libraries.matrix.test.A_HOMESERVER import io.element.android.libraries.matrix.test.A_PASSWORD import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_NAME @@ -44,7 +44,7 @@ class LoginPasswordPresenterTest { fun `present - enter login and password`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) createLoginPasswordPresenter( @@ -66,7 +66,7 @@ class LoginPasswordPresenterTest { fun `present - submit`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) createLoginPasswordPresenter( @@ -89,7 +89,7 @@ class LoginPasswordPresenterTest { fun `present - submit with error`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) createLoginPasswordPresenter( @@ -113,7 +113,7 @@ class LoginPasswordPresenterTest { fun `present - clear error`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(A_HOMESERVER) + Result.success(aMatrixHomeServerDetails()) }, ) createLoginPasswordPresenter( diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt index 8c22c90cd7..dc1817cf12 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/TestData.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.test import androidx.annotation.ColorInt -import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias @@ -79,8 +78,6 @@ const val AN_ACCOUNT_PROVIDER = "matrix.org" const val AN_ACCOUNT_PROVIDER_2 = "element.io" const val AN_ACCOUNT_PROVIDER_3 = "other.io" -val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidcLogin = false) -val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidcLogin = true) val A_ROOM_NOTIFICATION_MODE = RoomNotificationMode.MUTE const val AN_AVATAR_URL = "mxc://data" From c397c8e2c3a51123d78fea7c6992cd1e1e347f87 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 15:07:44 +0100 Subject: [PATCH 366/898] Ensure user cannot select unsupported homeserver. In this case show the appropriate error (parity with iOS) --- .../changeserver/ChangeServerPresenter.kt | 9 +++++- .../changeserver/ChangeServerStateProvider.kt | 8 +++++ .../login/impl/error/ChangeServerError.kt | 1 + .../changeserver/ChangeServerPresenterTest.kt | 29 ++++++++++++++++++- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index d3db7496c5..71d4e97c3b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -13,6 +13,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import dev.zacsweers.metro.Inject +import io.element.android.features.login.impl.R import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource @@ -60,7 +61,13 @@ class ChangeServerPresenter( title = data.title, accountProviderUrl = data.url, ) - authenticationService.setHomeserver(data.url).getOrThrow() + val details = authenticationService.setHomeserver(data.url).getOrThrow() + if (details.supportsOidcLogin.not() && details.supportsPasswordLogin.not()) { + // Unsupported homeserver + throw ChangeServerError.Error( + messageId = R.string.screen_login_error_unsupported_authentication, + ) + } // Homeserver is valid, remember user choice accountProviderDataSource.userSelection(data) }.runCatchingUpdatingState(changeServerAction, errorTransform = ChangeServerError::from) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt index a97ff2dda1..8a7d015750 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt @@ -8,6 +8,7 @@ package io.element.android.features.login.impl.changeserver import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.login.impl.R import io.element.android.features.login.impl.error.ChangeServerError import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings @@ -34,6 +35,13 @@ open class ChangeServerStateProvider : PreviewParameterProvider error is AuthenticationException.SlidingSyncVersion -> SlidingSyncAlert is AuthenticationException.Oidc -> Error(messageStr = error.message) is AccountProviderAccessException.NeedElementProException -> NeedElementPro( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index d723796265..ce026b447c 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -10,6 +10,7 @@ package io.element.android.features.login.impl.changeserver import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService +import io.element.android.features.login.impl.R import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider @@ -49,7 +50,7 @@ class ChangeServerPresenterTest { fun `present - change server ok`() = runTest { val authenticationService = FakeMatrixAuthenticationService( setHomeserverResult = { - Result.success(aMatrixHomeServerDetails()) + Result.success(aMatrixHomeServerDetails(supportsOidcLogin = true)) }, ) createPresenter( @@ -95,6 +96,32 @@ class ChangeServerPresenterTest { } } + @Test + fun `present - change server unsupported server`() = runTest { + val authenticationService = FakeMatrixAuthenticationService( + setHomeserverResult = { + Result.success(aMatrixHomeServerDetails()) + }, + ) + createPresenter( + enterpriseService = FakeEnterpriseService( + isAllowedToConnectToHomeserverResult = { true }, + ), + authenticationService = authenticationService, + ).test { + val initialState = awaitItem() + assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized) + initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL))) + val loadingState = awaitItem() + assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java) + val failureState = awaitItem() + assertThat(failureState.changeServerAction).isInstanceOf(AsyncData.Failure::class.java) + assertThat(failureState.changeServerAction.errorOrNull()).isEqualTo( + ChangeServerError.Error(R.string.screen_login_error_unsupported_authentication) + ) + } + } + @Test fun `present - change server not allowed error`() = runTest { val isAllowedToConnectToHomeserverResult = lambdaRecorder { false } From bb93d6ff06d7b380e608f0650336ffea7a575dda Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 15:21:50 +0100 Subject: [PATCH 367/898] Always let the user try what they have entered, to get an explicit error if they continue --- .../features/login/impl/resolver/HomeserverResolver.kt | 7 ++++--- .../SearchAccountProviderPresenterTest.kt | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt index c43839517c..4cf1d416e8 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/resolver/HomeserverResolver.kt @@ -52,9 +52,10 @@ class HomeserverResolver( } } } - // If list is empty, and the user has entered an URL, do not block the user. - if (currentList.isEmpty() && trimmedUserInput.isValidUrl()) { - emit(listOf(HomeserverData(homeserverUrl = trimmedUserInput))) + // If list is empty, and candidateBase is a valid an URL, do not block the user. + // A unsupported homeserver / homeserver not found error will be displayed if the user continues + if (currentList.isEmpty() && candidateBase.isValidUrl()) { + emit(listOf(HomeserverData(homeserverUrl = candidateBase))) } } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index 67453119c7..f4c193ced2 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -85,7 +85,13 @@ class SearchAccountProviderPresenterTest { assertThat(withInputState.userInput).isEqualTo("test") assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized) assertThat(awaitItem().userInputResult).isInstanceOf(AsyncData.Loading::class.java) - assertThat(awaitItem().userInputResult).isEqualTo(AsyncData.Uninitialized) + assertThat(awaitItem().userInputResult).isEqualTo( + AsyncData.Success( + listOf( + aHomeserverData(homeserverUrl = "https://test"), + ) + ) + ) } } From 0c5912ded40e4c6309a90131e7e04ff46f1fa478 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 15:22:19 +0100 Subject: [PATCH 368/898] Small cleanup --- .../searchaccountprovider/SearchAccountProviderStateProvider.kt | 2 +- .../notifications/DefaultActiveNotificationsProviderTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt index 3dd7a3d8c5..97cc861911 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderStateProvider.kt @@ -43,5 +43,5 @@ fun aHomeserverDataList(): List { fun aHomeserverData( homeserverUrl: String = AuthenticationConfig.MATRIX_ORG_URL, ): HomeserverData { - return HomeserverData(homeserverUrl = homeserverUrl,) + return HomeserverData(homeserverUrl = homeserverUrl) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt index a0ce8b2edb..b06842ccdb 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultActiveNotificationsProviderTest.kt @@ -44,7 +44,7 @@ class DefaultActiveNotificationsProviderTest { @Test fun `getMembershipNotificationsForSession returns only membership notifications for that session id`() { val activeNotifications = listOf( - aStatusBarNotification(id = notificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID), groupId = A_SESSION_ID.value,), + aStatusBarNotification(id = notificationIdProvider.getRoomMessagesNotificationId(A_SESSION_ID), groupId = A_SESSION_ID.value), aStatusBarNotification(id = notificationIdProvider.getSummaryNotificationId(A_SESSION_ID_2), groupId = A_SESSION_ID_2.value), aStatusBarNotification( id = notificationIdProvider.getRoomInvitationNotificationId(A_SESSION_ID_2), From 8e72ea4e7ceab44e778ffa66cf15b7a7fde25433 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 15:25:39 +0100 Subject: [PATCH 369/898] Use presenter test extension --- .../ChangeAccountProviderPresenterTest.kt | 16 ++--- .../ConfirmAccountProviderPresenterTest.kt | 60 +++++-------------- .../CreateAccountPresenterTest.kt | 28 +++------ .../qrcode/intro/QrCodeIntroPresenterTest.kt | 16 ++--- .../qrcode/scan/QrCodeScanPresenterTest.kt | 15 +---- .../SearchAccountProviderPresenterTest.kt | 24 ++------ 6 files changed, 39 insertions(+), 120 deletions(-) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt index f2e933390b..99fa65876d 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt @@ -7,9 +7,6 @@ package io.element.android.features.login.impl.screens.changeaccountprovider -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService @@ -18,6 +15,7 @@ import io.element.android.features.login.impl.changeserver.aChangeServerState import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2 import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -34,9 +32,7 @@ class ChangeAccountProviderPresenterTest { defaultHomeserverListResult = { emptyList() } ), ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.accountProviders).isEqualTo( listOf( @@ -63,9 +59,7 @@ class ChangeAccountProviderPresenterTest { } ), ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.accountProviders).isEqualTo( listOf( @@ -99,9 +93,7 @@ class ChangeAccountProviderPresenterTest { } ), ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.accountProviders).isEqualTo( listOf( diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index 792abdf1a4..182b7d6e27 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -7,9 +7,6 @@ package io.element.android.features.login.impl.screens.confirmaccountprovider -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.test.FakeEnterpriseService @@ -28,6 +25,7 @@ import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow import io.element.android.tests.testutils.WarmUpRule +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -39,9 +37,7 @@ class ConfirmAccountProviderPresenterTest { @Test fun `present - initial test`() = runTest { val presenter = createConfirmAccountProviderPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.isAccountCreation).isFalse() assertThat(initialState.submitEnabled).isTrue() @@ -60,9 +56,7 @@ class ConfirmAccountProviderPresenterTest { val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -85,9 +79,7 @@ class ConfirmAccountProviderPresenterTest { val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -112,9 +104,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -143,9 +133,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -173,9 +161,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -199,9 +185,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -232,9 +216,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, defaultOidcActionFlow = defaultOidcActionFlow, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) val loadingState = awaitItem() @@ -260,9 +242,7 @@ class ConfirmAccountProviderPresenterTest { val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading @@ -282,9 +262,7 @@ class ConfirmAccountProviderPresenterTest { val presenter = createConfirmAccountProviderPresenter( matrixAuthenticationService = authenticationService, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() // Submit will return an error @@ -317,9 +295,7 @@ class ConfirmAccountProviderPresenterTest { throw AccountCreationNotSupported() }, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading @@ -344,9 +320,7 @@ class ConfirmAccountProviderPresenterTest { params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true), matrixAuthenticationService = authenticationService, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading @@ -369,9 +343,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl }, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading @@ -394,9 +366,7 @@ class ConfirmAccountProviderPresenterTest { matrixAuthenticationService = authenticationService, webClientUrlForAuthenticationRetriever = FakeWebClientUrlForAuthenticationRetriever { aUrl }, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(ConfirmAccountProviderEvents.Continue) skipItems(1) // Loading diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenterTest.kt index 8d70173d11..63f68b2221 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenterTest.kt @@ -7,9 +7,6 @@ package io.element.android.features.login.impl.screens.createaccount -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.meta.BuildMeta @@ -26,6 +23,7 @@ import io.element.android.libraries.matrix.test.verification.FakeSessionVerifica import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -37,9 +35,7 @@ class CreateAccountPresenterTest { @Test fun `present - initial state`() = runTest { val presenter = createPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.url).isEqualTo("aUrl") assertThat(initialState.pageProgress).isEqualTo(0) @@ -51,9 +47,7 @@ class CreateAccountPresenterTest { @Test fun `present - set up progress update the state`() = runTest { val presenter = createPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(CreateAccountEvents.SetPageProgress(33)) assertThat(awaitItem().pageProgress).isEqualTo(33) @@ -65,9 +59,7 @@ class CreateAccountPresenterTest { val presenter = createPresenter( messageParser = FakeMessageParser { error("An error") } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(CreateAccountEvents.OnMessageReceived("")) assertThat(awaitItem().createAction).isInstanceOf(AsyncAction.Failure::class.java) @@ -77,9 +69,7 @@ class CreateAccountPresenterTest { @Test fun `present - receiving a message containing isTrusted is ignored`() = runTest { val presenter = createPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(CreateAccountEvents.OnMessageReceived("isTrusted")) } @@ -98,9 +88,7 @@ class CreateAccountPresenterTest { messageParser = FakeMessageParser(lambda), clientProvider = clientProvider, ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(CreateAccountEvents.OnMessageReceived("aMessage")) assertThat(awaitItem().createAction.isLoading()).isTrue() @@ -118,9 +106,7 @@ class CreateAccountPresenterTest { ), messageParser = FakeMessageParser { anExternalSession() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(CreateAccountEvents.OnMessageReceived("")) assertThat(awaitItem().createAction.isLoading()).isTrue() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenterTest.kt index 83686b56c6..6cc34fd32f 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenterTest.kt @@ -7,14 +7,12 @@ package io.element.android.features.login.impl.screens.qrcode.intro -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.permissions.test.FakePermissionsPresenter import io.element.android.libraries.permissions.test.FakePermissionsPresenterFactory +import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest import org.junit.Test @@ -22,9 +20,7 @@ class QrCodeIntroPresenterTest { @Test fun `present - initial state`() = runTest { val presenter = createQrCodeIntroPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { awaitItem().run { assertThat(appName).isEqualTo("AppName") assertThat(desktopAppName).isEqualTo("DesktopAppName") @@ -39,9 +35,7 @@ class QrCodeIntroPresenterTest { val permissionsPresenter = FakePermissionsPresenter().apply { setPermissionGranted() } val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter) val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { awaitItem().eventSink(QrCodeIntroEvents.Continue) assertThat(awaitItem().canContinue).isTrue() } @@ -52,9 +46,7 @@ class QrCodeIntroPresenterTest { val permissionsPresenter = FakePermissionsPresenter() val permissionsPresenterFactory = FakePermissionsPresenterFactory(permissionsPresenter) val presenter = createQrCodeIntroPresenter(permissionsPresenterFactory = permissionsPresenterFactory) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { awaitItem().eventSink(QrCodeIntroEvents.Continue) assertThat(awaitItem().cameraPermissionState.showDialog).isTrue() } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenterTest.kt index a4d594399f..058f417fd1 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenterTest.kt @@ -7,9 +7,6 @@ package io.element.android.features.login.impl.screens.qrcode.scan -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService @@ -34,9 +31,7 @@ class QrCodeScanPresenterTest { @Test fun `present - initial state`() = runTest { val presenter = createQrCodeScanPresenter() - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { awaitItem().run { assertThat(isScanning).isTrue() assertThat(authenticationAction.isUninitialized()).isTrue() @@ -114,9 +109,7 @@ class QrCodeScanPresenterTest { parseQrCodeLoginDataResult = { Result.failure(Exception("Failed to parse QR code")) } ) val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink(QrCodeScanEvents.QrCodeScanned(byteArrayOf())) assertThat(awaitItem().isScanning).isFalse() @@ -140,9 +133,7 @@ class QrCodeScanPresenterTest { } qrCodeLoginManager.resetAction = resetAction val presenter = createQrCodeScanPresenter(qrCodeLoginDataFactory = qrCodeLoginDataFactory, qrCodeLoginManager = qrCodeLoginManager) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { // Skip initial item skipItems(1) diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index f4c193ced2..f19743bac0 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -7,9 +7,6 @@ package io.element.android.features.login.impl.screens.searchaccountprovider -import app.cash.molecule.RecompositionMode -import app.cash.molecule.moleculeFlow -import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.login.impl.changeserver.aChangeServerState import io.element.android.features.login.impl.resolver.HomeserverResolver @@ -18,6 +15,7 @@ import io.element.android.libraries.matrix.test.auth.FakeHomeServerLoginCompatib import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value +import io.element.android.tests.testutils.test import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -34,9 +32,7 @@ class SearchAccountProviderPresenterTest { homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() assertThat(initialState.userInput).isEmpty() assertThat(initialState.userInputResult).isEqualTo(AsyncData.Uninitialized) @@ -50,9 +46,7 @@ class SearchAccountProviderPresenterTest { homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("https://test.org")) val withInputState = awaitItem() @@ -76,9 +70,7 @@ class SearchAccountProviderPresenterTest { homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRetriever), changeServerPresenter = { aChangeServerState() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test")) val withInputState = awaitItem() @@ -111,9 +103,7 @@ class SearchAccountProviderPresenterTest { homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test")) val withInputState = awaitItem() @@ -153,9 +143,7 @@ class SearchAccountProviderPresenterTest { homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeLoginCompatibilityChecker), changeServerPresenter = { aChangeServerState() } ) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { + presenter.test { val initialState = awaitItem() initialState.eventSink.invoke(SearchAccountProviderEvents.UserInput("test")) val withInputState = awaitItem() From 3c3c81622fc2ff083ca6e66527d35994131a1a78 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Thu, 6 Nov 2025 14:58:50 +0000 Subject: [PATCH 370/898] Update screenshots --- ...tures.login.impl.changeserver_ChangeServerView_Day_5_en.png | 3 +++ ...res.login.impl.changeserver_ChangeServerView_Night_5_en.png | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Day_5_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Night_5_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Day_5_en.png new file mode 100644 index 0000000000..1125024a5a --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Day_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae6d230961018f1128ea655529a4287dbe3bbbc2762079d0c4f335313d2f2ab0 +size 25166 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Night_5_en.png new file mode 100644 index 0000000000..777f0bb627 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.changeserver_ChangeServerView_Night_5_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1502711e6305f9adf4719b28c1fe3755089ae6c42c6c66e8e5bf73ab2bbb65c1 +size 23874 From e2875063218c489209159af92d230a9d86a0146c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 6 Nov 2025 18:16:39 +0100 Subject: [PATCH 371/898] Ensure the form data are not lost when opening the log viewer. Closes #5579 --- .../features/rageshake/impl/bugreport/BugReportPresenter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt index bfcfcf424e..659c397c96 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt @@ -32,7 +32,7 @@ class BugReportPresenter( private val bugReporter: BugReporter, private val crashDataStore: CrashDataStore, private val screenshotHolder: ScreenshotHolder, - @AppCoroutineScope + @param:AppCoroutineScope private val appCoroutineScope: CoroutineScope, ) : Presenter { private class BugReporterUploadListener( @@ -77,7 +77,7 @@ class BugReportPresenter( val sendingAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - val formState: MutableState = remember { + val formState: MutableState = rememberSaveable { mutableStateOf(BugReportFormState.Default) } val uploadListener = BugReporterUploadListener(sendingProgress, sendingAction) From e66590061f1066196e9dfbce4d8870545bf8edd1 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Thu, 6 Nov 2025 17:40:02 +0000 Subject: [PATCH 372/898] Update screenshots --- ...references.impl.advanced_AdvancedSettingsViewDark_0_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_1_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_2_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_3_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_4_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_5_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_6_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_7_en.png | 4 ++-- ...references.impl.advanced_AdvancedSettingsViewDark_8_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_0_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_1_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_2_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_3_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_4_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_5_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_6_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_7_en.png | 4 ++-- ...eferences.impl.advanced_AdvancedSettingsViewLight_8_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png | 4 ++-- ...ns.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png | 4 ++-- ....impl.permissions_ChangeRoomPermissionsView_Night_0_en.png | 4 ++-- ....impl.permissions_ChangeRoomPermissionsView_Night_1_en.png | 4 ++-- ....impl.permissions_ChangeRoomPermissionsView_Night_2_en.png | 4 ++-- ....impl.permissions_ChangeRoomPermissionsView_Night_3_en.png | 4 ++-- ....impl.permissions_ChangeRoomPermissionsView_Night_4_en.png | 4 ++-- ...mponents.preferences_PreferenceDropdown_Preferences_en.png | 4 ++-- 29 files changed, 58 insertions(+), 58 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png index b4caf353fa..ae30993ae5 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5116af838229fd1d17eb6d63ffdde82e90b75ff01000f8bf6f83edb982555443 -size 47358 +oid sha256:d986fd93989b178dc08957270a75fee126c9910a45d067ca7c3353d188b69850 +size 47377 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png index d14d977afe..e1c896297c 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d2f0f54ecb417dcc7ebb2e125b61e9e01f682dd7fea0eabb729c243387b6004 -size 47247 +oid sha256:cb5c468b4f8235595bcfb3355fa29cfd43567d51e27785357bdecb13ab1dadd9 +size 47268 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png index 7791c3dada..dc78febfda 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ef498d98d519dfe496622ec3ec7289ef5e636bb4c8ce4512cde1997fba3247d -size 47237 +oid sha256:e16ace640aa43a2d6b923a46fec94ca41e1b9ce1632cbd0319c646c08dc1b167 +size 47257 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png index d0b1a44c01..bc69773fda 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:665aa1c40622f38b0abe12d763c260a07011f7c32e47442d44477d2fead32e6c -size 47224 +oid sha256:f90e8efb79b3525fafdee503a0aa5280e1d5bf0275ea3be0e79ee323c7b03751 +size 47248 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png index 3abb98e008..3a3942319f 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6df36eb76909634d7ef59d9fa44edc1aa1f87412b8524ec2a9f3c26554e89065 -size 47069 +oid sha256:8afb2771627534be13f709b1e125d9d4ae26d4ca1a7db102b31ef14620bb45a9 +size 47089 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png index a45ca7d865..4d87b9f694 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e6997a02c70f17866e90f19cea2878844738748ce9ad60f85fbf04a3f35d8a -size 47360 +oid sha256:4e7b71b415175d4cae28404ca4aa361929df63fb670b9b5c86c327dd6df73ddf +size 47379 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png index dee1f01854..6ae9086f2a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eae7e14242722e0b65e6bfe02f0d8c54e4581113c19888acfdbfd84b260ba53a -size 47013 +oid sha256:693180156b1bad6c7e0f1ef698ec8b6787912c2ca2f7d94326e2cda043ba6819 +size 47034 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png index 6e7bf498c1..fc1664cc49 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56d937d008aa6fea8b4dadc12eb313f217b15b2d7458d5d3b4b0af77918988fc -size 46648 +oid sha256:ba1df0d1d16e51d28ecbfcc34be2d7ffb6722efd8bc6089b4befb2d79f82ce5f +size 46668 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png index a293d0038e..76ed86b02b 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewDark_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1c44eb7d614c5db5c48a75cf483ee9364aa2113dffd79faf116835a21519b79 -size 53087 +oid sha256:3268b8e9c04a5a966f7d5b991299e783d6efe04cb05800ef45b2fd226b1d10bf +size 53105 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png index 2de7d822fa..b080444cda 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd31762cef1c2d84318d3fcb63f08c3b544368c59643d6ea54174e9ca6e7191b -size 48985 +oid sha256:e44bb25d897d6f4de241267c56c6e3bed1d68d3d21522c4d0200a82041ddc083 +size 48999 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png index 167e63caf4..4879d67434 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7789e460d69fa17b7a412a456930f2383c0ebb84a7a603c7443f0e7b66f2be0e -size 48866 +oid sha256:1cb9fe598d7bb977561b403e43acf2dc2ab943f17cd82aa57981c2adafdc07e7 +size 48879 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png index 96a27a4fc8..f46bf72380 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fddfcdd50bf43eec8b0c5739067609aede15b6541de75282274803464d5ffc4 -size 48885 +oid sha256:981005ce4565843a041995c6c69cc9503a983de5df82433019fa33dc5ce3f597 +size 48896 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png index 056e1a8e21..0645a6d0b9 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85c09edfa3db27e686dceb7aa21e427a25cdc4860669cb716a820b8ebf8a255e -size 48868 +oid sha256:8f80185f3563d3e74abd3a1cccc79fbdfe47e4cf0e3bea98130698e74d09eab4 +size 48878 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png index fdfaa42df9..a0d683dc0c 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d694ba80e6faeb81a195064e59d3febe4630df718124e7ee842ba1aad2634117 -size 48789 +oid sha256:1cc613718c250b031c8bf551996bb528956894fea2e2e98619b5f45361d6947d +size 48804 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png index 2e3b8e8deb..c611d7e93a 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b556d0d99e4e93a736e25f79df51bd02f465192496463d0480081105de1077c -size 48987 +oid sha256:badb0c35e0c1f6b3121a2469862b5559e061023513771a65ebdeb94ec7b98078 +size 49001 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png index 5c4df596af..74bc5f88d8 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_6_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e285f7f4435053db05f95dee11bf3c46f4649c1f6a2f6e18ad91e652f0725ac -size 48809 +oid sha256:aa36e842c20867e60424763ec0e2d9ed7f01030cf0525df3b0965273ad3e7e06 +size 48823 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png index 1bddc35de9..03e8601f97 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_7_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:607061d3f293b5d575b236cd24f8d13b3d2db6dbd76e21710b698ccdee38541b -size 48492 +oid sha256:6f9a0affa7a07696ce1a0be56e1264b8b7213dd1fa5627b6af3307ba9ebaca36 +size 48508 diff --git a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png index 859e412c51..8f10026eed 100644 --- a/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png +++ b/tests/uitests/src/test/snapshots/images/features.preferences.impl.advanced_AdvancedSettingsViewLight_8_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:adfc7ec5289fbd2bcdc3b6be31b1644165f24bd422957bb038b381b57d309e98 -size 55242 +oid sha256:d0241bcb4fec4fe87d0a161960726bc9a33987b78c4748a6670771ca3e9b7584 +size 55254 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png index abe319f714..2021890e00 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9043007191252fac22ab58a635e0c59d96edcba741fccf9bb9812889eb15ca24 -size 60259 +oid sha256:7c180424588c0856aee7ba2de7d93845c96201ecbdc4f23a00b4d671a903a980 +size 60193 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png index 282b3fc89e..dc8055d41c 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cadaea0794b81e28b03c84b4331d2dd11df6cff63344e1e2561de9e3a1450c23 -size 60178 +oid sha256:ab650b1fa9b1e7b464fb8ac9006d8d7705d9d4409093797efac24b9f4ad90afd +size 60109 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png index 5823a4adec..6c2cf322be 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f55bfa9823ab3480ed846e137ed7e1fa1f3a0011ef8034458ac2baa4261cd7e8 -size 52084 +oid sha256:d692109b09fbdd5f0c147ebbb7f352d62491f785a5266308d3a60447f91a6e00 +size 52103 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png index ca5dd4e9c0..296a9fc1fe 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5ce4f5ac003767c68a89465e1eb396f7d5fb67f2157a4e00a56591820666644 -size 49522 +oid sha256:4c6726e8db1fc6999fb43cac1614ad8179adc1191b4c1e62b8e66fc5fd70bf76 +size 49542 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png index a14ec8aad7..7acc0ebd0f 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Day_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c5692d76f33a622452727fc4b1d1438cb608038f1cb0b6ba86a7b8e98f143db -size 56335 +oid sha256:e8519f86746bb89c6236332f83fbfc00fad488593f487f3d4148285abd5a3cf7 +size 56356 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png index c5b0cafa86..180d3ca9c7 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_0_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:644b0d4d7c9ac619fa277086071a35d08f24408816a73b5293acde325d06373b -size 58568 +oid sha256:27d7653e6052117a360dfe0e03e16875958e9f19bd56355881e9399fedcabf6c +size 58578 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png index 70aa7e518e..f0157f1ced 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_1_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a62487bdcd023634fbb7a81642821dbca4b813798aae1dfaa4d5b852d7e03fca -size 58470 +oid sha256:2fad72bab0a58f75ca68aa67442dcae44946e0c2b156139e03536dda051f4115 +size 58471 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png index 8f56a177e4..f3f664d4f6 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_2_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08d28320336e02d0db2d4eb5b20793879d54e52f3dbb287f6399efcad5dbc47e -size 50565 +oid sha256:fd4f60534b4df7f3631d79b39e7aeb22609d967f7edef0ee5dee4ea05f1aa183 +size 50635 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png index a0a2e1a701..cb69a420a5 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64bc6edeffdcec9381c9049383d72ed4f5fe785de3f0b24d9f7a32466a26f24b -size 47347 +oid sha256:d860c6be97aa2929fb37e25f312f14ee17312b2e201268e232fc6a5dd2621ce2 +size 47394 diff --git a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png index b4dd57cfa6..ade6d6b994 100644 --- a/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png +++ b/tests/uitests/src/test/snapshots/images/features.rolesandpermissions.impl.permissions_ChangeRoomPermissionsView_Night_4_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45da36f66abead151d7634c2c554862db03948eede77adf1f397fead1429e67e -size 54151 +oid sha256:4c4e198a9cb65a66ea0854d9fcde915ea4a70826aef3ccbb4a8e7f2d38f285fd +size 54200 diff --git a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png index 9e7bb7a63e..99527960b1 100644 --- a/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png +++ b/tests/uitests/src/test/snapshots/images/libraries.designsystem.components.preferences_PreferenceDropdown_Preferences_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9af7f91767070914af81742b8f9d9a85c68e5aa818d19b7981527eb7e4360ec4 -size 31366 +oid sha256:73749a1655e26374776fa7e8aa83582b969cd40259a5ff580710a2b19acdddb6 +size 32072 From e47c0b32d700cdf478c5e17a814ff13ea301481e Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 20:07:01 +0100 Subject: [PATCH 373/898] change(room members): show ModerationView for banned members too --- .../roomdetails/impl/members/RoomMemberListPresenter.kt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) 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 90619d2e2d..a0eca8039a 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 @@ -17,7 +17,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import dev.zacsweers.metro.Inject -import io.element.android.features.roommembermoderation.api.ModerationAction import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents import io.element.android.features.roommembermoderation.api.RoomMemberModerationState import io.element.android.libraries.architecture.AsyncData @@ -164,11 +163,7 @@ class RoomMemberListPresenter( is RoomMemberListEvents.OnSearchActiveChanged -> isSearchActive = event.active is RoomMemberListEvents.UpdateSearchQuery -> searchQuery = event.query is RoomMemberListEvents.RoomMemberSelected -> - if (event.roomMember.membership == RoomMembershipState.BAN) { - roomModerationState.eventSink(RoomMemberModerationEvents.ProcessAction(ModerationAction.UnbanUser, event.roomMember.toMatrixUser())) - } else { - roomModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.roomMember.toMatrixUser())) - } + roomModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.roomMember.toMatrixUser())) } } From 5f2453b128cffb5c0d7aeb77cb46e4a3a5787fdc Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 6 Nov 2025 20:10:07 +0100 Subject: [PATCH 374/898] change(room members): add reason to unban --- .../impl/InternalRoomMemberModerationEvents.kt | 2 +- .../impl/RoomMemberModerationPresenter.kt | 8 ++++++-- .../impl/RoomMemberModerationView.kt | 13 ++++++++----- .../impl/RoomMemberModerationPresenterTest.kt | 2 +- .../impl/RoomMemberModerationViewTest.kt | 2 +- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/InternalRoomMemberModerationEvents.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/InternalRoomMemberModerationEvents.kt index 902c2bd21f..1bdcfb88f9 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/InternalRoomMemberModerationEvents.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/InternalRoomMemberModerationEvents.kt @@ -12,6 +12,6 @@ import io.element.android.features.roommembermoderation.api.RoomMemberModeration sealed interface InternalRoomMemberModerationEvents : RoomMemberModerationEvents { data class DoKickUser(val reason: String) : InternalRoomMemberModerationEvents data class DoBanUser(val reason: String) : InternalRoomMemberModerationEvents - data object DoUnbanUser : InternalRoomMemberModerationEvents + data class DoUnbanUser(val reason: String) : InternalRoomMemberModerationEvents data object Reset : InternalRoomMemberModerationEvents } diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt index 995baa069b..9ff6b0b0de 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenter.kt @@ -118,7 +118,7 @@ class RoomMemberModerationPresenter( } is InternalRoomMemberModerationEvents.DoUnbanUser -> { selectedUser?.let { - coroutineScope.unbanUser(it.userId, unbanUserAsyncAction) + coroutineScope.unbanUser(it.userId, event.reason, unbanUserAsyncAction) } selectedUser = null } @@ -197,10 +197,14 @@ class RoomMemberModerationPresenter( private fun CoroutineScope.unbanUser( userId: UserId, + reason: String, unbanUserAction: MutableState>, ) = runActionAndWaitForMembershipChange(unbanUserAction) { analyticsService.capture(RoomModeration(RoomModeration.Action.UnbanMember)) - room.unbanUser(userId = userId) + room.unbanUser( + userId = userId, + reason = reason.takeIf { it.isNotBlank() }, + ) } private fun CoroutineScope.runActionAndWaitForMembershipChange( diff --git a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt index 248b6cd02b..b7d3dfee95 100644 --- a/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt +++ b/features/roommembermoderation/impl/src/main/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationView.kt @@ -166,18 +166,21 @@ private fun RoomMemberAsyncActions( } when (val action = state.unbanUserAsyncAction) { is AsyncAction.Confirming -> { - ConfirmationDialog( + TextFieldDialog( title = stringResource(R.string.screen_bottom_sheet_manage_room_member_unban_member_confirmation_title), - content = stringResource(R.string.screen_bottom_sheet_manage_room_member_unban_member_confirmation_description), submitText = stringResource(R.string.screen_bottom_sheet_manage_room_member_unban_member_confirmation_action), - onSubmitClick = { + onSubmit = { reason -> val userDisplayName = selectedUser?.getBestName().orEmpty() asyncIndicatorState.enqueue { AsyncIndicator.Loading(text = stringResource(R.string.screen_bottom_sheet_manage_room_member_unbanning_user, userDisplayName)) } - state.eventSink(InternalRoomMemberModerationEvents.DoUnbanUser) + state.eventSink(InternalRoomMemberModerationEvents.DoUnbanUser(reason = reason)) }, - onDismiss = { state.eventSink(InternalRoomMemberModerationEvents.Reset) }, + onDismissRequest = { state.eventSink(InternalRoomMemberModerationEvents.Reset) }, + placeholder = stringResource(id = CommonStrings.common_reason), + label = stringResource(id = CommonStrings.common_reason), + content = stringResource(R.string.screen_bottom_sheet_manage_room_member_unban_member_confirmation_description), + value = "", ) } is AsyncAction.Failure -> { diff --git a/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenterTest.kt b/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenterTest.kt index 40e09b3620..423e9f6621 100644 --- a/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenterTest.kt +++ b/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationPresenterTest.kt @@ -290,7 +290,7 @@ class RoomMemberModerationPresenterTest { ) ) skipItems(2) - initialState.eventSink(InternalRoomMemberModerationEvents.DoUnbanUser) + initialState.eventSink(InternalRoomMemberModerationEvents.DoUnbanUser("Reason")) skipItems(1) val loadingState = awaitState() assertThat(loadingState.unbanUserAsyncAction).isInstanceOf(AsyncAction.Loading::class.java) diff --git a/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationViewTest.kt b/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationViewTest.kt index fc1b815562..2ac8a025bb 100644 --- a/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationViewTest.kt +++ b/features/roommembermoderation/impl/src/test/kotlin/io/element/android/features/roommembermoderation/impl/RoomMemberModerationViewTest.kt @@ -181,7 +181,7 @@ class RoomMemberModerationViewTest { ), ) rule.pressTag(TestTags.dialogPositive.value) - eventsRecorder.assertSingle(InternalRoomMemberModerationEvents.DoUnbanUser) + eventsRecorder.assertSingle(InternalRoomMemberModerationEvents.DoUnbanUser("")) } @Test From a82c916ca931eea296900aa7051cc1e62da54916 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 09:41:57 +0100 Subject: [PATCH 375/898] Create specific errors for Invalid or Unsupporte homeserver. --- .../impl/changeserver/ChangeServerPresenter.kt | 6 +----- .../changeserver/ChangeServerStateProvider.kt | 5 +---- .../login/impl/changeserver/ChangeServerView.kt | 16 ++++++++++++++++ .../login/impl/error/ChangeServerError.kt | 5 +++-- .../impl/error/ChangeServerErrorProvider.kt | 6 ++---- .../features/login/impl/login/LoginModeView.kt | 11 +++++++++++ .../changeserver/ChangeServerPresenterTest.kt | 3 +-- 7 files changed, 35 insertions(+), 17 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index 71d4e97c3b..fc114aaa6b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -13,7 +13,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import dev.zacsweers.metro.Inject -import io.element.android.features.login.impl.R import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource @@ -63,10 +62,7 @@ class ChangeServerPresenter( ) val details = authenticationService.setHomeserver(data.url).getOrThrow() if (details.supportsOidcLogin.not() && details.supportsPasswordLogin.not()) { - // Unsupported homeserver - throw ChangeServerError.Error( - messageId = R.string.screen_login_error_unsupported_authentication, - ) + throw ChangeServerError.UnsupportedServer } // Homeserver is valid, remember user choice accountProviderDataSource.userSelection(data) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt index 8a7d015750..554c9b545e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt @@ -8,7 +8,6 @@ package io.element.android.features.login.impl.changeserver import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import io.element.android.features.login.impl.R import io.element.android.features.login.impl.error.ChangeServerError import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.ui.strings.CommonStrings @@ -37,9 +36,7 @@ open class ChangeServerStateProvider : PreviewParameterProvider { when (val error = state.changeServerAction.error as? ChangeServerError) { + ChangeServerError.InvalidServer -> + ErrorDialog( + modifier = modifier, + content = stringResource(R.string.screen_change_server_error_invalid_homeserver), + onSubmit = { + eventSink.invoke(ChangeServerEvents.ClearError) + } + ) + ChangeServerError.UnsupportedServer -> + ErrorDialog( + modifier = modifier, + content = stringResource(R.string.screen_login_error_unsupported_authentication), + onSubmit = { + eventSink.invoke(ChangeServerEvents.ClearError) + } + ) is ChangeServerError.Error -> { ErrorDialog( modifier = modifier, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt index a814e61aaa..2c4550953e 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt @@ -11,7 +11,6 @@ import androidx.annotation.StringRes import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.ui.res.stringResource -import io.element.android.features.login.impl.R import io.element.android.features.login.impl.changeserver.AccountProviderAccessException import io.element.android.libraries.matrix.api.auth.AuthenticationException import io.element.android.libraries.ui.strings.CommonStrings @@ -37,6 +36,8 @@ sealed class ChangeServerError : Exception() { ) : ChangeServerError() data object SlidingSyncAlert : ChangeServerError() + data object InvalidServer : ChangeServerError() + data object UnsupportedServer : ChangeServerError() companion object { fun from(error: Throwable): ChangeServerError = when (error) { @@ -51,7 +52,7 @@ sealed class ChangeServerError : Exception() { unauthorisedAccountProviderTitle = error.unauthorisedAccountProviderTitle, authorisedAccountProviderTitles = error.authorisedAccountProviderTitles, ) - else -> Error(messageId = R.string.screen_change_server_error_invalid_homeserver) + else -> InvalidServer } } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerErrorProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerErrorProvider.kt index 333347851a..4a9a7e934b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerErrorProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerErrorProvider.kt @@ -8,14 +8,11 @@ package io.element.android.features.login.impl.error import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import io.element.android.features.login.impl.R class ChangeServerErrorProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( - ChangeServerError.Error( - messageId = R.string.screen_change_server_error_invalid_homeserver, - ), + ChangeServerError.InvalidServer, ChangeServerError.Error( messageStr = "An error description", ), @@ -28,5 +25,6 @@ class ChangeServerErrorProvider : PreviewParameterProvider { authorisedAccountProviderTitles = listOf("provider.org", "provider.io"), ), ChangeServerError.SlidingSyncAlert, + ChangeServerError.UnsupportedServer, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt index c3fe5eac47..4c97897cce 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt @@ -41,6 +41,17 @@ fun LoginModeView( when (val error = loginMode.error) { is ChangeServerError -> { when (error) { + ChangeServerError.InvalidServer -> + ErrorDialog( + content = stringResource(R.string.screen_change_server_error_invalid_homeserver), + onSubmit = onClearError, + ) + is ChangeServerError.UnsupportedServer -> { + ErrorDialog( + content = stringResource(R.string.screen_login_error_unsupported_authentication), + onSubmit = onClearError, + ) + } is ChangeServerError.Error -> { ErrorDialog( content = error.message(), diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index ce026b447c..d1090cb237 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -10,7 +10,6 @@ package io.element.android.features.login.impl.changeserver import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService -import io.element.android.features.login.impl.R import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider @@ -117,7 +116,7 @@ class ChangeServerPresenterTest { val failureState = awaitItem() assertThat(failureState.changeServerAction).isInstanceOf(AsyncData.Failure::class.java) assertThat(failureState.changeServerAction.errorOrNull()).isEqualTo( - ChangeServerError.Error(R.string.screen_login_error_unsupported_authentication) + ChangeServerError.UnsupportedServer ) } } From a39b675cc1f89eeffd6de51a162b97c93f766ac3 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 09:52:04 +0100 Subject: [PATCH 376/898] Improve error mapping --- .../changeserver/ChangeServerStateProvider.kt | 3 +-- .../login/impl/changeserver/ChangeServerView.kt | 3 ++- .../login/impl/error/ChangeServerError.kt | 14 ++------------ .../features/login/impl/login/LoginModeView.kt | 4 ++-- .../matrix/api/auth/AuthenticationException.kt | 15 +++++++++------ .../matrix/impl/auth/AuthenticationException.kt | 1 - 6 files changed, 16 insertions(+), 24 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt index 554c9b545e..020d5a0851 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerStateProvider.kt @@ -10,13 +10,12 @@ package io.element.android.features.login.impl.changeserver import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.login.impl.error.ChangeServerError import io.element.android.libraries.architecture.AsyncData -import io.element.android.libraries.ui.strings.CommonStrings open class ChangeServerStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aChangeServerState(), - aChangeServerState(changeServerAction = AsyncData.Failure(ChangeServerError.Error(CommonStrings.error_unknown))), + aChangeServerState(changeServerAction = AsyncData.Failure(ChangeServerError.Error(null))), aChangeServerState(changeServerAction = AsyncData.Failure(ChangeServerError.SlidingSyncAlert)), aChangeServerState( changeServerAction = AsyncData.Failure( diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt index a9784580d1..bf13250f7f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerView.kt @@ -26,6 +26,7 @@ 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.designsystem.theme.LocalBuildMeta +import io.element.android.libraries.ui.strings.CommonStrings @Composable fun ChangeServerView( @@ -58,7 +59,7 @@ fun ChangeServerView( is ChangeServerError.Error -> { ErrorDialog( modifier = modifier, - content = error.message(), + content = error.messageStr ?: stringResource(CommonStrings.error_unknown), onSubmit = { eventSink.invoke(ChangeServerEvents.ClearError) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt index 2c4550953e..cd5dcf95b3 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt @@ -7,23 +7,13 @@ package io.element.android.features.login.impl.error -import androidx.annotation.StringRes -import androidx.compose.runtime.Composable -import androidx.compose.runtime.ReadOnlyComposable -import androidx.compose.ui.res.stringResource import io.element.android.features.login.impl.changeserver.AccountProviderAccessException import io.element.android.libraries.matrix.api.auth.AuthenticationException -import io.element.android.libraries.ui.strings.CommonStrings sealed class ChangeServerError : Exception() { data class Error( - @StringRes val messageId: Int? = null, val messageStr: String? = null, - ) : ChangeServerError() { - @Composable - @ReadOnlyComposable - fun message(): String = messageStr ?: stringResource(messageId ?: CommonStrings.error_unknown) - } + ) : ChangeServerError() data class NeedElementPro( val unauthorisedAccountProviderTitle: String, @@ -52,7 +42,7 @@ sealed class ChangeServerError : Exception() { unauthorisedAccountProviderTitle = error.unauthorisedAccountProviderTitle, authorisedAccountProviderTitles = error.authorisedAccountProviderTitles, ) - else -> InvalidServer + else -> Error(messageStr = error.message) } } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt index 4c97897cce..1c5d1f929a 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/login/LoginModeView.kt @@ -54,7 +54,7 @@ fun LoginModeView( } is ChangeServerError.Error -> { ErrorDialog( - content = error.message(), + content = error.messageStr ?: stringResource(CommonStrings.error_unknown), onSubmit = onClearError, ) } @@ -102,7 +102,7 @@ fun LoginModeView( } is AuthenticationException.AccountAlreadyLoggedIn -> { ErrorDialog( - content = stringResource(CommonStrings.error_account_already_logged_in, error.message.orEmpty()), + content = stringResource(CommonStrings.error_account_already_logged_in, error.userId), onSubmit = onClearError, ) } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt index 03e8d57150..7370135729 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt @@ -7,10 +7,13 @@ package io.element.android.libraries.matrix.api.auth -sealed class AuthenticationException(message: String) : Exception(message) { - class AccountAlreadyLoggedIn(userId: String) : AuthenticationException(userId) - class InvalidServerName(message: String) : AuthenticationException(message) - class SlidingSyncVersion(message: String) : AuthenticationException(message) - class Oidc(message: String) : AuthenticationException(message) - class Generic(message: String) : AuthenticationException(message) +sealed class AuthenticationException(message: String?) : Exception(message) { + data class AccountAlreadyLoggedIn( + val userId: String, + ) : AuthenticationException(null) + + class InvalidServerName(message: String?) : AuthenticationException(message) + class SlidingSyncVersion(message: String?) : AuthenticationException(message) + class Oidc(message: String?) : AuthenticationException(message) + class Generic(message: String?) : AuthenticationException(message) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt index 05eb4c4d5f..1960fe7c60 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt @@ -12,7 +12,6 @@ import org.matrix.rustcomponents.sdk.ClientBuildException import org.matrix.rustcomponents.sdk.OidcException fun Throwable.mapAuthenticationException(): AuthenticationException { - val message = this.message ?: "Unknown error" return when (this) { is AuthenticationException -> this is ClientBuildException -> when (this) { From 9e8fe55a90d838650b31abd3fb83d864e2e2afad Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 10:04:48 +0100 Subject: [PATCH 377/898] Improve error mapping --- .../features/login/impl/error/ChangeServerError.kt | 13 +++++++++++-- .../matrix/api/auth/AuthenticationException.kt | 1 + .../matrix/impl/auth/AuthenticationException.kt | 2 +- .../impl/auth/AuthenticationExceptionMappingTest.kt | 6 +++--- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt index cd5dcf95b3..02b71b7291 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/error/ChangeServerError.kt @@ -32,8 +32,17 @@ sealed class ChangeServerError : Exception() { companion object { fun from(error: Throwable): ChangeServerError = when (error) { is ChangeServerError -> error - is AuthenticationException.SlidingSyncVersion -> SlidingSyncAlert - is AuthenticationException.Oidc -> Error(messageStr = error.message) + is AuthenticationException -> { + when (error) { + is AuthenticationException.SlidingSyncVersion -> SlidingSyncAlert + is AuthenticationException.InvalidServerName, + is AuthenticationException.ServerUnreachable -> InvalidServer + // AccountAlreadyLoggedIn error should not happen at this point + is AuthenticationException.AccountAlreadyLoggedIn -> Error(messageStr = error.message) + is AuthenticationException.Generic -> Error(messageStr = error.message) + is AuthenticationException.Oidc -> Error(messageStr = error.message) + } + } is AccountProviderAccessException.NeedElementProException -> NeedElementPro( unauthorisedAccountProviderTitle = error.unauthorisedAccountProviderTitle, applicationId = error.applicationId, diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt index 7370135729..954a8e9de2 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/AuthenticationException.kt @@ -14,6 +14,7 @@ sealed class AuthenticationException(message: String?) : Exception(message) { class InvalidServerName(message: String?) : AuthenticationException(message) class SlidingSyncVersion(message: String?) : AuthenticationException(message) + class ServerUnreachable(message: String?) : AuthenticationException(message) class Oidc(message: String?) : AuthenticationException(message) class Generic(message: String?) : AuthenticationException(message) } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt index 1960fe7c60..ba43065fad 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationException.kt @@ -19,7 +19,7 @@ fun Throwable.mapAuthenticationException(): AuthenticationException { is ClientBuildException.InvalidServerName -> AuthenticationException.InvalidServerName(message) is ClientBuildException.SlidingSyncVersion -> AuthenticationException.SlidingSyncVersion(message) is ClientBuildException.Sdk -> AuthenticationException.Generic(message) - is ClientBuildException.ServerUnreachable -> AuthenticationException.Generic(message) + is ClientBuildException.ServerUnreachable -> AuthenticationException.ServerUnreachable(message) is ClientBuildException.SlidingSync -> AuthenticationException.Generic(message) is ClientBuildException.WellKnownDeserializationException -> AuthenticationException.Generic(message) is ClientBuildException.WellKnownLookupFailed -> AuthenticationException.Generic(message) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt index c73ba1424b..db37fc40b5 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt @@ -16,10 +16,10 @@ import org.matrix.rustcomponents.sdk.OidcException class AuthenticationExceptionMappingTest { @Test - fun `mapping an exception with no message returns 'Unknown error' message`() { + fun `mapping an exception with no message returns null message`() { val exception = Exception() val mappedException = exception.mapAuthenticationException() - assertThat(mappedException.message).isEqualTo("Unknown error") + assertThat(mappedException.message).isEqualTo(null) } @Test @@ -46,7 +46,7 @@ class AuthenticationExceptionMappingTest { assertThat(ClientBuildException.Sdk("SDK issue").mapAuthenticationException()) .isException("SDK issue") assertThat(ClientBuildException.ServerUnreachable("Server unreachable").mapAuthenticationException()) - .isException("Server unreachable") + .isException("Server unreachable") assertThat(ClientBuildException.SlidingSync("Sliding Sync").mapAuthenticationException()) .isException("Sliding Sync") assertThat(ClientBuildException.WellKnownDeserializationException("WellKnown Deserialization").mapAuthenticationException()) From a7f3fb9c382253b0c2bcca86fc5a942380220c62 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 10:18:45 +0100 Subject: [PATCH 378/898] Avoid usage of `not()` and add unit tests. --- .../changeserver/ChangeServerPresenter.kt | 2 +- .../changeserver/ChangeServerPresenterTest.kt | 2 +- .../ConfirmAccountProviderPresenterTest.kt | 2 +- .../LoginPasswordPresenterTest.kt | 2 +- .../api/auth/MatrixHomeServerDetails.kt | 4 +- .../api/auth/MatrixHomeServerDetailsTest.kt | 50 +++++++++++++++++++ .../test/auth}/MatrixHomeServerDetails.kt | 2 +- 7 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetailsTest.kt rename {features/login/impl/src/test/kotlin/io/element/android/features/login/impl => libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth}/MatrixHomeServerDetails.kt (92%) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index fc114aaa6b..463662b6f1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -61,7 +61,7 @@ class ChangeServerPresenter( accountProviderUrl = data.url, ) val details = authenticationService.setHomeserver(data.url).getOrThrow() - if (details.supportsOidcLogin.not() && details.supportsPasswordLogin.not()) { + if (details.isSupported) { throw ChangeServerError.UnsupportedServer } // Homeserver is valid, remember user choice diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt index d1090cb237..8fd12fb589 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenterTest.kt @@ -10,7 +10,6 @@ package io.element.android.features.login.impl.changeserver import com.google.common.truth.Truth.assertThat import io.element.android.features.enterprise.api.EnterpriseService import io.element.android.features.enterprise.test.FakeEnterpriseService -import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accesscontrol.DefaultAccountProviderAccessControl import io.element.android.features.login.impl.accountprovider.AccountProvider import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource @@ -22,6 +21,7 @@ import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_HOMESERVER_URL import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService +import io.element.android.libraries.matrix.test.auth.aMatrixHomeServerDetails import io.element.android.libraries.wellknown.api.ElementWellKnown import io.element.android.libraries.wellknown.api.WellknownRetriever import io.element.android.libraries.wellknown.api.WellknownRetrieverResult diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt index 182b7d6e27..cd845eb401 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenterTest.kt @@ -10,7 +10,6 @@ package io.element.android.features.login.impl.screens.confirmaccountprovider import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.test.FakeEnterpriseService -import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.features.login.impl.login.LoginMode import io.element.android.features.login.impl.screens.createaccount.AccountCreationNotSupported @@ -21,6 +20,7 @@ import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService +import io.element.android.libraries.matrix.test.auth.aMatrixHomeServerDetails import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow import io.element.android.libraries.oidc.test.customtab.FakeOidcActionFlow diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt index bfdc0a6785..3a7efd3bb2 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt @@ -10,7 +10,6 @@ package io.element.android.features.login.impl.screens.loginpassword import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.enterprise.test.FakeEnterpriseService -import io.element.android.features.login.impl.aMatrixHomeServerDetails import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.api.core.SessionId @@ -19,6 +18,7 @@ import io.element.android.libraries.matrix.test.A_PASSWORD import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService +import io.element.android.libraries.matrix.test.auth.aMatrixHomeServerDetails import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.test import kotlinx.coroutines.test.runTest diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt index ce3af70121..2244258eb8 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetails.kt @@ -11,4 +11,6 @@ data class MatrixHomeServerDetails( val url: String, val supportsPasswordLogin: Boolean, val supportsOidcLogin: Boolean, -) +) { + val isSupported = supportsPasswordLogin || supportsOidcLogin +} diff --git a/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetailsTest.kt b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetailsTest.kt new file mode 100644 index 0000000000..39f8759ca3 --- /dev/null +++ b/libraries/matrix/api/src/test/kotlin/io/element/android/libraries/matrix/api/auth/MatrixHomeServerDetailsTest.kt @@ -0,0 +1,50 @@ +/* + * 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.api.auth + +import com.google.common.truth.Truth.assertThat +import io.element.android.libraries.matrix.test.auth.aMatrixHomeServerDetails +import org.junit.Test + +class MatrixHomeServerDetailsTest { + @Test + fun `if homeserver supports oidc, then it is supported`() { + val sut = aMatrixHomeServerDetails( + supportsOidcLogin = true, + supportsPasswordLogin = false, + ) + assertThat(sut.isSupported).isTrue() + } + + @Test + fun `if homeserver supports password, then it is supported`() { + val sut = aMatrixHomeServerDetails( + supportsOidcLogin = false, + supportsPasswordLogin = true, + ) + assertThat(sut.isSupported).isTrue() + } + + @Test + fun `if homeserver supports both, then it is supported`() { + val sut = aMatrixHomeServerDetails( + supportsOidcLogin = true, + supportsPasswordLogin = true, + ) + assertThat(sut.isSupported).isTrue() + } + + @Test + fun `if homeserver supports none, then it is not supported`() { + val sut = aMatrixHomeServerDetails( + supportsOidcLogin = false, + supportsPasswordLogin = false, + ) + assertThat(sut.isSupported).isFalse() + } +} diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/MatrixHomeServerDetails.kt similarity index 92% rename from features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt rename to libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/MatrixHomeServerDetails.kt index 1bf32d20e2..379034a002 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/MatrixHomeServerDetails.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/MatrixHomeServerDetails.kt @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -package io.element.android.features.login.impl +package io.element.android.libraries.matrix.test.auth import io.element.android.libraries.matrix.api.auth.MatrixHomeServerDetails import io.element.android.libraries.matrix.test.A_HOMESERVER_URL From 2409eac28da6e40b23f2e45ef516680f2240128f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 10:21:38 +0100 Subject: [PATCH 379/898] Remove `param` --- .../features/rageshake/impl/bugreport/BugReportPresenter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt index 659c397c96..790ecdd092 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt @@ -32,7 +32,7 @@ class BugReportPresenter( private val bugReporter: BugReporter, private val crashDataStore: CrashDataStore, private val screenshotHolder: ScreenshotHolder, - @param:AppCoroutineScope + @AppCoroutineScope private val appCoroutineScope: CoroutineScope, ) : Presenter { private class BugReporterUploadListener( From a3ab7a098592338cbd56a9b5ab2e29aac202c898 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:22:08 +0100 Subject: [PATCH 380/898] fix(deps): update dependency com.posthog:posthog-android to v3.26.0 (#5696) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a3f6eed13c..ebda86b90d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -216,7 +216,7 @@ haze_materials = { module = "dev.chrisbanes.haze:haze-materials", version.ref = color_picker = "io.mhssn:colorpicker:1.0.0" # Analytics -posthog = "com.posthog:posthog-android:3.25.0" +posthog = "com.posthog:posthog-android:3.26.0" sentry = "io.sentry:sentry-android:8.25.0" # main branch can be tested replacing the version with main-SNAPSHOT matrix_analytics_events = "com.github.matrix-org:matrix-analytics-events:0.29.2" From feb867bb44edd0d8e9df2e3f61f13abc4070ec39 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:59:22 +0100 Subject: [PATCH 381/898] fix(deps): update metro to v0.7.5 (#5697) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ebda86b90d..63101fe24c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ haze = "1.6.10" dependencyAnalysis = "3.4.1" # DI -metro = "0.7.4" +metro = "0.7.5" # Auto service autoservice = "1.1.1" From 3e60c7170123bb7969738f7a377ca44df2f38341 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 11:05:13 +0100 Subject: [PATCH 382/898] Use isNull() --- .../matrix/impl/auth/AuthenticationExceptionMappingTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt index db37fc40b5..e84b42ea2f 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/AuthenticationExceptionMappingTest.kt @@ -19,7 +19,7 @@ class AuthenticationExceptionMappingTest { fun `mapping an exception with no message returns null message`() { val exception = Exception() val mappedException = exception.mapAuthenticationException() - assertThat(mappedException.message).isEqualTo(null) + assertThat(mappedException.message).isNull() } @Test From a067945103fa5fae5755102a35cc3d0e45a5be44 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Fri, 7 Nov 2025 11:04:44 +0000 Subject: [PATCH 383/898] Update screenshots --- .../features.login.impl.login_LoginModeView_Day_5_en.png | 4 ++-- .../features.login.impl.login_LoginModeView_Day_6_en.png | 3 +++ .../features.login.impl.login_LoginModeView_Night_5_en.png | 4 ++-- .../features.login.impl.login_LoginModeView_Night_6_en.png | 3 +++ 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_6_en.png create mode 100644 tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_6_en.png diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_5_en.png index 2e7635cfdb..1125024a5a 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4eaf3d650155e9a779cf796cef116eaba0f1d6722b229332b224475393a88178 -size 16828 +oid sha256:ae6d230961018f1128ea655529a4287dbe3bbbc2762079d0c4f335313d2f2ab0 +size 25166 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_6_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_6_en.png new file mode 100644 index 0000000000..2e7635cfdb --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Day_6_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eaf3d650155e9a779cf796cef116eaba0f1d6722b229332b224475393a88178 +size 16828 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_5_en.png index 10ca16827e..777f0bb627 100644 --- a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_5_en.png +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_5_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59f062f54833df71be9d7c4e785bb01013a10642e0d863bf7ef2abd8862b93c8 -size 15476 +oid sha256:1502711e6305f9adf4719b28c1fe3755089ae6c42c6c66e8e5bf73ab2bbb65c1 +size 23874 diff --git a/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_6_en.png b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_6_en.png new file mode 100644 index 0000000000..10ca16827e --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/features.login.impl.login_LoginModeView_Night_6_en.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59f062f54833df71be9d7c4e785bb01013a10642e0d863bf7ef2abd8862b93c8 +size 15476 From 4283fe86343176aa0154a65d031df8637478da73 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:18:47 +0100 Subject: [PATCH 384/898] Update how eventSink is used in DefaultVoiceMessageComposerPresenter --- .../DefaultVoiceMessageComposerPresenter.kt | 55 ++++++++----------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/DefaultVoiceMessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/DefaultVoiceMessageComposerPresenter.kt index 7c5eeb4969..68a95438db 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/DefaultVoiceMessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/DefaultVoiceMessageComposerPresenter.kt @@ -68,7 +68,6 @@ class DefaultVoiceMessageComposerPresenter( } private val permissionsPresenter = permissionsPresenterFactory.create(Manifest.permission.RECORD_AUDIO) - private val mediaSender = mediaSenderFactory.create(timelineMode) @Composable @@ -88,7 +87,7 @@ class DefaultVoiceMessageComposerPresenter( player.setMedia(recording.file.path) } - val onLifecycleEvent = { event: Lifecycle.Event -> + fun handleLifecycleEvent(event: Lifecycle.Event) { when (event) { Lifecycle.Event.ON_PAUSE -> { sessionCoroutineScope.finishRecording() @@ -101,13 +100,12 @@ class DefaultVoiceMessageComposerPresenter( } } - val onVoiceMessageRecorderEvent = { event: VoiceMessageComposerEvents.RecorderEvent -> - val permissionGranted = permissionState.permissionGranted - when (event.recorderEvent) { + fun handleVoiceMessageRecorderEvent(event: VoiceMessageRecorderEvent) { + when (event) { VoiceMessageRecorderEvent.Start -> { Timber.v("Voice message record button pressed") when { - permissionGranted -> { + permissionState.permissionGranted -> { localCoroutineScope.startRecording() } else -> { @@ -126,7 +124,8 @@ class DefaultVoiceMessageComposerPresenter( } } } - val onPlayerEvent = { event: VoiceMessagePlayerEvent -> + + fun handleVoiceMessagePlayerEvent(event: VoiceMessagePlayerEvent) { localCoroutineScope.launch { when (event) { VoiceMessagePlayerEvent.Play -> player.play() @@ -136,28 +135,16 @@ class DefaultVoiceMessageComposerPresenter( } } - val onAcceptPermissionsRationale = { - permissionState.eventSink(PermissionsEvents.OpenSystemSettingAndCloseDialog) - } - - val onDismissPermissionsRationale = { - permissionState.eventSink(PermissionsEvents.CloseDialog) - } - - val onDismissSendFailureDialog = { - showSendFailureDialog = false - } - - val onSendButtonPress = lambda@{ + fun sendVoiceMessage() { val finishedState = recorderState as? VoiceRecorderState.Finished if (finishedState == null) { val exception = VoiceMessageException.FileException("No file to send") analyticsService.trackError(exception) Timber.e(exception) - return@lambda + return } if (isSending) { - return@lambda + return } isSending = true player.pause() @@ -176,21 +163,27 @@ class DefaultVoiceMessageComposerPresenter( } } - val handleEvents: (VoiceMessageComposerEvents) -> Unit = { event -> + fun handleEvent(event: VoiceMessageComposerEvents) { when (event) { - is VoiceMessageComposerEvents.RecorderEvent -> onVoiceMessageRecorderEvent(event) - is VoiceMessageComposerEvents.PlayerEvent -> onPlayerEvent(event.playerEvent) + is VoiceMessageComposerEvents.RecorderEvent -> handleVoiceMessageRecorderEvent(event.recorderEvent) + is VoiceMessageComposerEvents.PlayerEvent -> handleVoiceMessagePlayerEvent(event.playerEvent) is VoiceMessageComposerEvents.SendVoiceMessage -> localCoroutineScope.launch { - onSendButtonPress() + sendVoiceMessage() } VoiceMessageComposerEvents.DeleteVoiceMessage -> { player.pause() localCoroutineScope.deleteRecording() } - VoiceMessageComposerEvents.DismissPermissionsRationale -> onDismissPermissionsRationale() - VoiceMessageComposerEvents.AcceptPermissionRationale -> onAcceptPermissionsRationale() - is VoiceMessageComposerEvents.LifecycleEvent -> onLifecycleEvent(event.event) - VoiceMessageComposerEvents.DismissSendFailureDialog -> onDismissSendFailureDialog() + VoiceMessageComposerEvents.DismissPermissionsRationale -> { + permissionState.eventSink(PermissionsEvents.CloseDialog) + } + VoiceMessageComposerEvents.AcceptPermissionRationale -> { + permissionState.eventSink(PermissionsEvents.OpenSystemSettingAndCloseDialog) + } + is VoiceMessageComposerEvents.LifecycleEvent -> handleLifecycleEvent(event.event) + VoiceMessageComposerEvents.DismissSendFailureDialog -> { + showSendFailureDialog = false + } } } @@ -211,7 +204,7 @@ class DefaultVoiceMessageComposerPresenter( showPermissionRationaleDialog = permissionState.showDialog, showSendFailureDialog = showSendFailureDialog, keepScreenOn = keepScreenOn, - eventSink = handleEvents, + eventSink = ::handleEvent, ) } From cf19daf3a40c6a96311a8924b1e130ee8af2f0f2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:20:33 +0100 Subject: [PATCH 385/898] Rename handleEvents to handleEvent --- .../io/element/android/appnav/loggedin/LoggedInPresenter.kt | 2 +- .../features/analytics/impl/AnalyticsOptInPresenter.kt | 4 ++-- .../impl/preferences/AnalyticsPreferencesPresenter.kt | 4 ++-- .../announcement/impl/spaces/SpaceAnnouncementPresenter.kt | 4 ++-- .../android/features/call/impl/ui/CallScreenPresenter.kt | 4 ++-- .../createroom/impl/configureroom/ConfigureRoomPresenter.kt | 4 ++-- .../features/logout/impl/AccountDeactivationPresenter.kt | 4 ++-- .../android/features/forward/impl/ForwardMessagesPresenter.kt | 4 ++-- .../ftue/impl/notifications/NotificationsOptInPresenter.kt | 4 ++-- .../io/element/android/features/home/impl/HomePresenter.kt | 4 ++-- .../features/home/impl/filters/RoomListFiltersPresenter.kt | 4 ++-- .../android/features/home/impl/roomlist/RoomListPresenter.kt | 4 ++-- .../features/home/impl/search/RoomListSearchPresenter.kt | 4 ++-- .../android/features/home/impl/spaces/HomeSpacesPresenter.kt | 4 ++-- .../invite/impl/acceptdecline/AcceptDeclineInvitePresenter.kt | 4 ++-- .../invite/impl/declineandblock/DeclineAndBlockPresenter.kt | 4 ++-- .../invitepeople/impl/DefaultInvitePeoplePresenter.kt | 4 ++-- .../android/features/joinroom/impl/JoinRoomPresenter.kt | 4 ++-- .../knockrequests/impl/banner/KnockRequestsBannerPresenter.kt | 4 ++-- .../knockrequests/impl/list/KnockRequestsListPresenter.kt | 4 ++-- .../impl/common/permissions/DefaultPermissionsPresenter.kt | 4 ++-- .../features/location/impl/send/SendLocationPresenter.kt | 4 ++-- .../features/location/impl/show/ShowLocationPresenter.kt | 4 ++-- .../impl/common/permissions/FakePermissionsPresenter.kt | 2 +- .../lockscreen/impl/settings/LockScreenSettingsPresenter.kt | 4 ++-- .../impl/setup/biometric/SetupBiometricPresenter.kt | 4 ++-- .../features/lockscreen/impl/setup/pin/SetupPinPresenter.kt | 4 ++-- .../features/lockscreen/impl/unlock/PinUnlockPresenter.kt | 4 ++-- .../features/login/impl/changeserver/ChangeServerPresenter.kt | 4 ++-- .../confirmaccountprovider/ConfirmAccountProviderPresenter.kt | 4 ++-- .../impl/screens/createaccount/CreateAccountPresenter.kt | 4 ++-- .../impl/screens/loginpassword/LoginPasswordPresenter.kt | 4 ++-- .../login/impl/screens/qrcode/intro/QrCodeIntroPresenter.kt | 4 ++-- .../login/impl/screens/qrcode/scan/QrCodeScanPresenter.kt | 4 ++-- .../searchaccountprovider/SearchAccountProviderPresenter.kt | 4 ++-- .../element/android/features/logout/impl/LogoutPresenter.kt | 4 ++-- .../features/logout/impl/direct/DirectLogoutPresenter.kt | 4 ++-- .../android/features/messages/impl/MessagesPresenter.kt | 2 +- .../features/messages/impl/actionlist/ActionListPresenter.kt | 4 ++-- .../impl/attachments/preview/AttachmentsPreviewPresenter.kt | 4 ++-- .../resolve/ResolveVerifiedUserSendFailurePresenter.kt | 4 ++-- .../android/features/messages/impl/link/LinkPresenter.kt | 4 ++-- .../messages/impl/messagecomposer/MessageComposerPresenter.kt | 4 ++-- .../impl/pinned/banner/PinnedMessagesBannerPresenter.kt | 2 +- .../messages/impl/pinned/list/PinnedMessagesListPresenter.kt | 4 ++-- .../features/messages/impl/report/ReportMessagePresenter.kt | 4 ++-- .../features/messages/impl/timeline/TimelinePresenter.kt | 4 ++-- .../components/customreaction/CustomReactionPresenter.kt | 4 ++-- .../components/customreaction/picker/EmojiPickerPresenter.kt | 4 ++-- .../components/reactionsummary/ReactionSummaryPresenter.kt | 4 ++-- .../android/features/poll/impl/create/CreatePollPresenter.kt | 4 ++-- .../features/poll/impl/history/PollHistoryPresenter.kt | 4 ++-- .../preferences/impl/advanced/AdvancedSettingsPresenter.kt | 4 ++-- .../preferences/impl/blockedusers/BlockedUsersPresenter.kt | 4 ++-- .../preferences/impl/developer/DeveloperSettingsPresenter.kt | 4 ++-- .../impl/notifications/NotificationSettingsPresenter.kt | 4 ++-- .../edit/EditDefaultNotificationSettingPresenter.kt | 4 ++-- .../impl/user/editprofile/EditUserProfilePresenter.kt | 4 ++-- .../features/rageshake/impl/bugreport/BugReportPresenter.kt | 4 ++-- .../rageshake/impl/crash/DefaultCrashDetectionPresenter.kt | 4 ++-- .../impl/detection/DefaultRageshakeDetectionPresenter.kt | 4 ++-- .../impl/preferences/DefaultRageshakePreferencesPresenter.kt | 4 ++-- .../android/features/reportroom/impl/ReportRoomPresenter.kt | 4 ++-- .../roomaliasresolver/impl/RoomAliasResolverPresenter.kt | 4 ++-- .../android/features/roomdetails/impl/RoomDetailsPresenter.kt | 4 ++-- .../roomdetails/impl/edit/RoomDetailsEditPresenter.kt | 4 ++-- .../roomdetails/impl/members/RoomMemberListPresenter.kt | 4 ++-- .../notificationsettings/RoomNotificationSettingsPresenter.kt | 4 ++-- .../impl/securityandprivacy/SecurityAndPrivacyPresenter.kt | 4 ++-- .../editroomaddress/EditRoomAddressPresenter.kt | 4 ++-- .../roomdirectory/impl/root/RoomDirectoryPresenter.kt | 4 ++-- .../securebackup/impl/disable/SecureBackupDisablePresenter.kt | 4 ++-- .../impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt | 4 ++-- .../impl/reset/password/ResetIdentityPasswordPresenter.kt | 2 +- .../impl/reset/root/ResetIdentityRootPresenter.kt | 2 +- .../securebackup/impl/root/SecureBackupRootPresenter.kt | 4 ++-- .../securebackup/impl/setup/SecureBackupSetupPresenter.kt | 4 ++-- .../io/element/android/features/share/impl/SharePresenter.kt | 4 ++-- .../android/features/signedout/impl/SignedOutPresenter.kt | 4 ++-- .../android/features/space/impl/leave/LeaveSpacePresenter.kt | 4 ++-- .../android/features/space/impl/root/SpacePresenter.kt | 4 ++-- .../impl/joinbyaddress/JoinRoomByAddressPresenter.kt | 4 ++-- .../features/startchat/impl/root/StartChatPresenter.kt | 4 ++-- .../features/userprofile/impl/root/UserProfilePresenter.kt | 4 ++-- .../impl/incoming/IncomingVerificationPresenter.kt | 4 ++-- .../impl/outgoing/OutgoingVerificationPresenter.kt | 4 ++-- .../impl/FullScreenIntentPermissionsPresenter.kt | 4 ++-- .../mediaviewer/impl/gallery/MediaGalleryPresenter.kt | 4 ++-- .../libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt | 4 ++-- .../libraries/permissions/impl/DefaultPermissionsPresenter.kt | 4 ++-- .../push/impl/battery/BatteryOptimizationPresenter.kt | 4 ++-- .../android/libraries/roomselect/impl/RoomSelectPresenter.kt | 4 ++-- .../troubleshoot/impl/TroubleshootNotificationsPresenter.kt | 4 ++-- .../troubleshoot/impl/history/PushHistoryPresenter.kt | 4 ++-- 94 files changed, 182 insertions(+), 182 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index 934803fe26..61f1ce715c 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -122,7 +122,7 @@ class LoggedInPresenter( ignoreRegistrationError = ignoreRegistrationError, forceNativeSlidingSyncMigration = forceNativeSlidingSyncMigration, appName = buildMeta.applicationName, - eventSink = ::handleEvent + eventSink = ::handleEvent, ) } diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt index fd590955c8..718d90cfd8 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/AnalyticsOptInPresenter.kt @@ -27,7 +27,7 @@ class AnalyticsOptInPresenter( override fun present(): AnalyticsOptInState { val localCoroutineScope = rememberCoroutineScope() - fun handleEvents(event: AnalyticsOptInEvents) { + fun handleEvent(event: AnalyticsOptInEvents) { when (event) { is AnalyticsOptInEvents.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled) } @@ -39,7 +39,7 @@ class AnalyticsOptInPresenter( return AnalyticsOptInState( applicationName = buildMeta.applicationName, hasPolicyLink = AnalyticsConfig.POLICY_LINK.isNotEmpty(), - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenter.kt b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenter.kt index fee6188d23..3e7d5aa305 100644 --- a/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenter.kt +++ b/features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenter.kt @@ -30,7 +30,7 @@ class AnalyticsPreferencesPresenter( val localCoroutineScope = rememberCoroutineScope() val isEnabled = analyticsService.userConsentFlow.collectAsState(initial = false) - fun handleEvents(event: AnalyticsOptInEvents) { + fun handleEvent(event: AnalyticsOptInEvents) { when (event) { is AnalyticsOptInEvents.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled) } @@ -40,7 +40,7 @@ class AnalyticsPreferencesPresenter( applicationName = buildMeta.applicationName, isEnabled = isEnabled.value, policyUrl = AnalyticsConfig.POLICY_LINK, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/spaces/SpaceAnnouncementPresenter.kt b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/spaces/SpaceAnnouncementPresenter.kt index 4d1b2f3e4b..428421ab3e 100644 --- a/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/spaces/SpaceAnnouncementPresenter.kt +++ b/features/announcement/impl/src/main/kotlin/io/element/android/features/announcement/impl/spaces/SpaceAnnouncementPresenter.kt @@ -24,7 +24,7 @@ class SpaceAnnouncementPresenter( override fun present(): SpaceAnnouncementState { val localCoroutineScope = rememberCoroutineScope() - fun handleEvents(event: SpaceAnnouncementEvents) { + fun handleEvent(event: SpaceAnnouncementEvents) { when (event) { SpaceAnnouncementEvents.Continue -> localCoroutineScope.launch { announcementStore.setAnnouncementStatus(Announcement.Space, AnnouncementStatus.Shown) @@ -33,7 +33,7 @@ class SpaceAnnouncementPresenter( } return SpaceAnnouncementState( - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } 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 a7302c9730..9a3637c997 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 @@ -161,7 +161,7 @@ class CallScreenPresenter( } } - fun handleEvents(event: CallScreenEvents) { + fun handleEvent(event: CallScreenEvents) { when (event) { is CallScreenEvents.Hangup -> { val widgetId = callWidgetDriver.value?.id @@ -201,7 +201,7 @@ class CallScreenPresenter( userAgent = userAgent, isCallActive = isWidgetLoaded, isInWidgetMode = isInWidgetMode, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt index ae28b95bba..9784a8c700 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt @@ -116,7 +116,7 @@ class ConfigureRoomPresenter( localCoroutineScope.createRoom(config, createRoomAction) } - fun handleEvents(event: ConfigureRoomEvents) { + fun handleEvent(event: ConfigureRoomEvents) { when (event) { is ConfigureRoomEvents.RoomNameChanged -> dataStore.setRoomName(event.name) is ConfigureRoomEvents.TopicChanged -> dataStore.setTopic(event.topic) @@ -149,7 +149,7 @@ class ConfigureRoomPresenter( cameraPermissionState = cameraPermissionState, homeserverName = homeserverName, roomAddressValidity = roomAddressValidity.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/AccountDeactivationPresenter.kt b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/AccountDeactivationPresenter.kt index eb751366a8..4fd1320842 100644 --- a/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/AccountDeactivationPresenter.kt +++ b/features/deactivation/impl/src/main/kotlin/io/element/android/features/logout/impl/AccountDeactivationPresenter.kt @@ -33,7 +33,7 @@ class AccountDeactivationPresenter( val formState = remember { mutableStateOf(DeactivateFormState.Default) } - fun handleEvents(event: AccountDeactivationEvents) { + fun handleEvent(event: AccountDeactivationEvents) { when (event) { is AccountDeactivationEvents.SetEraseData -> { updateFormState(formState) { @@ -63,7 +63,7 @@ class AccountDeactivationPresenter( return AccountDeactivationState( deactivateFormState = formState.value, accountDeactivationAction = action.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt index b1e9534533..002fbd8ebd 100644 --- a/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt +++ b/features/forward/impl/src/main/kotlin/io/element/android/features/forward/impl/ForwardMessagesPresenter.kt @@ -47,7 +47,7 @@ class ForwardMessagesPresenter( @Composable override fun present(): ForwardMessagesState { - fun handleEvents(event: ForwardMessagesEvents) { + fun handleEvent(event: ForwardMessagesEvents) { when (event) { ForwardMessagesEvents.ClearError -> forwardingActionState.value = AsyncAction.Uninitialized } @@ -55,7 +55,7 @@ class ForwardMessagesPresenter( return ForwardMessagesState( forwardAction = forwardingActionState.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt index b6f5d76351..fc8a392a9b 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt @@ -51,7 +51,7 @@ class NotificationsOptInPresenter( override fun present(): NotificationsOptInState { val notificationsPermissionsState = postNotificationPermissionsPresenter.present() - fun handleEvents(event: NotificationsOptInEvents) { + fun handleEvent(event: NotificationsOptInEvents) { when (event) { NotificationsOptInEvents.ContinueClicked -> { if (notificationsPermissionsState.permissionGranted) { @@ -78,7 +78,7 @@ class NotificationsOptInPresenter( return NotificationsOptInState( notificationsPermissionState = notificationsPermissionsState, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt index e3ca9612d1..6e98297a9a 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt @@ -85,7 +85,7 @@ class HomePresenter( val showAvatarIndicator by indicatorService.showRoomListTopBarIndicator() val directLogoutState = logoutPresenter.present() - fun handleEvents(event: HomeEvents) { + fun handleEvent(event: HomeEvents) { when (event) { is HomeEvents.SelectHomeNavigationBarItem -> coroutineState.launch { if (event.item == HomeNavigationBarItem.Spaces) { @@ -117,7 +117,7 @@ class HomePresenter( canReportBug = canReportBug, directLogoutState = directLogoutState, isSpaceFeatureEnabled = isSpaceFeatureEnabled, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt index 08c34d60ff..03b07306bc 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt @@ -27,7 +27,7 @@ class RoomListFiltersPresenter( @Composable override fun present(): RoomListFiltersState { - fun handleEvents(event: RoomListFiltersEvents) { + fun handleEvent(event: RoomListFiltersEvents) { when (event) { RoomListFiltersEvents.ClearSelectedFilters -> { filterSelectionStrategy.clear() @@ -63,7 +63,7 @@ class RoomListFiltersPresenter( return RoomListFiltersState( filterSelectionStates = filters, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } 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 65d4eb297d..0d6d5eb366 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 @@ -113,7 +113,7 @@ class RoomListPresenter( val contextMenu = remember { mutableStateOf(RoomListState.ContextMenu.Hidden) } val declineInviteMenu = remember { mutableStateOf(RoomListState.DeclineInviteMenu.Hidden) } - fun handleEvents(event: RoomListEvents) { + fun handleEvent(event: RoomListEvents) { when (event) { is RoomListEvents.UpdateVisibleRange -> coroutineScope.launch { updateVisibleRange(event.range) @@ -169,7 +169,7 @@ class RoomListPresenter( acceptDeclineInviteState = acceptDeclineInviteState, hideInvitesAvatars = hideInvitesAvatar, canReportRoom = canReportRoom, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchPresenter.kt index ba77b0cdce..a62a987a22 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/search/RoomListSearchPresenter.kt @@ -40,7 +40,7 @@ class RoomListSearchPresenter( dataSource.setSearchQuery(searchQuery) } - fun handleEvents(event: RoomListSearchEvents) { + fun handleEvent(event: RoomListSearchEvents) { when (event) { RoomListSearchEvents.ClearQuery -> { searchQuery = "" @@ -61,7 +61,7 @@ class RoomListSearchPresenter( isSearchActive = isSearchActive, query = searchQuery, results = searchResults, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt index b4a2fc9339..274ee3da44 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt @@ -38,7 +38,7 @@ class HomeSpacesPresenter( seenInvitesStore.seenRoomIds().map { it.toImmutableSet() } }.collectAsState(persistentSetOf()) - fun handleEvents(event: HomeSpacesEvents) { + fun handleEvent(event: HomeSpacesEvents) { // when (event) { } } @@ -47,7 +47,7 @@ class HomeSpacesPresenter( spaceRooms = spaceRooms, seenSpaceInvites = seenSpaceInvites, hideInvitesAvatar = hideInvitesAvatar, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } 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 7d15971fe4..6fbe32d2ec 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 @@ -39,7 +39,7 @@ class AcceptDeclineInvitePresenter( val declinedAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvents(event: AcceptDeclineInviteEvents) { + fun handleEvent(event: AcceptDeclineInviteEvents) { when (event) { is AcceptDeclineInviteEvents.AcceptInvite -> { localCoroutineScope.acceptInvite(event.invite.roomId, acceptedAction) @@ -70,7 +70,7 @@ class AcceptDeclineInvitePresenter( return AcceptDeclineInviteState( acceptAction = acceptedAction.value, declineAction = declinedAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockPresenter.kt b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockPresenter.kt index 59812a5e04..6cc035f791 100644 --- a/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockPresenter.kt +++ b/features/invite/impl/src/main/kotlin/io/element/android/features/invite/impl/declineandblock/DeclineAndBlockPresenter.kt @@ -48,7 +48,7 @@ class DeclineAndBlockPresenter( val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: DeclineAndBlockEvents) { + fun handleEvent(event: DeclineAndBlockEvents) { when (event) { DeclineAndBlockEvents.ClearDeclineAction -> declineAction.value = AsyncAction.Uninitialized DeclineAndBlockEvents.Decline -> coroutineScope.decline(reportReason, blockUser, reportRoom, declineAction) @@ -63,7 +63,7 @@ class DeclineAndBlockPresenter( reportReason = reportReason, blockUser = blockUser, declineAction = declineAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeoplePresenter.kt b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeoplePresenter.kt index 5e2b00a3f1..a77d8e54d4 100644 --- a/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeoplePresenter.kt +++ b/features/invitepeople/impl/src/main/kotlin/io/element/android/features/invitepeople/impl/DefaultInvitePeoplePresenter.kt @@ -103,7 +103,7 @@ class DefaultInvitePeoplePresenter( ) } - fun handleEvents(event: InvitePeopleEvents) { + fun handleEvent(event: InvitePeopleEvents) { when (event) { is DefaultInvitePeopleEvents.OnSearchActiveChanged -> { searchActive = event.active @@ -139,7 +139,7 @@ class DefaultInvitePeoplePresenter( searchResults = searchResults.value, showSearchLoader = showSearchLoader.value, sendInvitesAction = sendInvitesAction.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt index 2d737a17d4..e851d731e3 100644 --- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt +++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt @@ -151,7 +151,7 @@ class JoinRoomPresenter( contentState.markRoomInviteAsSeen() } - fun handleEvents(event: JoinRoomEvents) { + fun handleEvent(event: JoinRoomEvents) { when (event) { JoinRoomEvents.JoinRoom -> coroutineScope.joinRoom(joinAction) is JoinRoomEvents.KnockRoom -> coroutineScope.knockRoom(knockAction, knockMessage) @@ -197,7 +197,7 @@ class JoinRoomPresenter( knockMessage = knockMessage, hideInviteAvatars = hideInviteAvatars, canReportRoom = canReportRoom, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerPresenter.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerPresenter.kt index a1db930500..7a81e98d55 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerPresenter.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/banner/KnockRequestsBannerPresenter.kt @@ -52,7 +52,7 @@ class KnockRequestsBannerPresenter( } } - fun handleEvents(event: KnockRequestsBannerEvents) { + fun handleEvent(event: KnockRequestsBannerEvents) { when (event) { is KnockRequestsBannerEvents.AcceptSingleRequest -> { sessionCoroutineScope.acceptSingleKnockRequest( @@ -73,7 +73,7 @@ class KnockRequestsBannerPresenter( displayAcceptError = showAcceptError.value, canAccept = permissions.canAccept, isVisible = shouldShowBanner, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListPresenter.kt b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListPresenter.kt index ff943fcf6b..54d0a490c8 100644 --- a/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListPresenter.kt +++ b/features/knockrequests/impl/src/main/kotlin/io/element/android/features/knockrequests/impl/list/KnockRequestsListPresenter.kt @@ -38,7 +38,7 @@ class KnockRequestsListPresenter( val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: KnockRequestsListEvents) { + fun handleEvent(event: KnockRequestsListEvents) { when (event) { KnockRequestsListEvents.AcceptAll -> { currentAction = KnockRequestsAction.AcceptAll @@ -73,7 +73,7 @@ class KnockRequestsListPresenter( currentAction = currentAction, permissions = permissions, asyncAction = asyncAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt index 0ef520aadb..ebb5a6211c 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/common/permissions/DefaultPermissionsPresenter.kt @@ -33,7 +33,7 @@ class DefaultPermissionsPresenter( override fun present(): PermissionsState { val multiplePermissionsState = rememberMultiplePermissionsState(permissions = permissions) - fun handleEvents(event: PermissionsEvents) { + fun handleEvent(event: PermissionsEvents) { when (event) { PermissionsEvents.RequestPermissions -> multiplePermissionsState.launchMultiplePermissionRequest() } @@ -46,7 +46,7 @@ class DefaultPermissionsPresenter( else -> PermissionsState.Permissions.NoneGranted }, shouldShowRationale = multiplePermissionsState.shouldShowRationale, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt index 9914920ac3..96fdc6aea5 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/send/SendLocationPresenter.kt @@ -78,7 +78,7 @@ class SendLocationPresenter( } } - fun handleEvents(event: SendLocationEvents) { + fun handleEvent(event: SendLocationEvents) { when (event) { is SendLocationEvents.SendLocation -> scope.launch { sendLocation(event, mode) @@ -103,7 +103,7 @@ class SendLocationPresenter( mode = mode, hasLocationPermission = permissionsState.isAnyGranted, appName = appName, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt index 7929843571..c7c28472df 100644 --- a/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt +++ b/features/location/impl/src/main/kotlin/io/element/android/features/location/impl/show/ShowLocationPresenter.kt @@ -56,7 +56,7 @@ class ShowLocationPresenter( } } - fun handleEvents(event: ShowLocationEvents) { + fun handleEvent(event: ShowLocationEvents) { when (event) { ShowLocationEvents.Share -> locationActions.share(location, description) is ShowLocationEvents.TrackMyLocation -> { @@ -86,7 +86,7 @@ class ShowLocationPresenter( hasLocationPermission = permissionsState.isAnyGranted, isTrackMyLocation = isTrackMyLocation, appName = appName, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/FakePermissionsPresenter.kt b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/FakePermissionsPresenter.kt index 7351dd71f4..7443655a95 100644 --- a/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/FakePermissionsPresenter.kt +++ b/features/location/impl/src/test/kotlin/io/element/android/features/location/impl/common/permissions/FakePermissionsPresenter.kt @@ -19,7 +19,7 @@ class FakePermissionsPresenter : PermissionsPresenter { private var state = PermissionsState( permissions = PermissionsState.Permissions.NoneGranted, shouldShowRationale = false, - eventSink = ::handleEvent + eventSink = ::handleEvent, ) set(value) { field = value.copy(eventSink = ::handleEvent) diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt index 6f238c964b..58f190d103 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/settings/LockScreenSettingsPresenter.kt @@ -50,7 +50,7 @@ class LockScreenSettingsPresenter( val biometricUnlock = biometricAuthenticatorManager.rememberConfirmBiometricAuthenticator() - fun handleEvents(event: LockScreenSettingsEvents) { + fun handleEvent(event: LockScreenSettingsEvents) { when (event) { LockScreenSettingsEvents.CancelRemovePin -> showRemovePinConfirmation = false LockScreenSettingsEvents.ConfirmRemovePin -> { @@ -82,7 +82,7 @@ class LockScreenSettingsPresenter( isBiometricEnabled = isBiometricEnabled, showRemovePinConfirmation = showRemovePinConfirmation, showToggleBiometric = biometricAuthenticatorManager.isDeviceSecured, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt index f1183d8541..19b1bb2956 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/biometric/SetupBiometricPresenter.kt @@ -34,7 +34,7 @@ class SetupBiometricPresenter( val coroutineScope = rememberCoroutineScope() val biometricUnlock = biometricAuthenticatorManager.rememberConfirmBiometricAuthenticator() - fun handleEvents(event: SetupBiometricEvents) { + fun handleEvent(event: SetupBiometricEvents) { when (event) { SetupBiometricEvents.AllowBiometric -> coroutineScope.launch { biometricUnlock.setup() @@ -52,7 +52,7 @@ class SetupBiometricPresenter( return SetupBiometricState( isBiometricSetupDone = isBiometricSetupDone, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt index 36065484c7..24cd2b59a0 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/setup/pin/SetupPinPresenter.kt @@ -73,7 +73,7 @@ class SetupPinPresenter( } } - fun handleEvents(event: SetupPinEvents) { + fun handleEvent(event: SetupPinEvents) { when (event) { is SetupPinEvents.OnPinEntryChanged -> { // Use the fromConfirmationStep flag from ui to avoid race condition. @@ -106,7 +106,7 @@ class SetupPinPresenter( isConfirmationStep = isConfirmationStep, setupPinFailure = setupPinFailure, appName = buildMeta.applicationName, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt index fc2e61d404..352f3f8055 100644 --- a/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt +++ b/features/lockscreen/impl/src/main/kotlin/io/element/android/features/lockscreen/impl/unlock/PinUnlockPresenter.kt @@ -94,7 +94,7 @@ class PinUnlockPresenter( isUnlocked.value = true } - fun handleEvents(event: PinUnlockEvents) { + fun handleEvent(event: PinUnlockEvents) { when (event) { is PinUnlockEvents.OnPinKeypadPressed -> { pinEntryState.value = pinEntry.process(event.pinKeypadModel) @@ -129,7 +129,7 @@ class PinUnlockPresenter( showBiometricUnlock = biometricUnlock.isActive, biometricUnlockResult = biometricUnlockResult, isUnlocked = isUnlocked.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt index 4df9eb12d5..178dff1062 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/changeserver/ChangeServerPresenter.kt @@ -38,7 +38,7 @@ class ChangeServerPresenter( mutableStateOf(AsyncData.Uninitialized) } - fun handleEvents(event: ChangeServerEvents) { + fun handleEvent(event: ChangeServerEvents) { when (event) { is ChangeServerEvents.ChangeServer -> localCoroutineScope.changeServer(event.accountProvider, changeServerAction) ChangeServerEvents.ClearError -> changeServerAction.value = AsyncData.Uninitialized @@ -47,7 +47,7 @@ class ChangeServerPresenter( return ChangeServerState( changeServerAction = changeServerAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt index d485755afb..8451703ea0 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/confirmaccountprovider/ConfirmAccountProviderPresenter.kt @@ -40,7 +40,7 @@ class ConfirmAccountProviderPresenter( val loginMode by loginHelper.collectLoginMode() - fun handleEvents(event: ConfirmAccountProviderEvents) { + fun handleEvent(event: ConfirmAccountProviderEvents) { when (event) { ConfirmAccountProviderEvents.Continue -> { loginHelper.submit( @@ -58,7 +58,7 @@ class ConfirmAccountProviderPresenter( accountProvider = accountProvider, isAccountCreation = params.isAccountCreation, loginMode = loginMode, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt index a3aec0eb81..5a0a5cff64 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/createaccount/CreateAccountPresenter.kt @@ -50,7 +50,7 @@ class CreateAccountPresenter( val pageProgress: MutableState = remember { mutableIntStateOf(0) } val createAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvents(event: CreateAccountEvents) { + fun handleEvent(event: CreateAccountEvents) { when (event) { is CreateAccountEvents.SetPageProgress -> { pageProgress.value = event.progress @@ -68,7 +68,7 @@ class CreateAccountPresenter( pageProgress = pageProgress.value, isDebugBuild = buildMeta.isDebuggable, createAction = createAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt index 80a5711d52..7ea743ed61 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt @@ -41,7 +41,7 @@ class LoginPasswordPresenter( } val accountProvider by accountProviderDataSource.flow.collectAsState() - fun handleEvents(event: LoginPasswordEvents) { + fun handleEvent(event: LoginPasswordEvents) { when (event) { is LoginPasswordEvents.SetLogin -> updateFormState(formState) { copy(login = event.login) @@ -60,7 +60,7 @@ class LoginPasswordPresenter( accountProvider = accountProvider, formState = formState.value, loginAction = loginAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenter.kt index b90e2a6aeb..6c8af76bfb 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/intro/QrCodeIntroPresenter.kt @@ -39,7 +39,7 @@ class QrCodeIntroPresenter( } } - fun handleEvents(event: QrCodeIntroEvents) { + fun handleEvent(event: QrCodeIntroEvents) { when (event) { QrCodeIntroEvents.Continue -> if (cameraPermissionState.permissionGranted) { canContinue = true @@ -55,7 +55,7 @@ class QrCodeIntroPresenter( desktopAppName = buildMeta.desktopApplicationName, cameraPermissionState = cameraPermissionState, canContinue = canContinue, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenter.kt index ed612f2ac3..df206fe7ce 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/qrcode/scan/QrCodeScanPresenter.kt @@ -53,7 +53,7 @@ class QrCodeScanPresenter( authenticationAction.value = AsyncAction.Failure(it) } - fun handleEvents(event: QrCodeScanEvents) { + fun handleEvent(event: QrCodeScanEvents) { when (event) { QrCodeScanEvents.TryAgain -> { isScanning = true @@ -69,7 +69,7 @@ class QrCodeScanPresenter( return QrCodeScanState( isScanning = isScanning, authenticationAction = authenticationAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt index 657a21111c..6869aef2a1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt @@ -45,7 +45,7 @@ class SearchAccountProviderPresenter( onUserInput(userInput, data) } - fun handleEvents(event: SearchAccountProviderEvents) { + fun handleEvent(event: SearchAccountProviderEvents) { when (event) { is SearchAccountProviderEvents.UserInput -> { userInput = event.input @@ -57,7 +57,7 @@ class SearchAccountProviderPresenter( userInput = userInput, userInputResult = data.value, changeServerState = changeServerState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt index 9f3b379372..1c7f7b5879 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt @@ -73,7 +73,7 @@ class LogoutPresenter( } } - fun handleEvents(event: LogoutEvents) { + fun handleEvent(event: LogoutEvents) { when (event) { is LogoutEvents.Logout -> { if (logoutAction.value.isConfirming() || event.ignoreSdkError) { @@ -96,7 +96,7 @@ class LogoutPresenter( backupUploadState = backupUploadState, waitingForALongTime = waitingForALongTime, logoutAction = logoutAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DirectLogoutPresenter.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DirectLogoutPresenter.kt index 1e74aa2bc7..bb4c9802bf 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DirectLogoutPresenter.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DirectLogoutPresenter.kt @@ -47,7 +47,7 @@ class DirectLogoutPresenter( val isLastDevice by encryptionService.isLastDevice.collectAsState() - fun handleEvents(event: DirectLogoutEvents) { + fun handleEvent(event: DirectLogoutEvents) { when (event) { is DirectLogoutEvents.Logout -> { if (logoutAction.value.isConfirming() || event.ignoreSdkError) { @@ -66,7 +66,7 @@ class DirectLogoutPresenter( canDoDirectSignOut = !isLastDevice && !backupUploadState.isBackingUp(), logoutAction = logoutAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index acab975a45..39f9a07faa 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -221,7 +221,7 @@ class MessagesPresenter( onPauseOrDispose {} } - fun handleEvents(event: MessagesEvents) { + fun handleEvent(event: MessagesEvents) { when (event) { is MessagesEvents.HandleAction -> { localCoroutineScope.handleTimelineAction( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt index 370b3853ea..f53d8afed4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt @@ -106,7 +106,7 @@ class DefaultActionListPresenter( val isThreadsEnabled = featureFlagService.isFeatureEnabledFlow(FeatureFlags.Threads).collectAsState(false) - fun handleEvents(event: ActionListEvents) { + fun handleEvent(event: ActionListEvents) { when (event) { ActionListEvents.Clear -> target.value = ActionListState.Target.None is ActionListEvents.ComputeForMessage -> localCoroutineScope.computeForMessage( @@ -122,7 +122,7 @@ class DefaultActionListPresenter( return ActionListState( target = target.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt index 34a4f12fe5..a3662c9e12 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt @@ -141,7 +141,7 @@ class AttachmentsPreviewPresenter( } } - fun handleEvents(attachmentsPreviewEvents: AttachmentsPreviewEvents) { + fun handleEvent(attachmentsPreviewEvents: AttachmentsPreviewEvents) { when (attachmentsPreviewEvents) { is AttachmentsPreviewEvents.SendAttachment -> { ongoingSendAttachmentJob.value = coroutineScope.launch { @@ -230,7 +230,7 @@ class AttachmentsPreviewPresenter( textEditorState = textEditorState, mediaOptimizationSelectorState = mediaOptimizationSelectorState, displayFileTooLargeError = displayFileTooLargeError, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/sendfailure/resolve/ResolveVerifiedUserSendFailurePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/sendfailure/resolve/ResolveVerifiedUserSendFailurePresenter.kt index 54aa26e6ab..f0f8f965cd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/sendfailure/resolve/ResolveVerifiedUserSendFailurePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/crypto/sendfailure/resolve/ResolveVerifiedUserSendFailurePresenter.kt @@ -47,7 +47,7 @@ class ResolveVerifiedUserSendFailurePresenter( } val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: ResolveVerifiedUserSendFailureEvents) { + fun handleEvent(event: ResolveVerifiedUserSendFailureEvents) { when (event) { is ResolveVerifiedUserSendFailureEvents.ComputeForMessage -> { val sendState = event.messageEvent.localSendState as? LocalEventSendState.Failed.VerifiedUser @@ -92,7 +92,7 @@ class ResolveVerifiedUserSendFailurePresenter( verifiedUserSendFailure = verifiedUserSendFailure, resolveAction = resolveAction.value, retryAction = retryAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt index 9c4694bafa..a0aa62da56 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt @@ -24,7 +24,7 @@ class LinkPresenter( override fun present(): LinkState { val linkClick: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvents(linkEvents: LinkEvents) { + fun handleEvent(linkEvents: LinkEvents) { when (linkEvents) { is LinkEvents.OnLinkClick -> { linkClick.value = AsyncAction.Loading @@ -48,7 +48,7 @@ class LinkPresenter( } return LinkState( linkClick = linkClick.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt index f7dd029826..9ab40349cf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt @@ -227,7 +227,7 @@ class MessageComposerPresenter( } } - fun handleEvents(event: MessageComposerEvents) { + fun handleEvent(event: MessageComposerEvents) { when (event) { MessageComposerEvents.ToggleFullScreenState -> isFullScreen.value = !isFullScreen.value MessageComposerEvents.CloseSpecialMode -> { @@ -382,7 +382,7 @@ class MessageComposerPresenter( suggestions = suggestions.toImmutableList(), resolveMentionDisplay = resolveMentionDisplay, resolveAtRoomMentionDisplay = resolveAtRoomMentionDisplay, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt index c0f2cccb6f..193fa10539 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt @@ -70,7 +70,7 @@ class PinnedMessagesBannerPresenter( expectedPinnedMessagesCount = expectedPinnedMessagesCount, pinnedItems = pinnedItems.value, currentPinnedMessageIndex = currentPinnedMessageIndex, - eventSink = ::handleEvent + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt index 764286ce2e..2c9fb05ef7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt @@ -130,7 +130,7 @@ class PinnedMessagesListPresenter( } ) - fun handleEvents(event: PinnedMessagesListEvents) { + fun handleEvent(event: PinnedMessagesListEvents) { when (event) { is PinnedMessagesListEvents.HandleAction -> sessionCoroutineScope.handleTimelineAction(event.action, event.event) } @@ -143,7 +143,7 @@ class PinnedMessagesListPresenter( displayThreadSummaries = displayThreadSummaries, userEventPermissions = userEventPermissions, timelineItems = pinnedMessageItems, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt index 90b6585718..efdb4f3895 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/report/ReportMessagePresenter.kt @@ -53,7 +53,7 @@ class ReportMessagePresenter( var blockUser by rememberSaveable { mutableStateOf(false) } var result: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvents(event: ReportMessageEvents) { + fun handleEvent(event: ReportMessageEvents) { when (event) { is ReportMessageEvents.UpdateReason -> reason = event.reason ReportMessageEvents.ToggleBlockUser -> blockUser = !blockUser @@ -66,7 +66,7 @@ class ReportMessagePresenter( reason = reason, blockUser = blockUser, result = result.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 6f9dab56c8..7607050580 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -140,7 +140,7 @@ class TimelinePresenter( value = featureFlagService.isFeatureEnabled(FeatureFlags.Threads) } - fun handleEvents(event: TimelineEvents) { + fun handleEvent(event: TimelineEvents) { when (event) { is TimelineEvents.LoadMore -> { if (event.direction == Timeline.PaginationDirection.FORWARDS && timelineMode is Timeline.Mode.Thread) { @@ -289,7 +289,7 @@ class TimelinePresenter( messageShield = messageShield.value, resolveVerifiedUserSendFailureState = resolveVerifiedUserSendFailureState, displayThreadSummaries = displayThreadSummaries, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt index bbddbb1066..a3502c8af0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/CustomReactionPresenter.kt @@ -53,7 +53,7 @@ class CustomReactionPresenter( target.value = CustomReactionState.Target.None } - fun handleEvents(event: CustomReactionEvents) { + fun handleEvent(event: CustomReactionEvents) { when (event) { is CustomReactionEvents.ShowCustomReactionSheet -> handleShowCustomReactionSheet(event.event) is CustomReactionEvents.DismissCustomReactionSheet -> handleDismissCustomReactionSheet() @@ -71,7 +71,7 @@ class CustomReactionPresenter( target = target.value, selectedEmoji = selectedEmoji, recentEmojis = recentEmojis, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerPresenter.kt index ce9600b1f7..41a1d9f73c 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPickerPresenter.kt @@ -90,7 +90,7 @@ class EmojiPickerPresenter( } val isInPreview = LocalInspectionMode.current - fun handleEvents(event: EmojiPickerEvents) { + fun handleEvent(event: EmojiPickerEvents) { when (event) { // For some reason, in preview mode the SearchBar emits this event with an `isActive = true` value automatically is EmojiPickerEvents.ToggleSearchActive -> if (!isInPreview) { @@ -106,7 +106,7 @@ class EmojiPickerPresenter( searchQuery = searchQuery, isSearchActive = isSearchActive, searchResults = emojiResults, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt index c3fb43d374..dd6ca16a08 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/reactionsummary/ReactionSummaryPresenter.kt @@ -36,7 +36,7 @@ class ReactionSummaryPresenter( } val targetWithAvatars = populateSenderAvatars(members = membersState.roomMembers().orEmpty().toImmutableList(), summary = target.value) - fun handleEvents(event: ReactionSummaryEvents) { + fun handleEvent(event: ReactionSummaryEvents) { when (event) { is ReactionSummaryEvents.ShowReactionSummary -> target.value = ReactionSummaryState.Summary( reactions = event.reactions.toImmutableList(), @@ -48,7 +48,7 @@ class ReactionSummaryPresenter( } return ReactionSummaryState( target = targetWithAvatars.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt index 5136571acd..6c8c04eb6a 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/create/CreatePollPresenter.kt @@ -96,7 +96,7 @@ class CreatePollPresenter( val scope = rememberCoroutineScope() - fun handleEvents(event: CreatePollEvents) { + fun handleEvent(event: CreatePollEvents) { when (event) { is CreatePollEvents.Save -> scope.launch { if (canSave) { @@ -183,7 +183,7 @@ class CreatePollPresenter( pollKind = poll.pollKind, showBackConfirmation = showBackConfirmation, showDeleteConfirmation = showDeleteConfirmation, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt index 15bc803f51..920b53eb41 100644 --- a/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt +++ b/features/poll/impl/src/main/kotlin/io/element/android/features/poll/impl/history/PollHistoryPresenter.kt @@ -62,7 +62,7 @@ class PollHistoryPresenter( } } val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: PollHistoryEvents) { + fun handleEvent(event: PollHistoryEvents) { when (event) { is PollHistoryEvents.LoadMore -> { coroutineScope.loadMore(timeline) @@ -88,7 +88,7 @@ class PollHistoryPresenter( hasMoreToLoad = paginationState.hasMoreToLoad, pollHistoryItems = pollHistoryItems, activeFilter = activeFilter, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt index 6378b3038d..f7aa29cd70 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsPresenter.kt @@ -82,7 +82,7 @@ class AdvancedSettingsPresenter( }.collect() } - fun handleEvents(event: AdvancedSettingsEvents) { + fun handleEvent(event: AdvancedSettingsEvents) { when (event) { is AdvancedSettingsEvents.SetDeveloperModeEnabled -> sessionCoroutineScope.launch { appPreferencesStore.setDeveloperModeEnabled(event.enabled) @@ -117,7 +117,7 @@ class AdvancedSettingsPresenter( mediaOptimizationState = mediaOptimizationState, theme = themeOption, mediaPreviewConfigState = mediaPreviewConfigState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt index 5fbbe3e797..fb2c56f3fe 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/blockedusers/BlockedUsersPresenter.kt @@ -64,7 +64,7 @@ class BlockedUsersPresenter( } } - fun handleEvents(event: BlockedUsersEvents) { + fun handleEvent(event: BlockedUsersEvents) { when (event) { is BlockedUsersEvents.Unblock -> { pendingUserToUnblock = event.userId @@ -85,7 +85,7 @@ class BlockedUsersPresenter( return BlockedUsersState( blockedUsers = ignoredMatrixUser.toImmutableList(), unblockUserAction = unblockUserAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index 1e68652e5c..618e63ccae 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -112,7 +112,7 @@ class DeveloperSettingsPresenter( computeCacheSize(cacheSize) } - fun handleEvents(event: DeveloperSettingsEvents) { + fun handleEvent(event: DeveloperSettingsEvents) { when (event) { is DeveloperSettingsEvents.UpdateEnabledFeature -> coroutineScope.updateEnabledFeature( enabledFeatures = enabledFeatures, @@ -161,7 +161,7 @@ class DeveloperSettingsPresenter( tracingLogPacks = tracingLogPacks, isEnterpriseBuild = enterpriseService.isEnterpriseBuild, showColorPicker = showColorPicker, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt index 00006d1086..e5d02611a5 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/NotificationSettingsPresenter.kt @@ -129,7 +129,7 @@ class NotificationSettingsPresenter( ) } - fun handleEvents(event: NotificationSettingsEvents) { + fun handleEvent(event: NotificationSettingsEvents) { when (event) { is NotificationSettingsEvents.SetAtRoomNotificationsEnabled -> { localCoroutineScope.setAtRoomNotificationsEnabled(event.enabled, changeNotificationSettingAction) @@ -167,7 +167,7 @@ class NotificationSettingsPresenter( availablePushDistributors = availableDistributors, showChangePushProviderDialog = showChangePushProviderDialog, fullScreenIntentPermissionsState = key(refreshFullScreenIntentSettings) { fullScreenIntentPermissionsPresenter.present() }, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingPresenter.kt index 25b062827f..c246d0c12c 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/notifications/edit/EditDefaultNotificationSettingPresenter.kt @@ -70,7 +70,7 @@ class EditDefaultNotificationSettingPresenter( displayMentionsOnlyDisclaimer = !notificationSettingsService.canHomeServerPushEncryptedEventsToDevice().getOrDefault(true) } - fun handleEvents(event: EditDefaultNotificationSettingStateEvents) { + fun handleEvent(event: EditDefaultNotificationSettingStateEvents) { when (event) { is EditDefaultNotificationSettingStateEvents.SetNotificationMode -> { localCoroutineScope.setDefaultNotificationMode(event.mode, changeNotificationSettingAction) @@ -85,7 +85,7 @@ class EditDefaultNotificationSettingPresenter( roomsWithUserDefinedMode = roomsWithUserDefinedMode.value.toImmutableList(), changeNotificationSettingAction = changeNotificationSettingAction.value, displayMentionsOnlyDisclaimer = displayMentionsOnlyDisclaimer, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt index 3aa9c61555..e72c0a60e3 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/user/editprofile/EditUserProfilePresenter.kt @@ -100,7 +100,7 @@ class EditUserProfilePresenter( val saveAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val localCoroutineScope = rememberCoroutineScope() - fun handleEvents(event: EditUserProfileEvents) { + fun handleEvent(event: EditUserProfileEvents) { when (event) { is EditUserProfileEvents.Save -> localCoroutineScope.saveChanges( name = userDisplayName, @@ -143,7 +143,7 @@ class EditUserProfilePresenter( saveButtonEnabled = canSave && saveAction.value !is AsyncAction.Loading, saveAction = saveAction.value, cameraPermissionState = cameraPermissionState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt index 790ecdd092..1a1a4649b2 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/bugreport/BugReportPresenter.kt @@ -82,7 +82,7 @@ class BugReportPresenter( } val uploadListener = BugReporterUploadListener(sendingProgress, sendingAction) - fun handleEvents(event: BugReportEvents) { + fun handleEvent(event: BugReportEvents) { when (event) { BugReportEvents.SendBugReport -> { if (formState.value.description.length < 10) { @@ -121,7 +121,7 @@ class BugReportPresenter( sending = sendingAction.value, formState = formState.value, screenshotUri = screenshotUri.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt index 09080e5029..aca6d26297 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/crash/DefaultCrashDetectionPresenter.kt @@ -47,7 +47,7 @@ class DefaultCrashDetectionPresenter( } }.collectAsState(false) - fun handleEvents(event: CrashDetectionEvents) { + fun handleEvent(event: CrashDetectionEvents) { when (event) { CrashDetectionEvents.ResetAllCrashData -> localCoroutineScope.resetAll() CrashDetectionEvents.ResetAppHasCrashed -> localCoroutineScope.resetAppHasCrashed() @@ -57,7 +57,7 @@ class DefaultCrashDetectionPresenter( return CrashDetectionState( appName = buildMeta.applicationName, crashDetected = crashDetected, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt index c6b02d2514..3ca14f102d 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/detection/DefaultRageshakeDetectionPresenter.kt @@ -48,7 +48,7 @@ class DefaultRageshakeDetectionPresenter( mutableStateOf(false) } - fun handleEvents(event: RageshakeDetectionEvents) { + fun handleEvent(event: RageshakeDetectionEvents) { when (event) { RageshakeDetectionEvents.Disable -> { preferencesState.eventSink(RageshakePreferencesEvents.SetIsEnabled(false)) @@ -67,7 +67,7 @@ class DefaultRageshakeDetectionPresenter( takeScreenshot = takeScreenshot.value, showDialog = showDialog.value, preferenceState = preferencesState, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt index 00ca57ea0d..1c34e9400a 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/preferences/DefaultRageshakePreferencesPresenter.kt @@ -47,7 +47,7 @@ class DefaultRageshakePreferencesPresenter( rageshakeDataStore.sensitivity() }.collectAsState(initial = 0f) - fun handleEvents(event: RageshakePreferencesEvents) { + fun handleEvent(event: RageshakePreferencesEvents) { when (event) { is RageshakePreferencesEvents.SetIsEnabled -> localCoroutineScope.setIsEnabled(event.isEnabled) is RageshakePreferencesEvents.SetSensitivity -> localCoroutineScope.setSensitivity(event.sensitivity) @@ -59,7 +59,7 @@ class DefaultRageshakePreferencesPresenter( isEnabled = isEnabled, isSupported = isSupported.value, sensitivity = sensitivity, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoomPresenter.kt b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoomPresenter.kt index 42ab1cf08a..8109aa0d8b 100644 --- a/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoomPresenter.kt +++ b/features/reportroom/impl/src/main/kotlin/io/element/android/features/reportroom/impl/ReportRoomPresenter.kt @@ -43,7 +43,7 @@ class ReportRoomPresenter( val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: ReportRoomEvents) { + fun handleEvent(event: ReportRoomEvents) { when (event) { ReportRoomEvents.Report -> coroutineScope.reportRoom(reason, leaveRoom, reportAction) ReportRoomEvents.ToggleLeaveRoom -> { @@ -61,7 +61,7 @@ class ReportRoomPresenter( reason = reason, leaveRoom = leaveRoom, reportAction = reportAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverPresenter.kt b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverPresenter.kt index c8a8d18fbc..8714bf9891 100644 --- a/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverPresenter.kt +++ b/features/roomaliasresolver/impl/src/main/kotlin/io/element/android/features/roomaliasresolver/impl/RoomAliasResolverPresenter.kt @@ -44,7 +44,7 @@ class RoomAliasResolverPresenter( resolveAlias(resolveState) } - fun handleEvents(event: RoomAliasResolverEvents) { + fun handleEvent(event: RoomAliasResolverEvents) { when (event) { RoomAliasResolverEvents.Retry -> coroutineScope.resolveAlias(resolveState) RoomAliasResolverEvents.DismissError -> resolveState.value = AsyncData.Uninitialized @@ -54,7 +54,7 @@ class RoomAliasResolverPresenter( return RoomAliasResolverState( roomAlias = roomAlias, resolveState = resolveState.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } 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 ccb4c48e7e..4c0467cee1 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 @@ -136,7 +136,7 @@ class RoomDetailsPresenter( val snackbarDispatcher = LocalSnackbarDispatcher.current val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState() - fun handleEvents(event: RoomDetailsEvent) { + fun handleEvent(event: RoomDetailsEvent) { when (event) { is RoomDetailsEvent.LeaveRoom -> { leaveRoomState.eventSink(LeaveRoomEvent.LeaveRoom(room.roomId, needsConfirmation = event.needsConfirmation)) @@ -204,7 +204,7 @@ class RoomDetailsPresenter( canReportRoom = canReportRoom, isTombstoned = roomInfo.successorRoom != null, showDebugInfo = isDeveloperModeEnabled, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt index cc207d8b24..fc9fa32be5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditPresenter.kt @@ -140,7 +140,7 @@ class RoomDetailsEditPresenter( val saveAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val localCoroutineScope = rememberCoroutineScope() - fun handleEvents(event: RoomDetailsEditEvents) { + fun handleEvent(event: RoomDetailsEditEvents) { when (event) { is RoomDetailsEditEvents.Save -> localCoroutineScope.saveChanges( currentNameTrimmed = roomRawNameTrimmed, @@ -191,7 +191,7 @@ class RoomDetailsEditPresenter( saveButtonEnabled = saveButtonEnabled, saveAction = saveAction.value, cameraPermissionState = cameraPermissionState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } 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 90619d2e2d..b1cefd2537 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 @@ -159,7 +159,7 @@ class RoomMemberListPresenter( } } - fun handleEvents(event: RoomMemberListEvents) { + fun handleEvent(event: RoomMemberListEvents) { when (event) { is RoomMemberListEvents.OnSearchActiveChanged -> isSearchActive = event.active is RoomMemberListEvents.UpdateSearchQuery -> searchQuery = event.query @@ -179,7 +179,7 @@ class RoomMemberListPresenter( isSearchActive = isSearchActive, canInvite = canInvite, moderationState = roomModerationState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt index 7bfdf9949c..4e5b57e7e5 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/notificationsettings/RoomNotificationSettingsPresenter.kt @@ -99,7 +99,7 @@ class RoomNotificationSettingsPresenter( !notificationSettingsService.canHomeServerPushEncryptedEventsToDevice().getOrDefault(true) } - fun handleEvents(event: RoomNotificationSettingsEvents) { + fun handleEvent(event: RoomNotificationSettingsEvents) { when (event) { is RoomNotificationSettingsEvents.ChangeRoomNotificationMode -> { localCoroutineScope.setRoomNotificationMode(event.mode, pendingRoomNotificationMode, pendingSetDefault, setNotificationSettingAction) @@ -135,7 +135,7 @@ class RoomNotificationSettingsPresenter( setNotificationSettingAction = setNotificationSettingAction.value, restoreDefaultAction = restoreDefaultAction.value, displayMentionsOnlyDisclaimer = shouldDisplayMentionsOnlyDisclaimer, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt index 4ff45bb588..fb552077fe 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt @@ -107,7 +107,7 @@ class SecurityAndPrivacyPresenter( var showEnableEncryptionConfirmation by remember(savedSettings.isEncrypted) { mutableStateOf(false) } val permissions by room.securityAndPrivacyPermissionsAsState(syncUpdateFlow.value) - fun handleEvents(event: SecurityAndPrivacyEvents) { + fun handleEvent(event: SecurityAndPrivacyEvents) { when (event) { SecurityAndPrivacyEvents.Save -> { coroutineScope.save( @@ -158,7 +158,7 @@ class SecurityAndPrivacyPresenter( isKnockEnabled = isKnockEnabled, saveAction = saveAction.value, permissions = permissions, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) // If the history visibility is not available for the current access, use the fallback. diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt index 95aee73c13..badb40e331 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/editroomaddress/EditRoomAddressPresenter.kt @@ -62,7 +62,7 @@ class EditRoomAddressPresenter( ) } - fun handleEvents(event: EditRoomAddressEvents) { + fun handleEvent(event: EditRoomAddressEvents) { when (event) { EditRoomAddressEvents.Save -> coroutineScope.save( saveAction = saveAction, @@ -92,7 +92,7 @@ class EditRoomAddressPresenter( roomAddressValidity = roomAddressValidity.value, roomAddress = newRoomAddress, saveAction = saveAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt index 4696dd4263..77f7203368 100644 --- a/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt +++ b/features/roomdirectory/impl/src/main/kotlin/io/element/android/features/roomdirectory/impl/root/RoomDirectoryPresenter.kt @@ -62,7 +62,7 @@ class RoomDirectoryPresenter( loadingMore = false } } - fun handleEvents(event: RoomDirectoryEvents) { + fun handleEvent(event: RoomDirectoryEvents) { when (event) { RoomDirectoryEvents.LoadMore -> { loadingMore = true @@ -77,7 +77,7 @@ class RoomDirectoryPresenter( query = searchQuery.orEmpty(), roomDescriptions = listState.items, displayLoadMoreIndicator = listState.hasMoreToLoad, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt index aa1de8fde9..54ea35e7f0 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/disable/SecureBackupDisablePresenter.kt @@ -36,7 +36,7 @@ class SecureBackupDisablePresenter( Timber.tag(loggerTagDisable.value).d("backupState: $backupState") val disableAction: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: SecureBackupDisableEvents) { + fun handleEvent(event: SecureBackupDisableEvents) { when (event) { is SecureBackupDisableEvents.DisableBackup -> coroutineScope.disableBackup(disableAction) SecureBackupDisableEvents.DismissDialogs -> { @@ -49,7 +49,7 @@ class SecureBackupDisablePresenter( backupState = backupState, disableAction = disableAction.value, appName = buildMeta.applicationName, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt index b56a4542b0..0bf73a3322 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/enter/SecureBackupEnterRecoveryKeyPresenter.kt @@ -44,7 +44,7 @@ class SecureBackupEnterRecoveryKeyPresenter( mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvents(event: SecureBackupEnterRecoveryKeyEvents) { + fun handleEvent(event: SecureBackupEnterRecoveryKeyEvents) { when (event) { SecureBackupEnterRecoveryKeyEvents.ClearDialog -> { submitAction.value = AsyncAction.Uninitialized @@ -78,7 +78,7 @@ class SecureBackupEnterRecoveryKeyPresenter( ), isSubmitEnabled = recoveryKey.isNotEmpty() && submitAction.value.isUninitialized(), submitAction = submitAction.value, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordPresenter.kt index 26a6ae1fac..648a2cc7f9 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/password/ResetIdentityPasswordPresenter.kt @@ -39,7 +39,7 @@ class ResetIdentityPasswordPresenter( return ResetIdentityPasswordState( resetAction = resetAction.value, - eventSink = ::handleEvent + eventSink = ::handleEvent, ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootPresenter.kt index 909cdc1379..6b357cec8d 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/root/ResetIdentityRootPresenter.kt @@ -28,7 +28,7 @@ class ResetIdentityRootPresenter : Presenter { return ResetIdentityRootState( displayConfirmationDialog = displayConfirmDialog, - eventSink = ::handleEvent + eventSink = ::handleEvent, ) } } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt index 67ec1c9960..7ecd056e4f 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/root/SecureBackupRootPresenter.kt @@ -58,7 +58,7 @@ class SecureBackupRootPresenter( } } - fun handleEvents(event: SecureBackupRootEvents) { + fun handleEvent(event: SecureBackupRootEvents) { when (event) { SecureBackupRootEvents.RetryKeyBackupState -> localCoroutineScope.getKeyBackupStatus(doesBackupExistOnServerAction) SecureBackupRootEvents.EnableKeyStorage -> localCoroutineScope.enableBackup(enableAction) @@ -78,7 +78,7 @@ class SecureBackupRootPresenter( appName = buildMeta.applicationName, displayKeyStorageDisabledError = displayKeyStorageDisabledError, snackbarMessage = snackbarMessage, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt index 58a6c4b43c..a9b60c23a2 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/setup/SecureBackupSetupPresenter.kt @@ -52,7 +52,7 @@ class SecureBackupSetupPresenter( } var showSaveConfirmationDialog by remember { mutableStateOf(false) } - fun handleEvents(event: SecureBackupSetupEvents) { + fun handleEvent(event: SecureBackupSetupEvents) { when (event) { SecureBackupSetupEvents.CreateRecoveryKey -> { coroutineScope.createOrChangeRecoveryKey(stateAndDispatch) @@ -81,7 +81,7 @@ class SecureBackupSetupPresenter( recoveryKeyViewState = recoveryKeyViewState, setupState = setupState, showSaveConfirmationDialog = showSaveConfirmationDialog, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt index f5ce67498e..6d7011c4a7 100644 --- a/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt +++ b/features/share/impl/src/main/kotlin/io/element/android/features/share/impl/SharePresenter.kt @@ -55,7 +55,7 @@ class SharePresenter( @Composable override fun present(): ShareState { - fun handleEvents(event: ShareEvents) { + fun handleEvent(event: ShareEvents) { when (event) { ShareEvents.ClearError -> shareActionState.value = AsyncAction.Uninitialized } @@ -63,7 +63,7 @@ class SharePresenter( return ShareState( shareAction = shareActionState.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt index 7c9d1e6d83..ee7ad1831e 100644 --- a/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt +++ b/features/signedout/impl/src/main/kotlin/io/element/android/features/signedout/impl/SignedOutPresenter.kt @@ -42,7 +42,7 @@ class SignedOutPresenter( }.collectAsState(initial = null) val coroutineScope = rememberCoroutineScope() - fun handleEvents(event: SignedOutEvents) { + fun handleEvent(event: SignedOutEvents) { when (event) { SignedOutEvents.SignInAgain -> coroutineScope.launch { sessionStore.removeSession(sessionId.value) @@ -53,7 +53,7 @@ class SignedOutPresenter( return SignedOutState( appName = buildMeta.applicationName, signedOutSession = signedOutSession, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt index 19e593bf7c..1433e17e92 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt @@ -97,7 +97,7 @@ class LeaveSpacePresenter( } } - fun handleEvents(event: LeaveSpaceEvents) { + fun handleEvent(event: LeaveSpaceEvents) { when (event) { LeaveSpaceEvents.Retry -> { leaveSpaceRooms = AsyncData.Loading() @@ -134,7 +134,7 @@ class LeaveSpacePresenter( isLastAdmin = leaveSpaceRooms.dataOrNull()?.current?.isLastAdmin == true, selectableSpaceRooms = selectableSpaceRooms, leaveSpaceAction = leaveSpaceAction.value, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt index 58f5c8f5fb..a8b8e3a080 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt @@ -93,7 +93,7 @@ class SpacePresenter( val acceptDeclineInviteState = acceptDeclineInvitePresenter.present() - fun handleEvents(event: SpaceEvents) { + fun handleEvent(event: SpaceEvents) { when (event) { SpaceEvents.LoadMore -> localCoroutineScope.paginate() is SpaceEvents.Join -> { @@ -128,7 +128,7 @@ class SpacePresenter( joinActions = joinActions.toImmutableMap(), acceptDeclineInviteState = acceptDeclineInviteState, topicViewerState = topicViewerState, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt index 350a59de73..5acb0629f7 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/joinbyaddress/JoinRoomByAddressPresenter.kt @@ -48,7 +48,7 @@ class JoinRoomByAddressPresenter( var internalAddressState by remember { mutableStateOf(RoomAddressState.Unknown) } var validateAddress: Boolean by remember { mutableStateOf(false) } - fun handleEvents(event: JoinRoomByAddressEvents) { + fun handleEvent(event: JoinRoomByAddressEvents) { when (event) { JoinRoomByAddressEvents.Continue -> { when (val currentState = internalAddressState) { @@ -88,7 +88,7 @@ class JoinRoomByAddressPresenter( return JoinRoomByAddressState( address = address, addressState = addressState, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatPresenter.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatPresenter.kt index 10a9745f32..c683125caf 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatPresenter.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/root/StartChatPresenter.kt @@ -57,7 +57,7 @@ class StartChatPresenter( featureFlagService.isFeatureEnabledFlow(FeatureFlags.RoomDirectorySearch) }.collectAsState(initial = false) - fun handleEvents(event: StartChatEvents) { + fun handleEvent(event: StartChatEvents) { when (event) { is StartChatEvents.StartDM -> localCoroutineScope.launch { startDMAction.execute( @@ -75,7 +75,7 @@ class StartChatPresenter( userListState = userListState, startDmAction = startDmActionState.value, isRoomDirectorySearchEnabled = isRoomDirectorySearchEnabled, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt index 3f226d0213..9efff65d9d 100644 --- a/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt +++ b/features/userprofile/impl/src/main/kotlin/io/element/android/features/userprofile/impl/root/UserProfilePresenter.kt @@ -99,7 +99,7 @@ class UserProfilePresenter( } val userProfile by produceState(null) { value = client.getProfile(userId).getOrNull() } - fun handleEvents(event: UserProfileEvents) { + fun handleEvent(event: UserProfileEvents) { when (event) { is UserProfileEvents.BlockUser -> { if (event.needsConfirmation) { @@ -151,7 +151,7 @@ class UserProfilePresenter( dmRoomId = dmRoomId, canCall = canCall, snackbarMessage = null, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationPresenter.kt index 176176a895..38918314f6 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/incoming/IncomingVerificationPresenter.kt @@ -107,7 +107,7 @@ class IncomingVerificationPresenter( } } - fun handleEvents(event: IncomingVerificationViewEvents) { + fun handleEvent(event: IncomingVerificationViewEvents) { Timber.d("Verification user action: ${event::class.simpleName}") when (event) { IncomingVerificationViewEvents.StartVerification -> @@ -141,7 +141,7 @@ class IncomingVerificationPresenter( return IncomingVerificationState( step = step, request = verificationRequest, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt index c985c15e36..9b3906606b 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/outgoing/OutgoingVerificationPresenter.kt @@ -92,7 +92,7 @@ class OutgoingVerificationPresenter( observeVerificationService() } - fun handleEvents(event: OutgoingVerificationViewEvents) { + fun handleEvent(event: OutgoingVerificationViewEvents) { Timber.d("Verification user action: ${event::class.simpleName}") when (event) { // Just relay the event to the state machine @@ -109,7 +109,7 @@ class OutgoingVerificationPresenter( return OutgoingVerificationState( step = step, request = verificationRequest, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt b/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt index b05aad303c..be483b0683 100644 --- a/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt +++ b/libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt @@ -63,7 +63,7 @@ class FullScreenIntentPermissionsPresenter( val isGranted = notificationManagerCompat.canUseFullScreenIntent() val isBannerDismissed by isFullScreenIntentBannerDismissed.collectAsState(initial = true) - fun handleEvents(event: FullScreenIntentPermissionsEvents) { + fun handleEvent(event: FullScreenIntentPermissionsEvents) { when (event) { FullScreenIntentPermissionsEvents.Dismiss -> coroutineScope.launch { dismissFullScreenIntentBanner() @@ -75,7 +75,7 @@ class FullScreenIntentPermissionsPresenter( return FullScreenIntentPermissionsState( permissionGranted = isGranted, shouldDisplayBanner = !isBannerDismissed && !isGranted, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt index 3f8a31cc26..955acfe7ec 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryPresenter.kt @@ -82,7 +82,7 @@ class MediaGalleryPresenter( val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState() localMediaActions.Configure() - fun handleEvents(event: MediaGalleryEvents) { + fun handleEvent(event: MediaGalleryEvents) { when (event) { is MediaGalleryEvents.ChangeMode -> { mode = event.mode @@ -150,7 +150,7 @@ class MediaGalleryPresenter( groupedMediaItems = groupedMediaItems, mediaBottomSheetState = mediaBottomSheetState, snackbarMessage = snackbarMessage, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt index a04a1a370a..ea560a0b6a 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerPresenter.kt @@ -90,7 +90,7 @@ class MediaViewerPresenter( } localMediaActions.Configure() - fun handleEvents(event: MediaViewerEvents) { + fun handleEvent(event: MediaViewerEvents) { when (event) { is MediaViewerEvents.LoadMedia -> { coroutineScope.downloadMedia(data = event.data) @@ -163,7 +163,7 @@ class MediaViewerPresenter( snackbarMessage = snackbarMessage, canShowInfo = inputs.canShowInfo, mediaBottomSheetState = mediaBottomSheetState, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } diff --git a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt index c6bfbd73ed..e157aa56f5 100644 --- a/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt +++ b/libraries/permissions/impl/src/main/kotlin/io/element/android/libraries/permissions/impl/DefaultPermissionsPresenter.kt @@ -99,7 +99,7 @@ class DefaultPermissionsPresenter( val showDialog = rememberSaveable { mutableStateOf(false) } - fun handleEvents(event: PermissionsEvents) { + fun handleEvent(event: PermissionsEvents) { when (event) { PermissionsEvents.CloseDialog -> { showDialog.value = false @@ -125,7 +125,7 @@ class DefaultPermissionsPresenter( showDialog = showDialog.value, permissionAlreadyAsked = isAlreadyAsked, permissionAlreadyDenied = isAlreadyDenied, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimizationPresenter.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimizationPresenter.kt index 3c876ece1d..6bff2092e0 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimizationPresenter.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/battery/BatteryOptimizationPresenter.kt @@ -47,7 +47,7 @@ class BatteryOptimizationPresenter( onPauseOrDispose {} } - fun handleEvents(event: BatteryOptimizationEvents) { + fun handleEvent(event: BatteryOptimizationEvents) { when (event) { BatteryOptimizationEvents.Dismiss -> coroutineScope.launch { mutableBatteryOptimizationStore.onOptimizationBannerDismissed() @@ -66,7 +66,7 @@ class BatteryOptimizationPresenter( return BatteryOptimizationState( shouldDisplayBanner = localShouldDisplayBanner && storeShouldDisplayBanner && !isSystemIgnoringBatteryOptimizations, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt index 841b955018..b6546784ea 100644 --- a/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt +++ b/libraries/roomselect/impl/src/main/kotlin/io/element/android/libraries/roomselect/impl/RoomSelectPresenter.kt @@ -63,7 +63,7 @@ class RoomSelectPresenter( } } - fun handleEvents(event: RoomSelectEvents) { + fun handleEvent(event: RoomSelectEvents) { when (event) { is RoomSelectEvents.SetSelectedRoom -> { selectedRooms = persistentListOf(event.room) @@ -87,7 +87,7 @@ class RoomSelectPresenter( query = searchQuery, isSearchActive = isSearchActive, selectedRooms = selectedRooms, - eventSink = ::handleEvents, + eventSink = ::handleEvent, ) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenter.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenter.kt index 07840b023c..d410d85973 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenter.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/TroubleshootNotificationsPresenter.kt @@ -37,7 +37,7 @@ class TroubleshootNotificationsPresenter( } val testSuiteState by troubleshootTestSuite.state.collectAsState() - fun handleEvents(event: TroubleshootNotificationsEvents) { + fun handleEvent(event: TroubleshootNotificationsEvents) { when (event) { TroubleshootNotificationsEvents.StartTests -> coroutineScope.launch { troubleshootTestSuite.runTestSuite(this) @@ -57,7 +57,7 @@ class TroubleshootNotificationsPresenter( return TroubleshootNotificationsState( testSuiteState = testSuiteState, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } diff --git a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenter.kt b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenter.kt index b98fcee970..db2885e2d5 100644 --- a/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenter.kt +++ b/libraries/troubleshoot/impl/src/main/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenter.kt @@ -61,7 +61,7 @@ class PushHistoryPresenter( var resetAction: AsyncAction by remember { mutableStateOf(AsyncAction.Uninitialized) } var showNotSameAccountError by remember { mutableStateOf(false) } - fun handleEvents(event: PushHistoryEvents) { + fun handleEvent(event: PushHistoryEvents) { when (event) { is PushHistoryEvents.SetShowOnlyErrors -> { showOnlyErrors = event.showOnlyErrors @@ -97,7 +97,7 @@ class PushHistoryPresenter( showOnlyErrors = showOnlyErrors, resetAction = resetAction, showNotSameAccountError = showNotSameAccountError, - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } From e0f0dbec969da67e99bfce113bdea6b5c2403416 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:22:30 +0100 Subject: [PATCH 386/898] Rename eventHandler to handleEvent --- .../choosemode/ChooseSelfVerificationModePresenter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt index 32419a0a59..70b1076c7f 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/sessionverification/choosemode/ChooseSelfVerificationModePresenter.kt @@ -59,7 +59,7 @@ class ChooseSelfVerificationModePresenter( val directLogoutState = directLogoutPresenter.present() - fun eventHandler(event: ChooseSelfVerificationModeEvent) { + fun handleEvent(event: ChooseSelfVerificationModeEvent) { when (event) { ChooseSelfVerificationModeEvent.SignOut -> directLogoutState.eventSink(DirectLogoutEvents.Logout(ignoreSdkError = false)) } @@ -68,7 +68,7 @@ class ChooseSelfVerificationModePresenter( return ChooseSelfVerificationModeState( buttonsState = buttonsState, directLogoutState = directLogoutState, - eventSink = ::eventHandler, + eventSink = ::handleEvent, ) } } From 34a986d8f2d5832ce8362e332d8f3bc7a14e25ec Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:23:02 +0100 Subject: [PATCH 387/898] Rename eventSink to handleEvent --- .../impl/members/details/RoomMemberDetailsPresenter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt index d5cf9e85cb..75cd9c0583 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt @@ -111,7 +111,7 @@ class RoomMemberDetailsPresenter( } } - fun eventSink(event: UserProfileEvents) { + fun handleEvent(event: UserProfileEvents) { when (event) { UserProfileEvents.WithdrawVerification -> coroutineScope.launch { encryptionService.withdrawVerification(roomMemberId) @@ -129,7 +129,7 @@ class RoomMemberDetailsPresenter( avatarUrl = roomUserAvatar ?: userProfileState.avatarUrl, verificationState = verificationState, snackbarMessage = snackbarMessage, - eventSink = ::eventSink + eventSink = ::handleEvent, ) } } From 93b80d71590fdf1054a7c5b0adb59aa25def7d0d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:23:46 +0100 Subject: [PATCH 388/898] Rename eventSink to handleEvent --- .../libraries/permissions/test/FakePermissionsPresenter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt index 2aa1d103db..cbc1caa525 100644 --- a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt +++ b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt @@ -17,7 +17,7 @@ import io.element.android.libraries.permissions.api.aPermissionsState class FakePermissionsPresenter( private val initialState: PermissionsState = aPermissionsState(showDialog = false), ) : PermissionsPresenter { - private fun eventSink(events: PermissionsEvents) { + private fun handleEvent(events: PermissionsEvents) { when (events) { PermissionsEvents.RequestPermissions -> state.value = state.value.copy(showDialog = true, permissionAlreadyAsked = true) PermissionsEvents.CloseDialog -> state.value = state.value.copy(showDialog = false) @@ -25,7 +25,7 @@ class FakePermissionsPresenter( } } - private val state = mutableStateOf(initialState.copy(eventSink = ::eventSink)) + private val state = mutableStateOf(initialState.copy(eventSink = ::handleEvent)) fun setPermissionGranted() { state.value = state.value.copy(permissionGranted = true) From 21ba602073618d9d450e71c02be5a475e89228a3 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:25:15 +0100 Subject: [PATCH 389/898] Introduce fun handleEvent for code consistency --- .../impl/userlist/DefaultUserListPresenter.kt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/DefaultUserListPresenter.kt b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/DefaultUserListPresenter.kt index 38d15f6de3..d1d15cbafd 100644 --- a/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/DefaultUserListPresenter.kt +++ b/features/startchat/impl/src/main/kotlin/io/element/android/features/startchat/impl/userlist/DefaultUserListPresenter.kt @@ -75,6 +75,15 @@ class DefaultUserListPresenter( }.launchIn(this) } + fun handleEvent(event: UserListEvents) { + when (event) { + is UserListEvents.OnSearchActiveChanged -> isSearchActive = event.active + is UserListEvents.UpdateSearchQuery -> searchQuery = event.query + is UserListEvents.AddToSelection -> userListDataStore.selectUser(event.matrixUser) + is UserListEvents.RemoveFromSelection -> userListDataStore.removeUserFromSelection(event.matrixUser) + } + } + return UserListState( searchQuery = searchQuery, searchResults = searchResults, @@ -83,14 +92,7 @@ class DefaultUserListPresenter( showSearchLoader = showSearchLoader, selectionMode = args.selectionMode, recentDirectRooms = recentDirectRooms.toImmutableList(), - eventSink = { event -> - when (event) { - is UserListEvents.OnSearchActiveChanged -> isSearchActive = event.active - is UserListEvents.UpdateSearchQuery -> searchQuery = event.query - is UserListEvents.AddToSelection -> userListDataStore.selectUser(event.matrixUser) - is UserListEvents.RemoveFromSelection -> userListDataStore.removeUserFromSelection(event.matrixUser) - } - }, + eventSink = ::handleEvent, ) } } From 81aebba8cb216db1c21d13bdf70b377d50ed69fb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:28:16 +0100 Subject: [PATCH 390/898] Rename parameter to event for code consistency --- .../impl/list/DependencyLicensesListPresenter.kt | 6 +++--- .../attachments/preview/AttachmentsPreviewPresenter.kt | 4 ++-- .../features/messages/impl/link/LinkPresenter.kt | 10 +++++----- .../permissions/test/FakePermissionsPresenter.kt | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListPresenter.kt b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListPresenter.kt index 0af5d1cc47..65c44fc4c3 100644 --- a/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListPresenter.kt +++ b/features/licenses/impl/src/main/kotlin/io/element/android/features/licenses/impl/list/DependencyLicensesListPresenter.kt @@ -56,10 +56,10 @@ class DependencyLicensesListPresenter( } } - fun handleEvent(dependencyLicensesListEvent: DependencyLicensesListEvent) { - when (dependencyLicensesListEvent) { + fun handleEvent(event: DependencyLicensesListEvent) { + when (event) { is DependencyLicensesListEvent.SetFilter -> { - filter = dependencyLicensesListEvent.filter + filter = event.filter } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt index a3662c9e12..bb4f624793 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt @@ -141,8 +141,8 @@ class AttachmentsPreviewPresenter( } } - fun handleEvent(attachmentsPreviewEvents: AttachmentsPreviewEvents) { - when (attachmentsPreviewEvents) { + fun handleEvent(event: AttachmentsPreviewEvents) { + when (event) { is AttachmentsPreviewEvents.SendAttachment -> { ongoingSendAttachmentJob.value = coroutineScope.launch { // If the media optimization selector is displayed, we need to wait for the user to select the options diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt index a0aa62da56..1f187a9b18 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/link/LinkPresenter.kt @@ -24,16 +24,16 @@ class LinkPresenter( override fun present(): LinkState { val linkClick: MutableState> = remember { mutableStateOf(AsyncAction.Uninitialized) } - fun handleEvent(linkEvents: LinkEvents) { - when (linkEvents) { + fun handleEvent(event: LinkEvents) { + when (event) { is LinkEvents.OnLinkClick -> { linkClick.value = AsyncAction.Loading - val result = linkChecker.isSafe(linkEvents.link) + val result = linkChecker.isSafe(event.link) if (result) { - linkClick.value = AsyncAction.Success(linkEvents.link) + linkClick.value = AsyncAction.Success(event.link) } else { // Confirm first - linkClick.value = ConfirmingLinkClick(linkEvents.link) + linkClick.value = ConfirmingLinkClick(event.link) } } LinkEvents.Confirm -> { diff --git a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt index cbc1caa525..d960ddeb46 100644 --- a/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt +++ b/libraries/permissions/test/src/main/kotlin/io/element/android/libraries/permissions/test/FakePermissionsPresenter.kt @@ -17,8 +17,8 @@ import io.element.android.libraries.permissions.api.aPermissionsState class FakePermissionsPresenter( private val initialState: PermissionsState = aPermissionsState(showDialog = false), ) : PermissionsPresenter { - private fun handleEvent(events: PermissionsEvents) { - when (events) { + private fun handleEvent(event: PermissionsEvents) { + when (event) { PermissionsEvents.RequestPermissions -> state.value = state.value.copy(showDialog = true, permissionAlreadyAsked = true) PermissionsEvents.CloseDialog -> state.value = state.value.copy(showDialog = false) PermissionsEvents.OpenSystemSettingAndCloseDialog -> state.value = state.value.copy(showDialog = false) From 4e25a568ac785ddf1ee829bedfe51d3e84912f1c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:44:21 +0100 Subject: [PATCH 391/898] Update the template. --- .../files/fileTemplates/Template Presentation Classes.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt index 91ec2165f7..33eb8f6974 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt @@ -10,14 +10,14 @@ class ${NAME}Presenter() : Presenter<${NAME}State> { @Composable override fun present(): ${NAME}State { - fun handleEvents(event: ${NAME}Events) { + fun handleEvent(event: ${NAME}Events) { when (event) { ${NAME}Events.MyEvent -> Unit } } return ${NAME}State( - eventSink = ::handleEvents + eventSink = ::handleEvent, ) } } From 119053aad1ee6de9a1377d31bdcc2b2593a6b4d7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 12:51:35 +0100 Subject: [PATCH 392/898] Improve error displayed when the Unconsumed Event cannot be displayed. --- .../android/tests/testutils/PresenterTest.kt | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/PresenterTest.kt b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/PresenterTest.kt index c5acc9d510..2967e4bb67 100644 --- a/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/PresenterTest.kt +++ b/tests/testutils/src/main/kotlin/io/element/android/tests/testutils/PresenterTest.kt @@ -12,6 +12,7 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.TurbineTestContext import app.cash.turbine.test import io.element.android.libraries.architecture.Presenter +import org.junit.Assert.fail import kotlin.time.Duration suspend fun Presenter.test( @@ -19,7 +20,20 @@ suspend fun Presenter.test( name: String? = null, validate: suspend TurbineTestContext.() -> Unit, ) { - moleculeFlow(RecompositionMode.Immediate) { - present() - }.test(timeout, name, validate) + try { + moleculeFlow(RecompositionMode.Immediate) { + present() + }.test(timeout, name, validate) + } catch (t: Throwable) { + if (t::class.simpleName == "KotlinReflectionInternalError") { + // Give a more explicit error to the developer + fail(""" + It looks like you have an unconsumed event in your test. + If you get this error, it means that your test is missing to consume one of several events. + You can fix by consuming and check the event with `awaitItem()`, or you can also invoke + `cancelAndIgnoreRemainingEvents()`. + """.trimIndent()) + } + throw t + } } From cffd4c31c9578ad1cd352f16634cba9043b5d4d6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 13:35:23 +0100 Subject: [PATCH 393/898] Fix compilation issue --- .../android/features/messages/impl/MessagesPresenter.kt | 5 +++-- .../preferences/impl/developer/DeveloperSettingsPresenter.kt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index 39f9a07faa..ba385415c0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -291,8 +291,9 @@ class MessagesPresenter( pinnedMessagesBannerState = pinnedMessagesBannerState, dmUserVerificationState = dmUserVerificationState, roomMemberModerationState = roomMemberModerationState, - successorRoom = roomInfo.successorRoom - ) { handleEvents(it) } + successorRoom = roomInfo.successorRoom, + eventSink = ::handleEvent, + ) } @Composable diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index 618e63ccae..169b937049 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -118,7 +118,7 @@ class DeveloperSettingsPresenter( enabledFeatures = enabledFeatures, featureKey = event.feature.key, enabled = event.isEnabled, - triggerClearCache = { handleEvents(DeveloperSettingsEvents.ClearCache) } + triggerClearCache = { handleEvent(DeveloperSettingsEvents.ClearCache) } ) is DeveloperSettingsEvents.SetCustomElementCallBaseUrl -> coroutineScope.launch { val urlToSave = event.baseUrl.takeIf { !it.isNullOrEmpty() } From b37979d003a025639addb64d5ceb6bc3f70851fb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 7 Nov 2025 13:39:56 +0100 Subject: [PATCH 394/898] Update the template to use the singular form for Event interface. --- .../files/fileTemplates/Template Presentation Classes.kt | 4 ++-- .../fileTemplates/Template Presentation Classes.kt.child.3.kt | 2 +- .../fileTemplates/Template Presentation Classes.kt.child.4.kt | 4 ++-- tools/templates/files/options/file.template.settings.xml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt index 33eb8f6974..a527a37b57 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt @@ -10,9 +10,9 @@ class ${NAME}Presenter() : Presenter<${NAME}State> { @Composable override fun present(): ${NAME}State { - fun handleEvent(event: ${NAME}Events) { + fun handleEvent(event: ${NAME}Event) { when (event) { - ${NAME}Events.MyEvent -> Unit + ${NAME}Event.MyEvent -> Unit } } diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt index d8b57da6b6..f182b62d96 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.3.kt @@ -2,5 +2,5 @@ // TODO add your ui models. Remove the eventSink if you don't have events. data class ${NAME}State( - val eventSink: (${NAME}Events) -> Unit + val eventSink: (${NAME}Event) -> Unit ) diff --git a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.4.kt b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.4.kt index 4b47069304..8ef5400fd9 100644 --- a/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.4.kt +++ b/tools/templates/files/fileTemplates/Template Presentation Classes.kt.child.4.kt @@ -1,6 +1,6 @@ #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end // TODO Add your events or remove the file completely if no events -sealed interface ${NAME}Events { - data object MyEvent: ${NAME}Events +sealed interface ${NAME}Event { + data object MyEvent: ${NAME}Event } diff --git a/tools/templates/files/options/file.template.settings.xml b/tools/templates/files/options/file.template.settings.xml index c7d26d1fb7..a284c63140 100644 --- a/tools/templates/files/options/file.template.settings.xml +++ b/tools/templates/files/options/file.template.settings.xml @@ -6,13 +6,13 @@